1. VS 콘솔 샘플 코드

 

#include <stdio.h>

 

int sub_1() // main()으로 부터 호출을 당하는 callee

{

        return 0x1234;

}

 

int main(void) // system으로 부터 호출을 당하는 callee

{

        sub_1();

        return 0;

}

 

2. VS 최초 프로젝트 생성 시 옵션 확인

 

 

 

 

 

3. VS 코드 확인

 

 

Entry point 코드 확인

 

 

0040125B 확인

 

 

Main 함수 찾기

 

.text:00401260                 jmp     loc_4010D9 // main을 이동하는 과정

 

 

일단 main 함수 진입점을 찾았다.

.text:004011CE                 call    sub_401000

 

 

 

 

main함수를 가봤더니 헉 알 수 없다. 무엇을 하는지 알 수 없다.

일단 중요한 건 main 함수를 찾은 것이다.

 

.text:00401000 sub_401000      proc near               ; CODE XREF: start-8Dp

.text:00401000                                         ; .text:00401831j

.text:00401000                 xor     eax, eax

.text:00401002                 retn

.text:00401002 sub_401000      endp

 

 

 

수상한 값 역추적

 

 

이 값은 도대체 무슨 값일까?

.text:00401003 byte_401003     db 3Bh                  ; DATA XREF: sub_40198B+Fo

.text:00401004                 dd 4030040Dh, 275F200h, 0E9F2C3F2h, 279h, 0E8016A56h, 0B47h

.text:00401004                 dd 67EE8h, 72E85000h, 0E800000Bh, 0B9Dh, 0CDE8F08Bh, 6AFFFFFFh

.text:00401004                 dd 0E8068901h, 3F9h, 5E0CC483h, 7374C084h, 83E8E2DBh, 68000008h

.text:00401004                 dd 4018FAh, 599E8h, 641E800h, 0E8500000h, 0B0Fh, 0C0855959h

.text:00401004                 dd 3AE85175h, 0E8000006h, 68Fh, 0B74C085h, 40100068h, 0AEBE800h

.text:00401004                 dd 0E8590000h, 651h, 64CE8h, 626E800h, 6DE80000h, 50FFFFFFh

.text:00401004                 dd 0B24E8h, 12E85900h, 84000006h, 0E80574C0h, 0ACDh, 0FFFF53E8h

.text:00401004                 dd 77FE8FFh, 0C0850000h, 6AC30175h, 659E807h, 0E8CC0000h

.text:00401004                 dd 61Eh, 0E8C3C033h, 7ADh, 0FFFF2FE8h, 0ECE850FFh, 5900000Ah

 

딱 봐도 메인 함수에 대한 보안이 되어 있다는 것을 알 수 있다.

일단 코드를 따라 가보자.

 

 

 

 

 

 

 

 

 

.text:00401260                 jmp     loc_4010D9

 

main 함수를 호출하는 과정에서 해당 코드가 수행되었다.

뭔가 느낌이 오는가? 아직 아무것도 알 수 없다면 우리는 다음 단원에서 밝혀보자.

+ Recent posts