非常奇怪,在早期的X4版本里,竟然存在反调试,不让开发插件的软件工程师进行调试分析,本文针对这个奇怪的问题进行逆向分析。
1.IsDebuggerPresent
对Kernel32.dll中的IsDebuggerPresent函数,可以在主程序中导入位置进行修改。在crlutl,非直接位置调用了这个调试状态跟踪。该函数实际修改进程块的标志位。
mov eax, dword ptr fs:[0x00000030]
movzx eax, byte ptr ds:[eax+0x2]
修改为
mov eax,0
ret
这是最简单的过反调试的方法。
2.基于异常的反调试
通过这类反调试,可以采用忽略异常的方法,将异常还是交由程序对应的代码进行处理,让其处理对应的流程。在X32dbg中&#