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

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

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

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


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

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

[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

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

之前hook掉整个vm_hanlder表,vmp是1个表,tmd是几个表,哪个hanlder被调用都可以知道
雪    币: 35843
活跃值: 活跃值 (153788)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 活跃值 2013-3-11 13:59
7
0
Thanks for shrae.
雪    币: 113
活跃值: 活跃值 (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Fido 活跃值 2013-3-11 14:20
8
0
小鸡弟弟完爆...........bingo.........
雪    币: 255
活跃值: 活跃值 (18)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 活跃值 1 2013-3-11 16:59
9
0
说白了,就相当于是把Inline内联汇编Hook,替换成了Table函数表篡改Hook,是这样吗?LZ?
这让我想起了当初学驱动的时候,Inline  Hook和SSDT  Hook之间的区别,呵呵
雪    币: 255
活跃值: 活跃值 (18)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 活跃值 1 2013-3-11 17:10