首页
社区
课程
招聘
[原创]利用veh完成内存补丁功能,以躲避运行时内存检测
发表于: 2011-11-27 16:39 28339

[原创]利用veh完成内存补丁功能,以躲避运行时内存检测

2011-11-27 16:39
28339

这事缘起于dota,前几天和同学在某vx平台dota,被一开挂黑店虐得不行。一气之下也找来个war3的挂,想报仇雪恨。结果游戏刚启动就被平台踢出来了,看来偷懒是不行的了,网上google了一番,该平台的反外挂主要基于黑名单和运行时内存检测。

黑名单就不说了,运行时内存检测是比较致命的,因为开图必然要改程序流程,改流程免不了要打内存补丁,打了补丁又不想被发现也是有办法的,比如shadowwalk,这是刚学到的新名词,详见http://bbs.pediy.com/showthread.php?t=58896
该方法简述就是模块重载,让读取和执行分离开来,不过要做的工作实在太多,而且不稳定,总之我真心认为硬碰硬不是好办法,也不是长久之计。其实简单的改改流程不被发现可以用异常处理来做,很安全稳定。

先复习一下异常处理流程,在没有调试器的情况下,用户层异常的分发由KiUserExceptionDispatcher完成,其中再调用RtlDispatchException分发异常,RtlDispatchException中首先RtlCallVectoredExceptionHandlers执行veh,如果此异常被处理则不再继续分发,未处理则展开seh链依次RtlExecuteHandlerForException执行seh,同样的,如果被处理则不再分发,否则继续,如果都没有处理则进程崩溃。这么看来只要抢在游戏本身seh之前捕获并处理异常游戏肯定是不会发现的。

简单说下怎么做,AddVectoredExceptionHandler给进程装上一个向量异常处理handler,然后在将drx寄存器设置为要打补丁的位置,也就是在补丁位置下一个硬件执行断点,执行到此处时抛出单步异常,异常处理捕获异常,在handler里模拟补丁功能。异常处理函数被调用时会传进来线程context指针,所以可以干的事情很多很多,这里可以发挥一下想象力。

就拿war3来举例吧,游戏就不用调了,网上找个开图工具,开图进游戏,扫扫进程钩子可以发现游戏被patch了两个地方

0x6f361f7c  0x01 - 0x00
0x6f3a20dd  0x75 - 0xeb

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

上传的附件:
收藏
免费 8
支持
分享
最新回复 (24)
雪    币: 22
活跃值: (443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好帖要顶
2011-11-27 17:03
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
灰常不错的创意,不错的帖子
2011-11-27 17:09
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
过不了11平台,
检测的时候占用一下DRX或者清空一下DRX,就难了
2011-11-27 17:25
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
5
11平台没玩过,也不是真心想作弊,就一个思路,
要是这平台能把所以的作弊都封掉,那更好,本来开图就为个公平
2011-11-27 17:44
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
对了。。新手问个不该问的问题。。。怎么实现这个功能,
是不是还有一个开图的主程序
2011-11-27 18:53
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
7
把附件俩dll放war3目录下就行了
2011-11-27 18:55
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
WAR3启动会搜索目录下的mix asi等等后缀的文件,然后加载
2011-11-27 19:29
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
9
这个叼,以前真不知道,看来真的什么都不用改,扔个文件进去就行了
我去啊,太方便了
2011-11-27 19:44
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
10
好东东,不会打魔兽
2011-11-27 19:52
0
雪    币: 263
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
思路不错,又学了一招
2011-11-28 09:24
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
12
你都改导入表了,你还折腾这做啥?
2011-11-28 10:05
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习.............
2011-11-28 10:12
0
雪    币: 412
活跃值: (30)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
14
作弊真心没意思
求虐求侮辱求怀孕
2011-11-28 13:52
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
15
运行时代码校验只检测game.dll的text段,不检测导入表,当然还有别的方法让他加载,比如楼上exile说的
2011-11-28 14:11
0
雪    币: 334
活跃值: (78)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
思路不错, cheatengine也用这个思路来躲避检查
2011-11-28 14:11
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
17
求抱大腿 ....
2011-11-28 14:20
0
雪    币: 412
活跃值: (30)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
18
11平台你玩不?把你id给我,我加你一起玩.
2011-11-29 14:53
0
雪    币: 160
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
现在还玩DOTA的么,转行去玩LOL好了
2011-11-29 16:33
0
雪    币: 308
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
咱现在都玩LOL了。。
2011-11-29 18:12
0
雪    币: 93
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
好贴....
2011-11-30 13:40
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
22
这个方法已经被封了,今天被T出来了
2011-12-7 20:38
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这你M啊。。。。果然在这上面贴出来有风险啊。。。。
2011-12-13 20:23
0
雪    币: 142
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
24
妙哉.妙哉
2012-1-14 22:58
0
雪    币: 3544
活跃值: (3919)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
不错啊,还不会这招。
2021-7-15 20:32
0
游客
登录 | 注册 方可回帖
返回
//