뉴비의 천방지축 IT 블로그

Hacking/Reversing

Detect it easy(die.exe)와 dbg를 사용하여 main()함수 찾기

recognizee 2023. 1. 1. 15:35
728x90

안녕하세요. 이번 글은 리버싱(reversing)의 기초로, 리버싱에서 사용되는 프로그램인 Detect it easy(die.exe)dbg를 눈과 손에 익히고자 작성하였습니다. 이번 글에 사용되는 파일은 아래와 같습니다.

이번 글에 사용될 .exe파일

die.exe로 정적분석을 하여 파일 유형을 알아보고 dbg로 main()함수를 찾고 주요 로직(계산, 출력 등)을 담당하는 함수를 찾아볼 예정입니다.

 

 

Detect it easy(die.exe)를 사용한 정적분석

die.exe를 사용하여 프로그램을 정적분석을 하는 이유는 프로그램의 파일 유형을 알아낼 수 있기 때문입니다. 파일 분석할 때 파일 유형을 알아내는 과정은 중요한 과정 중 하나입니다.

물론 CTF를 풀 때 IDA와 같은 프로그램을 사용하면 64bit에 넣어서 잘 되는지 보고 안 되면 32bit로 넘어가서 확인하는 방법도 있습니다... 전 지금까지 그랬어요...^^

die.exe 실행 화면

die.exe를 실행하면 다음과 같이 나옵니다. 여기서 원하는 파일을 분석하고 싶다면 '파일 이름'에 그 파일의 경로를 작성하거나 '...'을 클릭하여 파일을 선택하면 됩니다.

제가 분석할 파일을 가져왔습니다. 위 사진을 보시면 파일 유형이 'PE64'라고 나타나는 것을 확인할 수 있습니다. 이 뜻은 제가 이 글에서 분석할 파일인 'reversing2.exe'의 파일 유형은 64-bit입니다.

 

x64dbg를 사용하여 프로그램 분석하기

이제 파일 유형을 알았으니 이 프로그램을 하나씩 분석해볼 차례입니다. x64dbg를 열어 이 파일을 불러와줍니다.

위와 같이 나왔습니다. 이제 여기서 한 줄씩 분석을 해볼 겁니다.

위의 사진처럼 '실행자 코드로 실행(U)'를 눌러 무슨 프로그램인지 확인해봅시다.

숫자 2개를 입력하여 첫번째로 입력받은 숫자를 두번째로 입력받은 숫자만큼 곱해주어 출력하는 프로그램이네요:) 무슨 프로그램인지 알았으니 일단 비교적 간단하게 찾을 수 있도록 문자열을 사용하여 주요 로직을 담당하는 함수부터 찾아보겠습니다.

위의 사진과 같이 'Az(문자열 찾기)'를 눌러 문자열로 주요 로직을 담당하는 함수를 찾아보겠습니다.

Enter 2 numbers로 검색을 하였더니 주소 하나가 나왔습니다. 저 주소를 더블클릭하여 더 자세히 살펴봅시다.

위와 같이 주요 로직을 담당하는 함수를 찾을 수 있었습니다.

이제 main()함수를 찾아보겠습니다.

이렇게 심볼 파일을 사용하여 명령어를 쳐줍니다. 그러면 조금 더 보기 쉽게 아래와 같이 나오게 됩니다. 여기서 열심히 F7(step-in)과 F8(step-over)을 눌러 main()함수를 찾아줍니다.

mainCRTStartup() __scrt_common_main() __scrt_common_main_seh() invoke_main() main()

위 글처럼 함수 안에 함수에 들어가면 main()함수에 들어갈 수 있습니다.

열심히 F8을 눌러주면 3번째 줄에 짠하고 나옵니다. F7를 눌러 저기 함수에 들어가 봅니다.

들어가면 또 3번째 줄에 짠하고 나옵니다. F7를 눌러 또 들어가 봅니다.

또 열심히 F8을 눌러주면 짠하고 나옵니다. 여기로 들어가서

마지막 call에 있는 함수(return 하기 직전 함수)로 들어가면

요로코롬 나오게 됩니다. 마지막으로 저 부분을 들어가면!

짠!하고 main()함수로 들어오게 됩니다.

 

요걸로 main()함수와 주요 로직을 담당하는 함수를 찾기 마무리하겠습니다!