๋ถ์(Export)!
์์ ๋ก HelloWorld.exe๋ฅผ ๋ถ์ํด๋ณด๋ ์ค์ต์ ํด๋ด
์๋ค.
์์ ์ 1์ด๋ฅผ ๋๊ธฐ ํ Hello, world!๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ์ค๋ฅธ์ชฝ์์ ๋ด๋ ค๋ฐ์ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ด ์ง์ ์ปดํ์ผํ๊ณ ๋ถ์ํ ์ ์๊ฒ ์ฝ๋๋ ์น์ ํ ์ฌ๋ ค์ผ์ฃ
์ฐ๋ฆฌ๋ ์ด ์ฝ๋์ ๋ํ์ฌ ์๋ฌด๊ฒ๋ ๋ชจ๋ฅธ๋จ ์ ์ฌํ์ ์งํํด์ผ ๋ฆฌ๋ฒ์ฑ์ด๊ฒ ์ฃ
์ ๊ทธ๋ผ ํ๋ฒ ๋ฐ์ exe ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ๊ฑฐ๋ ์ปดํ์ผ ํ์
์ ํ์ธํด๋ด
์๋ค ์ฐธ๊ณ ๋ก ์ IDA ์ธ๊ฑฐ์์
/*
File: hello-world.cpp
Build opts:
- /MT -> Library Static Linking
- /DYNAMICBASE:NO -> Disable ASLR
- /od -> Disable Optimization
*/
#include <Windows.h>
#include <stdio.h>
char* str;
int main() {
int delay = 1000;
Sleep(delay); // 1000ms(1์ด)๋ฅผ ๋๊ธฐํฉ๋๋ค.
str = (char*)"Hello, world!\n";
printf(str);
return 0;
}
- HelloWorld ์ ์ ๋ถ์
- HelloWorld ๋์ ๋ถ์
์์ธํ ์ฌ์ฉ๋ฒ์ ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ ์ต๊ฐํด์ ๋ฐ๋ก ์์ค๊ฑฐ๋๊น ์ด๋ฏธ์ง๋ก ๋์ฒด ํ๋๋ก ํ์ฃ
์ ์ ๋ถ์
์ ์ ๋ถ์์ ์ฃผ๋ก mainํจ์๋ฅผ ์ฐพ๊ณ , ์ด๋ฅผ ๋ถ์ํ๋ฉฐ ์์๋ฉ๋๋ค.
์ด ์์ ์ IDA๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ์ฐพ์์ฃผ์ง๋ง ์ต์ํด์ง๊ฒธ ๋์ ์์ด ์ฐพ์๋ณด์์ผ๊ฒ ์ฃ
๋ฐ์ด๋๋ฆฌ์์ ์ด๋ค ํจ์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
ํ๋๋ ํ๋ก๊ทธ๋จ์ ์์ ์ง์ ์ธ ์ง์
์ (Entry Point;EP)๋ถํฐ ๋ถ์์ ์์ํด ํ์ํ๋ ๊ฒ์ด๊ณ ,
๋ค๋ฅธ ํ๋๋ ๋์ ํจ์์ ํน์ฑ์ด๋ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ์ธ์ ์ธ ์ ๋ณด๋ฅผ ์ด์ฉํด ํ์ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ ์๋ ๋ฐ์ด๋๋ฆฌ์ ๊ท๋ชจ๊ฐ ์ข๋ง ์ปค์ ธ๋ ๋ถ์์ ์์๋๋ ์๊ฐ์ด ๊ธ์ฆํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉ์ด ์ด๋ ต์ฃ
๊ทธ๋์ ์ฌ๊ธด ํ์์ ๋ฐฉ์์ผ๋ก main ํจ์๋ฅผ ํ์ํด๋ณด์์
์ง์ ์ ๋ถํฐ mainํจ์๊น์ง ๋๋ฌํ๋ ๊ฒฝ๋ก๋ฅผ ์ ์ ์ผ๋ก ๋ถ์ํด๋ณด๋ ๊ฒ๋ ์ข์ ๋ถ์ ๊ฒฝํ!!
๋ฌธ์์ด ๊ฒ์๐
ํ๋ก๊ทธ๋จ์ ์ ์ ๋ถ์ํ ๋, ๋ง์ด ์ฌ์ฉ๋๋ ์ ๋ณด ์ค ํ๋๊ฐ ํ๋ก๊ทธ๋จ์ ํฌํจ๋ ๋ฌธ์์ด์ ๋๋ค.
ํ๋ก๊ทธ๋๋จธ๋ ๋๋ฒ๊น
๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๊ฑฐ๋, ๋ก๊ทธ ํ์ผ์ ์์ฑํ๋ ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ฌ๋ฌ ๋ฌธ์์ด์ ํฌํจ์ํค๋๋ฐ, ์ด ๋ฌธ์์ด๋ค์ ํน์ฑ์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ๋๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ํ๋ก๊ทธ๋จ์ ๋ก๊ทธ์ ๊ด๋ จ๋ ๋ฌธ์์ด์ ๋ก๊ทธ๋ฅผ ์์ฑํ๋ ํจ์์ ์ด๋ฆ๊ณผ ์ธ์๊ฐ ์ ํ ์๊ธฐ๋ ํฉ๋๋ค. ์ด ๋ฌธ์์ด์ด ์ด๋ ํจ์์์ ์ฌ์ฉ๋๋์ง ์ฐพ๋๋ค๋ฉด, ์ํ๋ ํจ์๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์๋ ์๊ณ , ํจ์์ ์ด๋ฆ๊ณผ ์ธ์๋ฅผ ํตํด ๊ธฐ๋ฅ์ ์ ์ถํ ์๋ ์์ ๊ฑฐ์์.
IDA๋ ๋ฐ์ด๋๋ฆฌ์ ํฌํจ๋ ๋ฌธ์์ด์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก "๋ฌธ์์ด ํ์" ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์๋์ ์ด๋ฏธ์ง๋ฅผ ์ฐจ๋ก๋๋ก ์ค๋ช
ํ์๋ฉด
- Shift + F12๋ฅผ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ด๋๋ฆฌ์ ํฌํจ๋ ๋ฌธ์์ด์ด ์ด๊ฑฐ๋ Strings ์ฐฝ์ด ๋ธ
- ๋ฌธ์์ด ์ค 'Hello, world!' ๋ผ๋ ๋ฌธ์์ด์ด ์์ต๋๋ค.
- ์ปดํ์ผ ๊ณผ์ ์์ ๋ค์ํ ๋ฌธ์์ด์ด ๋ฐ์ด๋๋ฆฌ์ ์ถ๊ฐ๋๋ ์ด ๋ฌธ์์ด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฃ์ ๊ฒ์ผ๋ก ์ถ์ธก ๊ฐ๋ฅ - ์ด ๋ฌธ์์ด์ ๋๋ธ ํด๋ฆญ(or Curl+P)ํด ๋ฐ๋ผ๊ฐ์๋ค.
์ํฉ ์ฐธ์กฐ๐
์ ์ ๋ถ์์ ํ๋ค๊ฐ ์ฌ๋ฌ ์ด์ (Ex. ์์ํ ๊ฐ์ด๋ ํจ์๋ฅผ ์ฐพ์ ๋)๋ก ์ฐธ์กฐํ ํจ์๋ฅผ ๋ถ์ํ ๋,
๋ง์ ์ ์ ๋ถ์ ๋๊ตฌ๋ค์ ์ํฉ ์ฐธ์กฐ(Cross Reference; XRef)๋ผ๋ ๊ธฐ๋ฅ์ ํตํด ์ด๋ฅผ ์ง์ํฉ๋๋ค.
๊ทธ๋ผ ์์์ ์ฐพ์ "Hello, world!\n"๋ผ๋ ์์ํ ๋ฌธ์์ด์ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ์๋ค
"aHelloWorld"๋ฅผ ํด๋ฆญํ๊ณ ์ํธ ์ฐธ์กฐ์ ๋จ์ถํค X๋ฅผ ๋๋ฅด๋ฉด ์ ์ด๋ฏธ์ง์ฒ๋ผ xrefs ์ฐฝ์ด ๋น๋๋ค.
์ด ์ฐฝ์๋ ํด๋น ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ๋ชจ๋ ์ฃผ์๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
์ฒซ๋ฒ์งธ ํญ๋ชฉ์ ํด๋ฆญํด ์ด๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด.. ์ ๋ sub_..+16์ด๋ผ๊ณ ๋จ๋๋ฐ..
dreamhack์์ main์ผ๋ก ๋จ๋ ๊ฑธ ๋ณด์ ์ฐจ์ด๊ฐ ์ฝ๊ฐ์ฉ ์๋๋ด์(main์ด๋ผ.. ๊ทธ๋ด ์ผ์ด ์์ง๋ง.. ์์ฃ ?)
๐ก main ํจ์๋ฅผ ์ฐพ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ
์ผ๋ฐ์ ์ผ๋ก main ํจ์๋ C๊ณ์ด ์ธ์ด์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์ฝ๋ ์ค ๊ฐ์ฅ ๋จผ์ ์คํ ํจ์!
๋ฆฌ๋ฒ์ฑ์ ์ฒ์ ํ์๋ฉด ํ๋ก๊ทธ๋จ์์ ๊ฐ์ฅ ๋จผ์ ์คํํ๋ ์ฝ๋๊ฐ mainํจ์๋ผ ์ฐฉ๊ฐํ ์ ์์ผ๋ฉฐ
OS๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ ๋, ๋ฐ์ด๋๋ฆฌ์ ๋ช ์๋ EP๋ก๋ถํฐ ํ๋ก๊ทธ๋จ์ ์คํ, ์ผ๋ฐํ ์ค๋ฅ ์ฃผ์!
์ง์ ์ ๊ณผ mainํจ์์ ์ฌ์ด๋ฅผ ์ฑ์ฐ๋ ๊ฒ์ ์ปดํ์ผ๋ฌ์ ๋ชซ์ผ๋ก ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ๋ ๋ ์ฌ์ด์ ์ฌ๋ฌ ํจ์๋ฅผ ์ฝ์ ํ์ฌ ๋ฐ์ด๋๋ฆฌ๊ฐ ์คํ๋ ํ๊ฒฝ์ ๋จผ์ ๊ตฌ์ฑํ๊ณ , ๊ทธ ๋ค์ mainํจ์๋ฅผ ํธ์ถํ์ฃ . ํด์ ์ง์ ์ ์ ์์นํ๋ ํจ์(์์๋ก start ํจ์)์ mainํจ์๋ฅผ ์ฐพ์๋ผ๋ฉด ๋ง์ ํ์ธ์ด ํ์ํ๋ฉฐ ์ง์ ํด๋ณด๋ฉด์ ๋ฐฐ์ฐ๋ ๊ฑธ ์ถ์ฒ!
main ํจ์ ๋ถ์ by ์ ์ ๋ถ์
์ด์ mainํจ์๋ฅผ ์ฐพ์์ผ๋, F5(๋์ปดํ์ผ)ํ์ฌ ํจ์์ ์ฃผ์ ์ ๋ณด๋ฅผ ์ดํด๋ด
์๋ค.
ํ์ง๋ง ์ .. mainํจ์๋ก ์ ๋จ๋ฏ๋ก ์ค๋ช
๋ง ํด์ผ๊ฒ ๋ค์ ใ
์ธ์ ๋ถ์์ ํ๋ฉด IDA๋ argc, argv, envp๋ก 3๊ฐ์ ์ธ์๋ฅผ ๋ฐ์ต๋๋ค.
- Sleepํจ์๋ฅผ ํธ์ถํ์ฌ 1์ด ๋๊ธฐํฉ๋๋ค.
- qword_14001DBE0์ “Hello, world!\n” ๋ฌธ์์ด์ ์ฃผ์๋ฅผ ๋ฃ์ต๋๋ค.
- sub_140001060์ “Hello, world!\n” ๋ฅผ ์ธ์๋ก ์ ๋ฌํ์ฌ ํธ์ถํฉ๋๋ค.
- 0์ ๋ฐํํฉ๋๋ค.
sub_140001060 ํจ์ ๋ถ์
์ด ํจ์์ ๋์ปดํ์ผ ๊ฒฐ๊ณผ๋ฅผ ์ดํด๋ณด๋ฉด ๋จผ์ va_start ํจ์๋ฅผ ํตํด ๊ฐ๋ณ ์ธ์๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์์
๋๋ค.
sub_1400...2E28(1u)๋ฅผ ๋ถ์ํ๋ฉด ์ธ์์ธ a1๋ฅผ ๋ฐ์๋๋ ค ์คํธ๋ฆผํ๋ ํจ์๋ก
๋ฐํํ๊ธฐ์ ์ธ์๋ก 1์ด ๋ค์ด๊ฐ stdout์ ์๋ฏธ
๋ฐ๋ผ์ ๋ฌธ์์ด ์ธ์๋ฅผ ๋ฐ๊ณ stdout ์คํธ๋ฆผ์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ๋ณ ํจ์!!
์ด ๋ชจ๋ ์ ํฉ์ ํตํด sub_140..1010์ ๋ฐํ์ ํ๋ฏ๋ก printf ํจ์๋ก ์ถ์ ํ ์ ์์ต๋๋ค
๐ก์คํธ๋ฆผ(Stream)์ด๋?
๋ฐ์ดํฐ๊ฐ ์กฐ๊ธ์ฉ ํ๋ฌ๋ค์ด์จ๋ค๋ ์๋ฏธ๋ก ๋ช ๋ช ๋จ
๋ฐ์ดํฐ๋ ์คํธ๋ฆผ์ ํ์์ผ๋ก ํ ํ๋ก์ธ์ค → ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก, ๋๋ ํ ํ๋ก์ธ์ค → ํ์ผ ๋ฑ์ผ๋ก ์ด๋
OS๋ stdin(Standard input), stdout(Standard output), stderr(Standard error)
์ ๊ฐ์ ๊ธฐ๋ณธ ์คํธ๋ฆผ๋ค์ ํ๋ก์ธ์ค๋ง๋ค ์์ฑํด์ค๋๋ค. ์ด๋ค์ ์ผ๋ฐ์ ์ผ๋ก User์ ํ๋ก์ธ์ค ์ฐ๊ฒฐ
printf ํจ์(= stdout์ ํตํด)์ผ๋ก, scanf ํจ์(= stdin์ ํตํด) ํ๋ก์ธ์ค์ ์ ๋ฌํด์ค
์ด๋ฐ ๊ธฐ๋ณธ ์คํธ๋ฆผ์ธ์, ํ๋ก๊ทธ๋๋จธ์ ํ์์ ๋ฐ๋ผ ์์ฑ ๊ฐ๋ฅ!
Ex)dream.txt๋ผ๋ ํ ์คํธํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด, ์ด ํ์ผ๊ณผ ์คํธ๋ฆผ ํ์ฑ ๋ด์ฉ ์์ฑ
mainํจ์ ๋ถ์ by ๋์ ๋ถ์
์ด๋ฒ์ ์์์ ๋ถ์ํ ๋ด์ฉ์ ๋์ ๋ถ์์ผ๋ก ์ดํด๋ด
์๋ค
์ ์ ๋ถ์์์ ํ๋ ๊ฒ์ ์ ์๊ฐํด๋ณด๊ณ ํด๋ณผ๊น์
์ค๋จ์ ์ค์ (Break Point, F2) ๋ฐ ์คํ(Run, F9)
๋์ ๋ถ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด์ ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๋ ๋๊ฐ ์ ์ฒด ํ๋ก๊ทธ๋จ ์ค ์์ฃผ
์ผ๋ถ๋ถ์ ๋์์๋ง ๊ด์ฌ์ด ์๊ธฐ์ ํนํ ์ฌ๊ธฐ ์์ ์์ mainํจ์๊ฒ ์ฃ .
๊ทธ๋์ ํจ์จ์ ์ธ ๋๋ฒ๊ฑฐ๋ฅผ ์ํด ์ํ๋ ์ง์ ๊น์ง ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ์ค๋จ์ ๊ณผ ์คํ์ด๋ผ๋ ๊ธฐ๋ฅ ์กด์ฌ!!
์ค๋จ์ ์ ํน์ ์ฃผ์์ ์ค์ ํ๊ณ , ์คํ ๋ช
๋ น์ ๋ด๋ฆฌ๋ฉด ํ๋ก๊ทธ๋จ์ ์ค๋จ์ ๊น์ง ๋ฉ์ถ์ง ์๊ณ ์คํ๋์.
์ฐ๋ฆฌ๋ mainํจ์์ ๋์์ด ๊ถ๊ธํ๋ฏ๋ก, ์ด ๊ธฐ๋ฅ์ ์ด์ฉํด mainํจ์๋ก ์ง์
ํ๊ฒ ์ต๋๋ค.
- main ํจ์์ ์ค๋จ์ ์ ์ค์ (F2)
- ๋๋ฒ๊น
์์ํด mainํจ์๊น์ง ์คํ(๋๋ฒ๊น
์คํ; F9)
- ๋๋ฒ๊ฑฐ๋ฅผ ๊ณ ๋ฅด๋ผ๋ ์ฐฝ์ด ๋จ๋ฉด Local Windows debugger๋ฅผ ์ ํํด์ - ๋์ ๋ถ์์ ์ํ ์ค๋น ๋
ํ ๋จ๊ณ ์คํ(Step Over, F8)
์์ ์ดํด๋ณธ ์ค๋จ์ ๊ณผ ์คํ์ด ํ์ํ ์คํ ๊ณผ์ ์ ์๋ตํ๋ ๊ธฐ๋ฅ์ด๋ผ๋ฉด, Step Over(F8)์ ๊ด์ฌ์ด ์๋ ๋ถ๋ถ์
์ฝ๋๋ฅผ ์ ๋ฐํ๊ฒ ๋ถ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ผ๋ก F8์ ๋๋ฅด๋ฉฐ ํ๋ก๊ทธ๋จ ๋์ ๋ถ์ ใฑ
- sub rsp, 38์ ํตํด mainํจ์๊ฐ ์ฌ์ฉํ ์คํ ์์ญ ํ๋ณด
- rsp+0x20์ 4byte ๊ฐ์ด 0x000003e8์ ์ ์ฅ
- rsp+0x20์ ์ ์ฅ๋ ๊ฐ์ ecx์ ์ฎ๊น, ์ด๋ ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ฅผ ์ค์ ํ๋ ๊ฒ!
- Sleepํจ์๋ฅผ ํธ์ถ; ecx๊ฐ 0x3e8์ด๋ฏ๋ก, Sleep(1000)์ด ์คํ๋์ด 1์ด๊ฐ ์คํ์ด ๋ฉ์ถค
- “Hello, world!\n” ๋ฌธ์์ด์ ์ฃผ์๋ฅผ rax์ ์ฎ๊น
- ์๋์ ๋ฉ๋ชจ๋ฆฌ ๋คํ ์ฐฝ์ ์ด์ฉํ์ฌ 0x14001a140์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด ์ค์ ๋ก ํด๋น ๋ฌธ์์ด์ด ์ ์ฅ๋จ
- rax์ ๊ฐ์ data์ธ๊ทธ๋จผํธ์ ์ฃผ์์ธ 0x14001dbe0์ ์ ์ฅ
- 0x14001dbe0์ ์ ์ฅ๋ ๊ฐ์ rcx์ ์ฎ๊น; ์ด๋ ๋ค์ ํธ์ถํ ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉ๋จ
- 0x140001060ํจ์๋ฅผ ํธ์ถ; ์ฐ๋ฆฌ๋ ์ ์ ๋ถ์์ ํตํด ์ด ํจ์๋ฅผ printfํจ์๋ผ๊ณ ์ถ์ธกํ์ฃ
- ํ๋ก๊ทธ๋จ์ ํ์ธํ๋ฉด Hello, world!๊ฐ ์ถ๋ ฅ๋จ ๋์ ๋ถ์์ ์ด๋ ๊ฒ ํจ์๋ฅผ ํ์ธํ๊ธฐ ์ฝ๋ค
- ์์ํ ๋ ํ์ฅํ ์คํ ์์ญ์ add rsp, 38์ ํตํด ๋ค์ ์ถ์ํ๊ณ , ret๋ก ์ํด ์คํ ํ๋ฆ์ผ๋ก ใฑ
ํจ์ ๋ด๋ถ๋ก ์ง์ ํ๊ธฐ(Step Into, F7)๐คฟ
์์ Step Over๋ฅผ ์์ธํ ๊ด์ฐฐํ๋ค๋ฉด Step Over๊ฐ ํจ์ ๋ด๋ถ๋ก ์ ๊ทผ์ ์ํ์ฃ
ํจ์๊ฐ ํธ์ถํ๋ ๋ค๋ฅธ ํจ์๊น์ง ์ ๋ฐํ๊ฒ ๋ถ์ํด์ผ ํ ๋๊ฐ ๋ง์ฃ ..
๋ง์ ๋๋ฒ๊ฑฐ๋ ๊ทธ๋ฐ ์ํฉ์ ๋๋นํ์ฌ Step Into(F7)๋ผ๋ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค.์ด๋ฒ์ printf()์ ์ค๋จ์ ์ ์ค์ ํ๊ณ ,ํด๋น ํจ์์ ๋ด๋ถ๋ก ์ง์ ํด๋ณด๊ฒ ์ต๋๋ค.
- ๋๋ฒ๊น ์ ์ค๋จ(Ctrl-F2)ํ๊ณ , printf๋ฅผ ํธ์ถํ๋ 0x14000110b์ ์ค๋จ์ ์ ์ค์
- ๋๋ฒ๊น ์ ๋ค์ ์์ํ๊ณ , Continue(F9)๋ฅผ ํ์ฌ, printfํจ์์ ๋๋ฌ
- F7 ๋จ์ถํค๋ฅผ ํตํด ํจ์ ๋ด๋ถ๋ก ๋ค์ด๊ฐ ํจ์ ๋ด๋ถ๋ก RIP๊ฐ ์ด๋ํ ๊ฒ์ ํ์ธ ๊ฐ๋ฅ
Appendix, ์คํ ์ค์ธ ํ๋ก์ธ์ค ์กฐ์ํ๊ธฐ
IDA๋ฅผ ์ด์ฉํ๋ฉด ์คํ์ค์ธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค.
Sleep Forever
๊ธฐ์กด ์ฝ๋์์๋ Sleep(delay=1000)์ ํธ์ถํด 1์ด ๋์ ํ๋ก์ธ์ค๋ฅผ ์ ์ง์์ผฐ์ฃ .
์ด๋ฒ์ delay ๊ฐ์ 1000000์ผ๋ก ์กฐ์ํด 1000์ด ๋์ ํ๋ก์ธ์ค๋ฅผ ์ ์ง์์ผ๋ณด๊ฒ ์ต๋๋ค.
- delay๋ฅผ Sleepํจ์์ ์ธ์๋ก ์ ๋ฌํ๋ ๋ถ๋ถ์ ์ค๋จ์ ์ ์ค์ ํ๊ณ , ํ๋ก์ธ์ค๋ฅผ ์ฌ์์
- ์คํ์ ๋ณด๋ฉด rsp+0x20์ delay์ ๊ฐ์ธ 0x3e8์ด ์ ์ฅ๋จ
- ํด๋น ๊ฐ์ ํด๋ฆญํด, F2๋ฅผ ๋๋ฅธ ๋ค 0xf4240(1000000) ์ ๋ ฅ/ delay์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒ ํ์ธ ๊ฐ๋ฅ
- ์ด์ F9๋ฅผ ๋๋ฌ์ Sleepํจ์๋ฅผ ํธ์ถ ์๋ง ๋๋ต 20๋ถ ์ ๋ ๊ธฐ๋ฌ๋ ค์ผ ํ๋ก์ธ์ค ์ฌ๊ฐ๋จ
์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒด๊ฐํ๊ธฐ ์ฝ๊ฒ ํด๊ธฐ ์ํด Sleepํจ์์ ์ธ์๋ฅผ ์กฐ์ํ์ง๋ง,
์ค์ ๋ก ์ด๋ค ํจ์์ ๋์์ ๋ชจ๋ฅผ ๋ ์ธ์๋ฅผ ์ ์ ํ ์กฐ์ํด ํจ์์ ๋์๊ณผ ์ธ์์ ์ญํ ๋ค์ ์ ์ถ!
์ฐธ๊ณ ๋ก ์คํดํ ์ ์๋ ๋ถ๋ถ์ด ์๊ธฐ์ ์๋ Q&A์ ์ฌ๋ฆฐ ์ง๋ฌธ ๋งํฌ ๋ฌ์๋๋ฆด๊ป์
rdi rsi rdx rcx r7.. ๋ญ ์ด๋ฐ ์ธ์์ ์์ด์ Sleep์ ์ ecx๋ ๋ผ๋ ์ง๋ฌธ์ธ๋ฐ ์๋ฌด๋๋ ๋ฆฌ๋
์ค๋ ์๋์ฐ๋..
์ฝ๋ ์์ฝ๐
์ด๋ฒ ์ฝ์ค์์๋ ๊ฐ๋จํ ์์ ์ธ HelloWorld.exe๋ฅผ IDA๋ก ๋ถ์ํด๋ณด๋ ์ค์ต์ ํ์ต๋๋ค.
์ค์ต์ ํตํด IDA์ ์ข ๋ ์ต์ํด์ง๊ณ , ๋์ ๋ถ์๊ณผ ์ ์ ๋ถ์์ ์ฐจ์ด๋ฅผ ๋๊ปด ๋ณด์
จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
- BreakPoint(F2): ์ค๋จ์ ์ ์ค์ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ํด๋น ์ง์ ์ ๋๋ฌํ๋ ์๊ฐ ์ ์ง
- Restart(Ctrl + F2): ๋๋ฒ๊น ์ ์ค๋จํฉ๋๋ค.
- Run(F9): ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํ, ๋๋ ๋๋ฒ๊น ์ ์์
- Step Into(F7): ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ํ ์ค ์คํํจ /ํจ์์ ํธ์ถ์ด๋ผ๋ฉด, ํจ์ ๋ด๋ถ๋ก ๋ค์ด๊ฐ
- Step Over(F8): ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ํ ์ค ์คํํจ / ํจ์ ๋ด๋ถ๋ก๋ ๋ค์ด๊ฐ X
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โDreamhack_Reversing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
rev-basic-2 (0) | 2022.05.25 |
---|---|
rev-basic-0 (0) | 2022.05.17 |
x86 Assembly (0) | 2022.05.12 |
Computer Science (0) | 2022.05.12 |
Background: Static Analysis vs. Dynamic Analysis (0) | 2022.05.11 |