Reverse Engineering/OS Internals

SEH

쿨캣7 2007. 8. 27. 17:16
728x90
반응형


일부 악성코드나 패커는 일부러 exception 을 발생시켜 분석을 방해하는 형태가 있다.
그때의 스택 구조와 각 구조체 정의에 대한 자료이다.

자료 정리는 팀내 모님께서 ...

typedef struct _EXCEPTION_RECORD
{
 DWORD    ExceptionCode;
 DWORD    ExceptionFlags;
 EXCEPTION_RECORD   *ExceptionRecord;
 PVOID     ExceptionAddress;
 DWORD    NumberParameters;
 UINT_PTR    ExceptionInformation[0Fh];
} EXCEPTION_RECORD;


typedef struct _EXCEPTION_REGISTRATION
{
 EXCEPTION_REGISTRATION  *prev;
 EXCP_HANDLER   handler;
} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;


typedef struct _CONTEXT
{
/*00*/    DWORD    ContextFlags;
/*04*/    DWORD       Dr0;
/*08*/    DWORD       Dr1;
/*0C*/    DWORD       Dr2;
/*10*/    DWORD       Dr3;
/*14*/    DWORD       Dr6;
/*18*/    DWORD       Dr7;
/*1C*/    FLOATING_SAVE_AREA   FloatSave;    // 70h
/*8C*/    DWORD       SegGs;
/*90*/    DWORD       SegFs;
/*94*/    DWORD       SegEs;
/*98*/    DWORD       SegDs;
/*9C*/    DWORD       Edi;
/*A0*/    DWORD       Esi;
/*A4*/    DWORD       Ebx;
/*A8*/    DWORD       Edx;
/*AC*/    DWORD       Ecx;
/*B0*/    DWORD       Eax;
/*B4*/    DWORD       Ebp;
/*B8*/    DWORD       Eip;
/*BC*/    DWORD       SegCs;  
/*C0*/    DWORD       EFlags; 
/*C4*/    DWORD       Esp;
/*C8*/    DWORD       SegSs;
/*CC*/    BYTE        ExtendedRegisters[200h];
} CONTEXT;


// callback function definition
typedef EXCEPTION_DISPOSITION (*EXCP_HANDLER)
(
 EXCEPTION_RECORD   *pExcpRec,    // ESP+4
 EXCEPTION_REGISTRATION  *pFrame,    // ESP+8
 CONTEXT     *pCtx,     // ESP+C
 VOID      *pValue    // ESP+10
)

728x90
반응형

'Reverse Engineering > OS Internals' 카테고리의 다른 글

USB 자동 실행관련 레지스트리 키  (0) 2007.11.10
TLS Callback  (0) 2007.06.20