首页
社区
课程
招聘
[讨论]关于安全HOOK
发表于: 2013-6-26 01:41 5019

[讨论]关于安全HOOK

2013-6-26 01:41
5019
关于安全HOOK
我inline HOOK memcpy函数 因为此函数调用非常频繁 所以我只简单跳转然后跳回去执行 这样没有问题 但是我处理了就容易让游戏崩溃 代码加的越多越崩溃
如何才能安全HOOK 按理加的代码多了 只会执行慢点 不至于崩溃啊

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1275
活跃值: (6482)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
对于这种提问,我一般表示无语,真该多去看看提问的智慧。怎么样明确提问,需要给出什么信息。。连个HOOK的代码都不贴,鬼知道你是怎么HOOK的???浪费大家的时间和别人的时间。。。。
2013-6-26 07:10
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不加入条件判断?什么都处理当然!
2013-6-26 07:35
0
雪    币: 1839
活跃值: (310)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
4
对 memcpy的size做处理,必须的,size也许太大导致了异常崩溃
2013-6-26 09:04
0
雪    币: 932
活跃值: (2606)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可能是重入问题 你自己的代码也可能用到memcpy
2013-6-26 10:00
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
6
安全HOOK 需要考虑多核问题!如果你在设置inline hook而正修改其中部分字节数据时,有其他线程正好经过此处,则经过的线程就会执行了被破坏的CPU指令而导致进程或系统崩溃。我们怎么解决这个问题呢?先来看看这个指令:

CODE_000:
            _asm jmp CODE_000;//这句汇编指令被编译后,应该是连接成了2个字节的机器码。
CODE_001:
            .......

我们在下钩子的时候,先让自己的线程占用CPU,然后把前面的2字节机器码植入被下钩子的地方,这时就算有其他CPU线程进入这里,也只能一直重复执行_asm jmp CODE_000;而我们设置HOOK的线程就可以继续修改后面的字节数据,最后在修改 _asm jmp CODE_000 对应的2字节数据,这样一来就会进入 安全的HOOK。

这种安全HOOK我还没有测试过,但是我想理论上是可行的。
2013-6-27 16:36
0
游客
登录 | 注册 方可回帖
返回