본문 바로가기

Penetration/etc

개인공부 - 리버싱 분야(디버깅)

dbg64의 쓰임을 익히기 위해서 임의의 코드를 작성하여 디버깅을 해보기로 하였습니다.

 

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdshow){
	MessageBox(NULL, "Hello World!!", "Welcome Message", MB_OK);
	return 0;	
}

해당 코드를 작성한 후 컴파일 하여 하나의 exe 파일을 만들어서 디버깅을 시도합니다.

Hello world가 메시지박스로 출력되는 프로그램입니다.

 

해당 파일은 32비트 프로그램이므로 x32dbg.exe를 통해서 분석합니다.

1. 흐름 따라가면서 찾기

이후 F7, F8을 눌러가면서 함수를 호출합니다.

F7은 Call 함수의 내부로 따라 들어가 수행하고, F8은 Call함수를 하나의 명령어처럼 수행합니다.

 

F2로는 중단점을 설정할 수 있고 F9는 해당 지점까지 실행할 수 있습니다.

 

2. 문자열 참조 찾기

하나하나 함수를 실행시키면서 찾는 방법이 있다면, 프로그램이 실행될 때 나타나는 문자열을 이용해서 찾는 방법도 있습니다. 프로그램창에서 우클릭 이후 다음을 찾기 > 현재 모듈 > 문자열 참조로 이동하여 찾을 수 있습니다.

F7을 이용해 조금 이동하고 나서 확인해보면 아래와 같은 결과를 확인할 수 있습니다.

 

3. API 검색 방법

문자열에 표시되는 내용은 ASCII 코드 기준 영어 문자열 위주로 검색되므로 한글 메시지에 대해서 탐색하고 싶다면 API를 검색할 필요가 있습니다.

모듈간 호출을 통해서 확인할 수 있고 결과는 아래와 같습니다.

API 검색을 이용하기 위해서는 어떤 동작에 어떤 API가 사용되는지를 알고있어야 합니다. 이 내용은 윈즈 프로그래밍 부분에서 공부해보려고 합니다.