1.SEH异常处理
windows中存在许多的异常处理类型,如下:
EXCEPTION_DATATYPE_MISALIGNMENT (0x80000002)
EXCEPTION_BREAKPOINT (0x80000003) 断点异常
EXCEPTION_SINGLE_STEP (0x80000004) 单步执行
EXCEPTION_ACCESS_VIOLATION (0x80000005) 非法访问内存
EXCEPTION_IN_PAGE_ERROR (0x80000006)
EXCEPTION_ILLEGAL_INSTRUCTION (0x8000001D) 无法识别的指令
EXCEPTION_NONCONTINUABLE_EXCEPTION (0x80000025)
EXCEPTION_INVALID_DISPOSITION (0x80000026)
EXCEPTION_ARRAY_BOUNDS_EXCEEDED (0x8000008C)
EXCEPTION_FLT_DENORMAL_OPERAND (0x8000008D)
EXCEPTION_INT_DIVIDE_BY_ZERO (0x80000094) 除法运算分母为0
...
而反调试技术则可以利用异常处理机制来进行反调试处理。
1)在异常处理过程函数中进行静态反调试判断。例如判断PEB的调试标识等。
2)利用异常处理机制进行动态反调试。
如果程序处于调试状态时,在程序抛出异常后,会优先派发给调试器进行处理。此时就可以利用这一点进行反调试处理。如下代码:
00401000