VMProtect 可执行文件中的挂钩函数

逆向工程 ollydbg 断点 包装工 虚拟机保护
2021-06-27 04:59:28

我正在尝试解决 Sharif CTF 2016 HI2.exe 挑战。这个挑战需要一个特定的(不可能达到的)环境(64 个处理器,128GB RAM,...)来显示标志。由于可执行文件包含VMProtect,最好的选择似乎是挂钩负责环境规范检查的函数,并在运行时修改它们的返回值。我正在使用 OllyDbg 和 StrongOD 插件。我在这里记录了所有细节:https : //www.aldeid.com/wiki/SharifCTF-2016/hi

我已经完成了第一步(我已经修改了SYSTEM_INFOGetSystemInfo函数操纵结构的值),但未能到达我在GlobalMemoryStatusEx函数上设置的第二个断点程序在达到我的第二个 BP 之前显示以下错误消息:A debugger has been found running on your system.

我尝试使用 StrongOD 插件(HidePEB、KernelMode、SkipSomeExceptions)中的一些选项,但它要么没有改变任何东西,要么在第二个 BP 之前使可执行文件崩溃。

我怎样才能实现这个目标?我应该如何配置 OllyDbg 和/或 StronOD 以防止程序知道它正在被调试?

非常感谢您的帮助。

2个回答

StrongOD如果您使用 Win7 作为调试环境,则可能会出现意外行为。尝试使用ScyllaHide带有VMProtect配置文件的插件,忽略Invalid or privileged instruction调试选项中的异常。

如果没有办法调试它,使用系统机制将你的 DLL 加载到受保护的进程中,然后做任何你喜欢的事情。