原文:The Ultimate Anti-Debugging Reference

1. Process Environment Block (PEB) 结构检测

PEB:进程环境块,保存了关于进程的环境信息,其结构在此可查看。

其指针被保存在 fs:[30h](32位)或 gs:[60h] 处。

1.1 NtGlobalFlag

检查 PEB+0x68 (32位)或 PEB+0xBC (64位)处,若值为 0x70 (含堆校验标志)则可能被调试。

1.2 ProcessHeap 标志

PEB+0x18 (32位)或 PEB + 0x30(64位)处保存了堆的起始地址

ForceFlags 字段位于 0x70(Windows Vista及更高版本64位系统)处
Flags 字段位于 0x74(Windows Vista及更高版本64位系统)处

检查这两个字段

1.3 BeingDebugged

位于PEB+0x2 处,1表示被调试