绕过 IsDebuggerPresent
逆向工程
艾达
反调试
2021-06-12 15:44:01
1个回答
我们来看看MSDN中对函数的描述:
确定调用进程是否正在被用户模式调试器调试
如您所料,此函数通常用作反调试技巧,目的是在程序检测到正在调试时中断进程。IsDebuggerPresent检查PEB(进程环境块)中的BeingDebugged标志,如果确实正在调试,将返回一个非零值。
您有多种选择可以绕过此技巧,其中一些是:
运行时修补:
IsDebuggerPresent被调用后将EAX 设置为零通过注入以下代码修改 PEB 本身:
mov eax,dword ptr fs:[18] mov eax,dword ptr ds:[eax+30] mov byte ptr ds:[eax+2],0这将修补
BeingDebuggedPEB 中的标志,确保IsDebuggerPresent始终返回 0。- 您可以使用像idastealth这样的插件
永久补丁:
- 您可以使用 NOP 或类似内容填充对 IsDebuggerPresent 的调用以跳过检查
其它你可能感兴趣的问题
