能力值:
( LV2,RANK:10 )
|
-
-
2 楼
那除过堆栈平衡之外,哪里还会出错? 我也是遇到问题,第一看堆栈,但是堆栈没有任何问题了,还是会崩溃。。。找不到问题,到现在还放着没管
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
呵呵 这种事常有哦 有没对比所有寄存器的变换 堆栈没问题可能是函数类型 参数类型 不一致。
|
能力值:
( LV4,RANK:40 )
|
-
-
4 楼
1 你的函数里面非法内存访问也会导致挂掉
2 hook的时机不对
|
能力值:
( LV6,RANK:80 )
|
-
-
5 楼
多线程得挂起,再hook
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
顶 楼上两位 , 一看就经验丰富, 或者说也被坑过
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
函数参数其实不一定要一模一样吧。。。不过要用汇编写,用汇编[ebp + 8]这样去访问也可以的,只是根据编译器的不同而编译的不同的话,代码可移植性就差。而我的问题是我访问参数成功了,我hook的是send函数,然后将截获到的发包数据显示,这功能都成功了。。。最后蹦了。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
这个倒是未考虑到 。 不懂得如何挂起其他线程。。。 求指教
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
补充一下来自高手taker的指点:
“很少用Detours,具体细节不太了解。不过在HOOK的时候,如果是自己写代码而没有用Detours的话,记得带上反汇编引擎去算被HOOK命令的长度,否则会出现同样的HOOK函数 有时候崩有时候不崩的情况(之前针对该问题测试过DeTours,发现DeTours里有反汇编引擎处理了指令长度)
还有就是注意寄存器。由于对DeTours不了解,不知道在HOOK后它有没有其他的包装,如果有的话 那么就有可能破坏寄存器(VS2010起大部分函数调用都会更多的使用寄存器而非纯堆栈。OBJECTIV C写的代码也是 大部分使用REG,反正这个是由编译器决定的)。最好是使用nake函数。避免普通函数构造EBP/ESP框架破坏堆栈,并自己的函数头上PUSHAD PUSHFD,尾上POPFD POPAD。在代码中堆栈操作部分加上0x28就可以了。但这样就不能构造函数内局部变量。除非你自己手工维护堆栈。”
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
这里有一个简单的C++ 封装 APIHook;
对于一般的挂钩,由于线程的并发性而出现的挂钩失败的机会还是比较少的,几乎可以忽略,除非被挂钩的那段代码被频繁的执行(比如像图形渲染等死循环执行的线程所执行的代码),那么挂钩时崩溃的机会多一些。但如果是在系统内核挂钩的话,那么这个问题绝对要避免
|
能力值:
( LV6,RANK:90 )
|
-
-
11 楼
我这里也有个封包截取程序老是崩溃。。不知道原因,感觉很无力。。。
|
|
|