본문 바로가기

INTERTLUDE/리버싱 스터디

[리버싱 스터디]_1주차 Hello World 디버깅 라이트업

해당 실습에서는 Immunity Debugger를 기본 디버깅 툴로 사용하였으며, HxD와 7-zip은 이후 과제 풀이를 위해 함께 설치하였다

 

1) Immunity Debugger,

2) HxD

3) 7-zip file manager

 

설치를 마친 뒤, File → Open 메뉴를 통해 HelloWorld.exe 파일을 열고 디버깅을 시작하였다. 

그다음으로는,

  • 코드 실행을 F8(Step Over) 키로 한 줄씩 진행하면서, 실제로 프로그램의 동작을 수행하는 부분을 확인하였다.
  • 004011DF CALL Hellowor.00401000 명령을 발견하였는데, 이는 CRT 초기화 루틴에서 프로그램의 main 함수(00401000)를 호출하는 부분임을 확인할 수 있었다.

 

00401000 주소로 이동해 내부를 확인하니,

  • 사진과 같은 코드들이 나타났고, 이는 MessageBox API 호출을 통해 문자열을 출력하는 부분임을 알 수 있었다. 

 

  • 여기서 CALL USER32.MessageBoxW 직전에서 F8(Step Over)를 실행하자 실제로 "HelloWorld!"라는 문자열이 출력된   메시지박스가 화면에 나타났다.
  • 따라서 OEP(Open Entry Point)에 진입한 뒤 실행을 추적하면, CRT 초기화 루틴을 거쳐 main 함수 내부에서 MessageBox를 호출해 ‘HelloWorld!’ 팝업을 띄우는 구조임을 확인할 수 있었다!