首页
社区
课程
招聘
[原创]<<游戏外挂攻防艺术>>Hook虚表
2013-3-7 13:23 25280

[原创]<<游戏外挂攻防艺术>>Hook虚表

2013-3-7 13:23
25280
亲,我认为给一个虚函数的序号,然后,把虚表对应位置替换成jmp,这样单个hook,不是上策。
首先,序号可能会因软件版本而变化,你的hook就失效了,不能取得一劳永逸的效果。
第二,对应某个对象,如果其虚函数对应的序号不知道的情况下,你如何监控到它,这就需要你去调试。

我在<<游戏外挂攻防艺术>>里面对于虚表hook这块有一个比较好的方案。
就是采用模糊长度的假虚表来替换真虚表的方案,这样能做到监控任意虚函数的调用,一劳永逸。
下面是附图:


统一的监控函数,不仅可以看到调用顺序,而且,可以做差异分析,比如一个动作引发一个调用顺序,执行另外一个动作的时候
有一个不同的调用顺序,对两次调用顺序做差异分析,可以看出,两次动作特有的虚函数调用,和不同的虚函数调用。

这幅图,让我想起了老子<<道德经>>里面说的“道生一,一生二。。。。”和“负阴抱阳”,你看呢?

[培训]《安卓高级研修班(网课)》月薪三万计划

上传的附件:
收藏
点赞2
打赏
分享
最新回复 (11)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
辉煌世纪 2013-3-7 15:49
2
0
那么爱发 就把全书发出来
我就退款不用买了
雪    币: 585
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
promsied 4 2013-3-7 16:19
3
0
Talk is cheap. Show me the code.
雪    币: 8820
活跃值: (2364)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
cvcvxk 10 2013-3-7 17:01
4
0
虚表hook说白了其实就是修改类内的那个table的定义,但是table本身在pe的段里,于是传说中动态HASH CHECK直接完败此物~~Call Stack检测其实主要是针对某些call做的,不是所有的call都有~~
雪    币: 593
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
evilkis 7 2013-3-7 17:16
5
0
这是水贴么.....
雪    币: 355
活跃值: (2593)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2013-3-7 23:32
6
0
全call到自己的一个函数,根据ret地址判断是第几个函数被call,是这样吗?

之前hook掉整个vm_hanlder表,vmp是1个表,tmd是几个表,哪个hanlder被调用都可以知道
雪    币: 81550
活跃值: (198063)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2013-3-11 13:59
7
0
Thanks for shrae.
雪    币: 107
活跃值: (311)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Fido 2013-3-11 14:20
8
0
小鸡弟弟完爆...........bingo.........
雪    币: 255
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 1 2013-3-11 16:59
9
0
说白了,就相当于是把Inline内联汇编Hook,替换成了Table函数表篡改Hook,是这样吗?LZ?
这让我想起了当初学驱动的时候,Inline  Hook和SSDT  Hook之间的区别,呵呵
雪    币: 255
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 1 2013-3-11 17:10
10
0
的确,虚函数表Table跟IAT,EAT一样,也是在pe的Section里面,篡改PE结构,将会被一个MD5,校验和之类的Check直接秒杀...
雪    币: 30
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
又迟到了 2013-3-12 16:36
11
0
mark!!
雪    币: 265
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
omni 2013-6-27 15:35
12
0
看来像获得认可,很不容易的,楼主加油
游客
登录 | 注册 方可回帖
返回