xjun 发表于 2017-10-29 15:26

XAntiDebug2 ( 终极反调试 )

本帖最后由 xjun 于 2017-10-30 23:17 编辑

这个反调试方法是逆向的最新的VMP3.1.2(build886)里面的,并且VMP只有特定条件才会触发这个终极反调试。
鄙人觉得这个反调试仍有很大改进空间,就把运用在最新版VMP里面反调试方法逆向出来加强了很多。
这个BUG级的反调试方法基本反掉市场上所有反调试插件(不走正常调试流程的除外)。




//////////////////////////////////////////////////////////////////////////////////////////////////

更新一个版本。前面那个版本代码判断写的太严谨,导致了有很多方法可绕过,这个版本才发挥了其精髓。

xjun 发表于 2017-11-3 23:00

本帖最后由 xjun 于 2017-11-3 23:07 编辑

20120427 发表于 2017-11-3 21:30
检测调试器还是使用了 ZwQueryInformationProcess 查询调试对象, 正常情况下 最后一个参数ReturnLength应 ...
你没理解到真正原理。。这个只有逆过内核或者看过微软的开源内核源码WRK的才知道。

WRK源码一直到WIN10内核处理的时候
最后都是 *ReturnLength = sizeof(HANDLE), 而所有反调试插件都是直接把这个参数置0,而参数三(processInformation)和参数五(returnLength)为同一个地址时候,就可以检测出是否被插件处理了。

20120427 发表于 2017-11-3 21:30

本帖最后由 20120427 于 2017-11-3 21:32 编辑

检测调试器还是使用了 ZwQueryInformationProcess 查询调试对象, 正常情况下 最后一个参数ReturnLength应该返回4, 但是如果第三个参数ProcessInformation的值同时也是最后一个参数的值,就出现问题了。。。。。。。
而吾爱OD的驱动直接把第三个参数ProcessInformation的返回值赋值为0   这就导致最后一个参数ReturnLength变成0了
原来的: 不在ntdll.dll内存里的ZwQueryInformationProcess函数


被我修改后的:


运行后的:事实证明确实如此



{:1_918:} 你的检测方法已利用

xjun 发表于 2017-10-31 14:57

wekabc 发表于 2017-10-31 14:36
测试自己的反调试,SE的反调试就没必要开了吧

这个嘛,我加的se默认保护。 本只想用se壳 shadow下调用的api。

xjun 发表于 2017-10-29 22:29

本帖最后由 xjun 于 2017-10-29 22:33 编辑

OD确实有个别人改版的 伪调试插件叫做naiheqiao,伪调试原理是不走的正常调试流程的。
如果你不是用的伪调试方法,或者挂起线程啊,修改程序流程之类的,那我只能膜拜了。
https://github.com/stonedreamforest/NaiHeQiao

魔弑神 发表于 2017-10-29 22:07

遇强则强 还是能过的

xie83544109 发表于 2017-10-29 17:11

{:1_909:}
其实,偶到是更想知道方法

65302666 发表于 2017-10-29 19:04

VT····················

fghtiger 发表于 2017-10-29 19:35

附加也不行,也被检测到。

怀念在深秋 发表于 2017-10-29 22:08

魔弑神 发表于 2017-10-29 22:07
遇强则强 还是能过的

用的什么插件啊

zbnysjwsnd8 发表于 2017-10-29 22:12

魔弑神 发表于 2017-10-29 22:07
遇强则强 还是能过的

你是怎么做到的

魔弑神 发表于 2017-10-29 22:22

zbnysjwsnd8 发表于 2017-10-29 22:12
你是怎么做到的

我并不是挂起线程 你可以配置插件 还是能过的

zbnysjwsnd8 发表于 2017-10-29 22:23

魔弑神 发表于 2017-10-29 22:22
我并不是挂起线程 你可以配置插件 还是能过的

插件反调试全都关了吗
页: [1] 2 3 4 5 6
查看完整版本: XAntiDebug2 ( 终极反调试 )