首页
社区
课程
招聘
[原创]无需偷代码的API HOOK
发表于: 2013-5-1 00:45 28295

[原创]无需偷代码的API HOOK

2013-5-1 00:45
28295
收藏
免费 6
支持
分享
最新回复 (61)
雪    币: 136
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
26
18楼的代码我同步了线程   所以不会发生你说的这种情况
2013-5-1 19:57
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
27
我并没有说你什么不对,只是一起讨论,既然你发代码了 就是要应对大家所有的问题? 并不是攻击你 首先态度要放端正,你看我发的检测od+sod  老V指点我 他提出的问题 我是怎么回复的? 别人指出你的不足 应该接受,并且接下来 再讨论解决方案
2013-5-1 19:57
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
28
哥们 我们是想给你的这个打造成引擎 也就是说 无论怎么折腾,hook这部分是不能出现问题的,你那样序列化不好吧,起码大家一起跑 都没有问题啊
2013-5-1 20:00
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
29
当然 如果只是作为一个特例,那就无所谓了。看你怎么定位,还有难道我们真的是想要你代码吗?我们能提出这些问题,难道都没有解决方案吗?其实我们提出的 都是工作上经常碰到的问题而已,算了不提了。说多了,变味了
2013-5-1 20:01
0
雪    币: 136
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
30
其实我平时一直用C++写程序  这个用C写是为了让大家更容易看懂
如果打造成引擎的话  把那几个函数封装到类  把那个全局变量作为类成员变量
如 CHook HookMessageBox;
这样每实例化一个成员,都有一个记录是否Hook的信息 这样就可以避免序列化了  
我并非无法接受批评,只是对那些把简单的事情复杂化那种想法有点无法认同
2013-5-1 20:08
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
31
楼主,你的设计方案是不是一定要做等待排队,如waitforxxx??
2013-5-1 20:29
0
雪    币: 136
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
32
这是为了解决线程同步问题  当然如果你有更好的思路可以分享  其实我这个方法能解决代码校验问题   如TP原本hook了一个内核函数  并在他的函数里检测 内核函数头部的跳转是否跳转他的函数    这样我的方法就有用了
2013-5-1 20:47
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
33
你自己写的程序 这么HOOK没问题
别人给你个程序 比如某个网游 叫你HOOK一下ws2_32.send
你这么搞 还能用?
2013-5-1 20:48
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
34
本身修改可执行代码的操作就不是原子操作,在HOOK的过程中就有可能会挂掉,多线程的问题,不解释
你在处理HOOK的过程中还要频繁去修改被挂钩函数的代码,这样太不稳定。
理论实验和真正的工程实践完全是两个东西
非常简单的一个测试办法就是,你把你的这个HOOK方式 写一个HOOK Send函数的HOOK 然后注入到一个网络游戏里面
保证你崩倒High,N年前调试游戏的时候为了图省事就用过一个你的这种思路的HOOK引擎,结果就是各种踩地雷式的崩溃,最后排查各种问题发现是这个恢复HOOK的问题
2013-5-1 20:48
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
35
所以我才觉得是楼主是不是想歪了。还很牛B的样子
2013-5-1 20:56
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
drx + idt 万岁……不需要修改代码
2013-5-1 21:04
0
雪    币: 136
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
37
那是网游的代码 你完全没法控制下面会发生什么情况   即使是偷代码 你能保证改了要hook函数头部的一个byte之后  人家不会执行那个函数?   要完全稳定你最好吧系统重写一边    照你这种想法那就iathook吧   稳定  不改代码
2013-5-1 21:14
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
38
问题是你这个只能HOOK自己写的代码啊。这实用性想不到体现在哪,就像上楼exile说的那样。

这个就是真相,感觉没讨论的空间了。
2013-5-1 21:17
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
39
理论研究与工程实践是完全两个不同的东西
你这个只适合已经确认是单线程环境的进程或者是HOOK自己进程的代码,不具备普遍应用的意义
2013-5-1 22:11
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
40
可是DRX只支持4个断点啊~
2013-5-1 22:13
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
请问楼主你的代码可以hook这类线程同步函数么
2013-5-1 22:15
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
crc多的地方用drx + idt crc弱的地方用int3 +idt……
2013-5-1 22:55
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
43
只要在进程初始化的时候HOOK一下,总比你不停的去写函数头安全,你这个没有一点应用价值
2013-5-2 09:50
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
44
zhouws,你怎么参与到这种XXXX问题的讨论了,这种问题只有Mj0011来参与,才会有看头。
2013-5-2 13:13
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
45
有点强迫症。-.-
2013-5-2 14:06
0
雪    币: 92
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
46
坐看大神们讨论,顺便学习了~
2013-5-3 01:35
0
雪    币: 85
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
47
额。。。我想使用楼主的这种方法在多线程程序中HOOK Waitxxxobject函数。怎么办呢?
2013-5-3 08:59
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
48
这东西,完全不能用
多线程环境下,肯定会出问题,要么 是同步问题,要么是漏hook问题
你没有考虑多线程环境下。你这个只适合单线程环境、

你可以参考一下我的hook库
http://bbs.pediy.com/showthread.php?t=154721
2013-5-3 12:35
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
49
现在,很多程序员,跟本不知道线程同步那点事,需要同步的地方,偏不同步。。。
还有程序员,知道同步的事太多了,不需要同步的地方,确弄个同步。

问:ssdt hook需要多线程同步不?

答案1:需要同步,因为多cpu,多线程环境下,访问同一变量,不同步容易出错,网上这么讲的,而且基本上所有代码都同步了,没见不同步的人。

答案2:不需要同步,因为ssdt 表是一定是8字节对齐,而读写ssdt表是以四字节为单位,在32位cpu下,每次对ssdt表项的读写,其实是锁定的,这个跟cpu和内存读写方式有关,写ssdt表项的时候,因为是ssdt表项一定是4字节对齐,且每项大小为4字节,cpu正在读入到一个寄存器里面,有的电脑数据位宽为64位,有的是32位,无论哪种(只要不是16)位,一次写入时,4个字节会全部写入,不存在先写入一部分,被其它线程打断的情况,这意味着,这个ssdt表项写入过程不可能被打断,所以不需要程序员处理同步问题。

你觉得上面的答案哪个对?
2013-5-3 12:47
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
50
这贴子,居然是优秀?
2013-5-3 12:52
0
游客
登录 | 注册 方可回帖
返回
//