티스토리 뷰

Reversing/Reversing Tech

[Reversing] ZwContinue

정뚱띵 2020. 2. 5. 09:54
728x90
반응형

[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 을 할 수 있다.



그 다음을 모르겠다..

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
250x250