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

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

2013-3-7 13:23
26184

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

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


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

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


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

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

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