首页
社区
课程
招聘
[求助]关于HS检测OD的问题(小弟不是伸手党,请大牛指点一二即可)
发表于: 2011-7-10 12:49 29127

[求助]关于HS检测OD的问题(小弟不是伸手党,请大牛指点一二即可)

2011-7-10 12:49
29127
韩国某游戏的HS,在HS运行时可以使用Xuetr,用Xuetr查看可知表面上此HS Inline Hook了NtClose、NtDeviceIoControlFile、NtOpenProcess、NtReadVirtualMemory、NtWriteVirtualMemory、KiAttachProcess、IopXxxControlFile、PsSuspendThread函数,以上函数全部属于ntoskrnl里面的,另外win32k里面也通过SSDT Hook钩挂了几个函数,不过全部都是为了防止抓取颜色的GDI函数,在此忽略。另外这个HS有一个系统回调,是CreateProcess回调,还有一个40ms一次的DPC定时器。
我已经ByPass掉刚才说得ntoskrnl中的8个函数,用Xuetr删掉CreateProcess回调和DPC定时器,发现HS不报告恶意软件,同时也不恢复回调和DPC定时器。但是,当OD打开后,在5-6分钟之后会出现发现恶意软件的提示,紧接着游戏关闭。用OD可以附加,附加了之后F9,也是几分钟之后报恶意软件。用隐藏进程的办法隐藏OD无效(Hook ZwQuerySystemIntormation方式的进程隐藏)。
所以判断可能有以下几点方式或者大牛们能有其他的想法:
1、该HS每隔一段时间扫描内存检测OD特征码。
2、该HS通过EPROCESS链判断进程。
3、该游戏内部有检测OD黑名单的机制。
4、该游戏HS里面存在没有ByPass的函数。
请大牛指点一二,觉得可能是哪里出得问题??谢谢了。!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (34)
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
2
把OD保护起来,不让他打开,读写,看看。再就是有个检查程序是否被调试的函数,忘了啥,论坛能搜索到
2011-7-10 14:22
0
雪    币: 7
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好的。我猥琐一下看看效果!!!
2011-7-10 14:28
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
4
我以前弄过NP,不过NP够猥琐了,打不开进程就报错,NP会启动前恢复相关打开进程函数,不知道HS会不会。。。
2011-7-10 14:41
0
雪    币: 7
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
那如果实在不行的话就只能用360那招Hook KiFastCallEntry了。。
2011-7-10 14:57
0
雪    币: 7
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
刚才调试发现OD附加后进程后暂停不动,5分钟后,一次F9直接重启。
如果OD只开着不附加也是5分钟,但是弹出提示。那么我觉得很可能不是R3的检测。而是R0的检测后通知R3的。
第一,如果R0检测不通知R3那可以直接重启。不需要非得等我F9之后在重启。
第二,如果R3检测的话,OD暂停(我忘记咱不暂停其他线程了,假设暂停进程),那检测应该是我F9之后的5分钟。而不是同时发生。
2011-7-10 15:06
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
7
如果OD只开着不附加也是5分钟,但是弹出提示。那么我觉得很可能不是R3的检测。而是R0的检测后通知R3的。
这有可能检测OD特征码,
刚才调试发现OD附加后进程后暂停不动,5分钟后,一次F9直接重启。
这有可能检测特征码的同时检测进程是否被调试。
防止打开进程,防止读取内存,防止打开文件,暂停相关线程,弄好了说下。
在就是 你HOOK NTOPENPROCESS 的时候要同时HOOK obj那个函数,等HS 启动后查看下 这两个函数是否被恢复。
2011-7-10 15:20
0
雪    币: 240
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
其实相当简单 想知道的话加我QQ 4 9 1 5 1 4 1 9 7
2011-7-11 12:31
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
9
检测的是OD的特征码~~~话说,修改OD的特征码,然后先开OD,然后断链隐藏OD~~~主要是R3扫描进程的~~不过扫描的pid是r0提供的~~ntopenprocess保护一下进程就行了~~
2011-7-11 17:03
0
雪    币: 158
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
V大美女~~~
2011-7-11 17:26
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
11
V校,这特征码我还真不明白怎么找,用啥工具呀。。。。。。
2011-7-11 17:42
0
雪    币: 38
活跃值: (526)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
V大已经说了,是ring3下扫描的,你在ring0下hook读取内存的函数不就行了。
其实你这样搞一下,在驱动下hook NtOpenProcess NtReadVirtualMemory 如果是od调用的话,你就绕过他的hook,如果是游戏调用的话,你看游戏是想open那个进程和想读哪个进程,如果是OD的话直接拦截!如果是别的程序,随它去。就这样。
2011-7-12 04:19
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
13
现在的主要的anti是TMD下的莫名其妙的硬断不能清除~
2011-7-12 21:40
0
雪    币: 240
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
其实我有简单地多的方法  楼主就是不理我
2011-7-12 22:26
0
雪    币: 240
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
韩国那个Ahnlab公司的产品,全是RING0检测特征码
2011-7-12 22:28
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
16
很遗憾的告诉你不是全R0,扫描OD的模块是纯R3的~~~~
很容易定位特征码~几秒钟就发现丫是固定offset读取xx字节出来比较的~
剩下的仁者见仁了~~
2011-7-13 01:19
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
17
很遗憾的告诉你不是全R0,扫描OD的模块是纯R3的~~~~
很容易定位特征码~几秒钟就发现丫是固定offset读取xx字节出来比较的~
剩下的仁者见仁了~~


"固定offset读取xx字节出来比较"
用这种方式来判断OD的特征码可靠吗?会不会有误判?
2011-7-13 03:51
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
在NtOpenProcess的时候如果把球传给别人是否会比简单的返回fail要好一些
2011-7-13 22:45
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
19
特征码很强大·~~~基本没见过误判~~
2011-7-14 00:20
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
20
这个很好~~
话说,另外就是据说某些hs会上传游戏进程里的DLL,和系统进程文件~~~你妹的云查杀啊~~~
2011-7-14 00:21
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
恢復ntopenprocess 等函數HS會有檢測,再掛勾的,DPC必須寫代碼清除掉,HS檢測OD需要使用SOD插件,白名單辦法來處理,SSDT表可以自己拷貝一份讓遊戲檢測,DEBUGGER清靈部分也是要處理的,好多哦,
2011-7-14 05:14
0
雪    币: 7
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
话说大家这么热心让我很是感动。我觉得吧。保住OD内存,禁止打开,禁止读写。这是其一;其二,EPROCESS要断,SCRSS句柄表要剔除,pspcidtable要断。debugport要移形换位。这是我这几天来纠结的结果。我估计这些做了,就差不多了吧。我是楼主,再次感谢大家的回帖。真是热心啊。
2011-7-15 06:33
0
雪    币: 7
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
HS里面几个Hook的函数ByPass就可以。DPC用XT直接删除。CreateProcess系统回调也是。他R0里也不检测自己的回调和DPC是不是让人给删了。于是保住OD进程就最重要了。另外就是DEBUGPORT这里要处理。要和SYSTEMTIME换下位置。主要是进程这里处理,不可以用SSDT HOOK。必须用inline,SSDT HOOK不是很保准(个人觉得会被检测)。另外可以干脆点直接干掉EPROCESS和PSPCIDTABLE以及SCRSS句柄表。我觉得可以选择简单的来。不知道对还是不对。
2011-7-15 06:37
0
雪    币: 112
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
OD 特征码??
2011-7-15 09:13
0
雪    币: 13
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
HS的内核调试你们能过么?就是WINDBG双机调试产生" 非法0x105"那个?
你们有思路没?
2011-7-15 16:36
0
游客
登录 | 注册 方可回帖
返回
//