让vmp在调试器里可以运行——过antidebug过程实操
本帖最后由 白影33 于 2019-11-26 15:52 编辑本文部分过反调试办法来自帖子:https://www.52pojie.cn/thread-740871-1-1.html。
本文过掉的反调试都是“64位系统”下吾爱od+strong仍然会被检测到的反调试。
vmp版本2.06.
直接运行显示调试被检测。
重新运行,bp CheckRemoteDebuggerPresent,在断点窗口找到 CheckRemoteDebuggerPresent位置,
注意:由于vmp有部分关键函数断点检测所以不能直接下断,
所以取消CheckRemoteDebuggerPresent断点在下面一行下一个断点。
f9运行。
执行到返回,按上面帖子的方法把堆栈地址 dff48指向的数据清0,
原因是CheckRemoteDebuggerPresent,返回值=1代表被调试,返回值=0代表未被调试
注意:CheckRemoteDebuggerPresent判断被调试返回值不是存在eax而是存在堆栈中,所以把eax清0也没用。
bp CloseHandle,运行断下,CloseHandle反调试是关闭一个不可能关闭的句柄,从而触发异常,
正常情况下忽视(不知道为什么不进入异常,按道理是应该进入的,原因希望有大佬指明一下,)
如果有调试器要么卡死,要么进入异常处理流程。
上面帖子的办法把KiRaiseUserExceptionDispatcher函数nop掉,就不会进入异常处理流程。
不知道是不是vmp版本问题,这个办法个人实测无效。
想了很久我的办法是,让CloseHandle关闭一个不重要的句柄,这样就可以运行下去,且不会触发异常,
又因为CloseHandle是关闭一个不可能关闭的句柄,返回值肯定是0关闭失败,所以还要修改返回值
eax=0.接下来实操。
来的句柄窗口,右键隐藏不重要的句柄,再右键显示不重要的句柄,这样图中红色的都是不重要的句柄,随便选一个,
我选的是0000000c号句柄,把那个df664处那个不可能关闭的句柄替换。
执行到返回,把eax修改为0,ok这个就过了
bp ZwQueryInformationProcess,依旧在它下面一行下断,运行,断下按上面帖子办法。
执行到返回,把eax修改为0xC0000353,把堆栈地址dff48处清0。
删除所有的内存断点,因为有内存检测。f9运行。
好了,不再是一开始被检测的提示了,也可以运行起来了。
vmp 2.x的论坛od没问题,3.x的vmp会anti strongod的一个漏洞,新版sod已经修复了,只是海风还没发,目前使用挺好,也有其他第三方插件,逆向资源区有下载可以试用一下。 白影33 发表于 2019-11-26 15:37
不知道是不是我的配置原因吾爱od+strongod确实过不了vmp2.06
不过加上论坛的这个插件就可以过了:http ...
你不是64位系统吧?如果是肯定是不行的,最多win7 32位,64的sod驱动无法加载。SharpOD是r3实现的,所以不需要驱动吧。 其实 对于 老壳 换个od 就能解决 Hmily 发表于 2019-11-26 10:02
vmp 2.x的论坛od没问题,3.x的vmp会anti strongod的一个漏洞,新版sod已经修复了,只是海风还没发,目前使 ...
坛主大大,我们也需要一份新版的sod插件!!!!!! 支持一波 对于正在入门的萌系很有帮助 ,虽然说换别人配置好插件修改过的OD可以轻松过检测但是一些原理性的东西是看不到的。还是自己摸索好一点 夜陌 发表于 2019-11-25 23:34
其实 对于 老壳 换个od 就能解决
完全自学没拜师也没交友,不知道有什么nb的od可以直接过 感谢分享 感谢分享 感谢作者分享,希望自己以后也可以这么牛 感谢楼主的分享 感谢分享 又一次开眼界了!!!