非DLL进行API Hook后如何绕VMP v3版本的调试器检测?
我想通过纯EXE进行API Hook从而破解示例abcdefg.exe,因此编写了PatchEx64.exe。PatchEx64.exe的作用是启动示例程序后设置远程Hook NtCreateFile,并等待目标地址解码后写内存。原理类似调试器远程附加进程并设置硬件断点
问题:
PatchEx64.exe运行后能够解决 无壳 的示例与 vmp 2 全保护 的示例,
但是无法解决 vmp 3.8 全保护 的示例,提示发现调试器,原因就是PatchEx64.exe远程附加进程并设置硬件断点的行为类似调试器,因此被检测到了。
我改成使用int 3 断点也不行。
该如何解决这个问题?即在这种情况下如何绕过VMP v3版本的调试器检测提示?
注意:此处要求,完全基于纯EXE进行Hook破解,不要涉及调用DLL进行破解。调用DLL进行破解是肯定可行的。。。
示例与PatchEx64.exe:
https://wwsc.lanzouo.com/ixjZM2fcu5sd 时机不对,早了,换API,如有不对,还请谅解 beatone 发表于 2024-11-17 20:53
时机不对,早了,换API,如有不对,还请谅解
我试了,换成Hook CreateWindowExW或者Hook NtContinue都不行。如果是使用DLL进行Hook是肯定可以的。但我要求使用纯EXE进行hook。 https://www.52pojie.cn/thread-688291-1-1.html 这个可以参考 本帖最后由 爱飞的猫 于 2024-11-18 03:14 编辑
Hook API 触发不了,怀疑 VMP 对初始化的那几个函数做了特殊处理。
对 DLL 函数(LoadResource)下的钩子一直没被触发,VMP 可能自己实现了一套 DLL 加载手动从磁盘加载了一份:
![](https://imgsa.baidu.com/forum/pic/item/d31b0ef41bd5ad6eb9eb7dccc7cb39dbb6fd3c81.png)
此外如果改动的时间过早,会触发内存校验错误:
![](https://imgsa.baidu.com/forum/pic/item/023b5bb5c9ea15ced0f9f92ff0003af33a87b285.png)
---
最后我改成远程启动一个线程,每隔 5s 检测修改一次(反正这玩意初始化贼慢…)。
![](https://imgsa.baidu.com/forum/pic/item/77c6a7efce1b9d16e1ce8347b5deb48f8c54648e.png)
缺陷:
- 无法对抗需要尽早修改的情况
- 根据 CPU 速度,写死的 5s/5次不一定好用,可能换个机子补丁就失败了。
相关代码和补丁([百度网盘](https://pan.baidu.com/s/1X3ni1A0HzY_VO0qJRSKjsA?pwd=tk7a)) 爱飞的猫 发表于 2024-11-18 03:00
Hook API 触发不了,怀疑 VMP 对初始化的那几个函数做了特殊处理。
对 DLL 函数(LoadResource)下 ...
感谢答疑。但能否实现“不依赖于每隔一段时间检测修改一次”的效果。即通过纯exe实现类似dll的api Hook判断解码,并即时修改。 本帖最后由 爱飞的猫 于 2024-11-18 03:16 编辑
董督秀 发表于 2024-11-18 03:10
感谢答疑。但能否实现“不依赖于每隔一段时间检测修改一次”的效果。即通过纯exe实现类似dll的api Hook判 ...
它都不调用我 Hook 的函数(无壳情况下正常触发)。建议测试 VMP 3 + DLL 补丁的情况是否正常。
如果测试通过的话,你可以找 DLL 注入代码(DLL 文件不落地,网上有很多相关源码),将 DLL 注入进去。这个是最省事的。
或者就和我之前回复里的源码一样,手写纯汇编的 ShellCode 然后注入进去执行。缺点就是 Hook 函数 + 自定义的判断逻辑会写起来很麻烦。 本帖最后由 董督秀 于 2024-11-19 11:32 编辑
爱飞的猫 发表于 2024-11-18 03:14
它都不调用我 Hook 的函数(无壳情况下正常触发)。建议测试 VMP 3 + DLL 补丁的情况是否正常。
如果 ...
{:301_998:}感谢提供思路。
页:
[1]