能力值:
( LV5,RANK:60 )
|
-
-
26 楼
18楼的代码我同步了线程 所以不会发生你说的这种情况
|
能力值:
( LV6,RANK:90 )
|
-
-
27 楼
我并没有说你什么不对,只是一起讨论,既然你发代码了 就是要应对大家所有的问题? 并不是攻击你 首先态度要放端正,你看我发的检测od+sod 老V指点我 他提出的问题 我是怎么回复的? 别人指出你的不足 应该接受,并且接下来 再讨论解决方案
|
能力值:
( LV6,RANK:90 )
|
-
-
28 楼
哥们 我们是想给你的这个打造成引擎 也就是说 无论怎么折腾,hook这部分是不能出现问题的,你那样序列化不好吧,起码大家一起跑 都没有问题啊
|
能力值:
( LV6,RANK:90 )
|
-
-
29 楼
当然 如果只是作为一个特例,那就无所谓了。看你怎么定位,还有难道我们真的是想要你代码吗?我们能提出这些问题,难道都没有解决方案吗?其实我们提出的 都是工作上经常碰到的问题而已,算了不提了。说多了,变味了
|
能力值:
( LV5,RANK:60 )
|
-
-
30 楼
其实我平时一直用C++写程序 这个用C写是为了让大家更容易看懂
如果打造成引擎的话 把那几个函数封装到类 把那个全局变量作为类成员变量
如 CHook HookMessageBox;
这样每实例化一个成员,都有一个记录是否Hook的信息 这样就可以避免序列化了
我并非无法接受批评,只是对那些把简单的事情复杂化那种想法有点无法认同
|
能力值:
( LV8,RANK:120 )
|
-
-
31 楼
楼主,你的设计方案是不是一定要做等待排队,如waitforxxx??
|
能力值:
( LV5,RANK:60 )
|
-
-
32 楼
这是为了解决线程同步问题 当然如果你有更好的思路可以分享 其实我这个方法能解决代码校验问题 如TP原本hook了一个内核函数 并在他的函数里检测 内核函数头部的跳转是否跳转他的函数 这样我的方法就有用了
|
能力值:
( LV4,RANK:50 )
|
-
-
33 楼
你自己写的程序 这么HOOK没问题
别人给你个程序 比如某个网游 叫你HOOK一下ws2_32.send
你这么搞 还能用?
|
能力值:
( LV4,RANK:50 )
|
-
-
34 楼
本身修改可执行代码的操作就不是原子操作,在HOOK的过程中就有可能会挂掉,多线程的问题,不解释
你在处理HOOK的过程中还要频繁去修改被挂钩函数的代码,这样太不稳定。
理论实验和真正的工程实践完全是两个东西
非常简单的一个测试办法就是,你把你的这个HOOK方式 写一个HOOK Send函数的HOOK 然后注入到一个网络游戏里面
保证你崩倒High,N年前调试游戏的时候为了图省事就用过一个你的这种思路的HOOK引擎,结果就是各种踩地雷式的崩溃,最后排查各种问题发现是这个恢复HOOK的问题
|
能力值:
( LV8,RANK:120 )
|
-
-
35 楼
所以我才觉得是楼主是不是想歪了。还很牛B的样子
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
drx + idt 万岁……不需要修改代码
|
能力值:
( LV5,RANK:60 )
|
-
-
37 楼
那是网游的代码 你完全没法控制下面会发生什么情况 即使是偷代码 你能保证改了要hook函数头部的一个byte之后 人家不会执行那个函数? 要完全稳定你最好吧系统重写一边 照你这种想法那就iathook吧 稳定 不改代码
|
能力值:
( LV8,RANK:120 )
|
-
-
38 楼
问题是你这个只能HOOK自己写的代码啊。这实用性想不到体现在哪,就像上楼exile说的那样。
这个就是真相,感觉没讨论的空间了。
|
能力值:
( LV4,RANK:50 )
|
-
-
39 楼
理论研究与工程实践是完全两个不同的东西
你这个只适合已经确认是单线程环境的进程或者是HOOK自己进程的代码,不具备普遍应用的意义
|
能力值:
( LV4,RANK:50 )
|
-
-
40 楼
可是DRX只支持4个断点啊~
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
请问楼主你的代码可以hook这类线程同步函数么
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
crc多的地方用drx + idt crc弱的地方用int3 +idt……
|
能力值:
( LV4,RANK:50 )
|
-
-
43 楼
只要在进程初始化的时候HOOK一下,总比你不停的去写函数头安全,你这个没有一点应用价值
|
能力值:
( LV9,RANK:380 )
|
-
-
44 楼
|
能力值:
( LV8,RANK:120 )
|
-
-
45 楼
有点强迫症。-.-
|
能力值:
( LV6,RANK:90 )
|
-
-
46 楼
坐看大神们讨论,顺便学习了~
|
能力值:
( LV3,RANK:30 )
|
-
-
47 楼
额。。。我想使用楼主的这种方法在多线程程序中HOOK Waitxxxobject函数。怎么办呢?
|
能力值:
( LV8,RANK:130 )
|
-
-
48 楼
这东西,完全不能用
多线程环境下,肯定会出问题,要么 是同步问题,要么是漏hook问题
你没有考虑多线程环境下。你这个只适合单线程环境、
你可以参考一下我的hook库
http://bbs.pediy.com/showthread.php?t=154721
|
能力值:
( 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表项写入过程不可能被打断,所以不需要程序员处理同步问题。
你觉得上面的答案哪个对?
|
能力值:
( LV8,RANK:130 )
|
-
-
50 楼
这贴子,居然是优秀?
|
|
|