文章目录
检测数据结构
BeingDebuged(字段检测)
被调试时,BeingDebuged字段的值为1,否则为0
汇编码:
mov eax,fs:[0x30]
mov eax,byte ptr[eax+0x2]
API IsDebuggerPresent
被调试时,返回值为非零
int main()
{
if (IsDebuggerPresent())
{
std::cout << "Stop debugging program!" << std::endl;
exit(-1);
}
return 0;
}
API CheckRemoteDebuggerPresent
和IsDebuggerPresent
功能一致
对于X64进程
KERNELBASE!IsDebuggerPresent:
00007ffc`ab6c1aa0 65488b042560000000 mov rax,qword ptr gs:[60h]
00007ffc`ab6c1aa9 0fb64002 movzx eax,byte ptr [rax+2]
00007ffc`ab6c1aad c3 ret
破解方法:
通过在检查代码执行之前,将eingDebugged
设置为0,可以使用dll注入来完成
mov eax, dword ptr fs:[