티스토리 뷰

Reversing/Reversing Tech

[Reversing] ZwContinue

정짱 정뚱띵 2020. 2. 5. 09:54

[Reversing] ZwContinue


언패킹 시 ZwContinue()을 자주 보게 되어 살펴보았다.

먼저 ZwContinue()의 정보를 확인 할 수 있다.

ZwContinue(
   IN PCONTEXT ContextRecord, //Pointer to CONTEXT structure for current thread
   IN BOOLEAN TestAlert
   );


첫번째 인자의 CONTEXT구조체 포인터로 아래와 같은 구조체 정보를 확인 할 수 있다.

 typedef struct _CONTEXT {

    DWORD ContextFlags;

    DWORD   Dr0;
    DWORD   Dr1;
    DWORD   Dr2;
    DWORD   Dr3;
    DWORD   Dr6;
    DWORD   Dr7;

    FLOATING_SAVE_AREA FloatSave;

    DWORD   SegGs;
    DWORD   SegFs;
    DWORD   SegEs;
    DWORD   SegDs;

    DWORD   Edi;
    DWORD   Esi;
    DWORD   Ebx;
    DWORD   Edx;
    DWORD   Ecx;
    DWORD   Eax;

    DWORD   Ebp;
    DWORD   Eip;                   //This point is 0xB8 from first.
    DWORD   SegCs;              // MUST BE SANITIZED
    DWORD   EFlags;             // MUST BE SANITIZED
    DWORD   Esp;
    DWORD   SegSs;

    BYTE    ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];

} CONTEXT;


EIP는 실행할 명령어 주소를 담고 있는 레지스터로 EIP 위치의 값을 계산하게 되면 함수 실행 시 주소를 알 수 있다.(D1FCA0 + B8 = D1FD58)

즉, EIP를 가르키는 주소에 브레이크 포인트F2 를 걸고 진행F9 을 할 수 있다.



그 다음을 모르겠다..

댓글
댓글쓰기 폼
공지사항
«   2020/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Total
152,108
Today
20