일부 악성코드나 패커는 일부러 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
)
'Reverse Engineering > OS Internals' 카테고리의 다른 글
USB 자동 실행관련 레지스트리 키 (0) | 2007.11.10 |
---|---|
TLS Callback (0) | 2007.06.20 |