TIL(사전캠프)

리버싱2. 20~22(2024-06-21)

note994 2024. 6. 21. 15:15

1. main() 함수 찾기

F7 명령으로 한 줄씩 내려오다보면 또 402524주소의 어떤 함수를 호출한다.(빨간색 표시) F7로 들어가보자

 

해당 함수부분까지만 잘라내었다.

 402524 함수는 main()가 아닐것이다. 왜냐하면 MessageBox() API 호출 코드가 보이지 않기 때문이다. 다시 Ctrl+F9으로 함수탈출을 하자

 

지금부터 쭉 F7로 한 줄씩 실행하며 함수를 호출할 경우 들어가보고 main()인지 판단하고 아니면 다시 나가는 패턴을 계속해보자

 

계속 내려가다보면 4010E4 주소의 CALL <JMP.&KERNEL32.GetCommandLineW> 명령이 보인다. 이 명령어는 Win32 API 호출코드이다. 지금 단계에서는 따라 들어갈 필요가 없으니 넘어간다.

계속 실행하다 보면 401144 주소에 CALL HelloWor.00401000 명령이 있다. 여기를 실행해보자

 

드디어 찾은 main함수

MessageBoxW() API를 호출하는 코드가 있다. 그리고 그 파라미터로 "www.reversecore.com"과 "Hello World!" 문자열이 있다는게 확인된다. 이는 HelloWorld.cpp의 소스코드의 내용과 일치한다. 따라서 401000 함수가 바로 main() 함수이다.