能力值:
( LV2,RANK:10 )
|
-
-
2 楼
是用Delphi搞的HOOK吗?好像C++的资料要多点吧?应该都是相通的,你可以看看C++方面的做法是怎么样的。做个标记等高手来了好好学习了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
嗯,我不知道是不是 inline hook的先天不足 还是我的程序本身有bug
我hook的是系统调用非常频繁的,如user32.dll中的GetWindowText
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
把主要代码贴出来就知道了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
inline的确不好控制。。。。容易出问题
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
召唤达人。。。。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
没看到的inline Hook时的动作,只看到Hook以后的动作,HookCode里面的代码才是重点。
但是根据你提供的代码推测,应该是存在问题。
你inline Hook以后,没有还原inline Hook掉的几个字节,就直接调OldGetCursorPos,这样最终结果还是调了HookGetCursorPos,也就是递归调用,最终堆栈溢出。当然如果你是根据API函数前几个字节的mov edi, edi来修改,那就另当别论了。
至于是不是我推测的原因,你可以自己写一个程序,第一句MessageBox以便钩子注入,第二句GetCursorPos,不出意外程序就挂了。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
感谢楼上的兄弟,我是抄袭的人家的这个代码,有链接的
这个是不需要恢复原有api,不需要inline hook了才恢复api。。。。网上有人说这是多线程版本的APIHOOK,呵呵
共同学习下这个代码,挺不错的东西
http://bbs.pediy.com/showthread.php?t=63986
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
如果你的这个apihook会自动拷贝头部的代码,那么或许就不是我想的原因了。
不过既然你要调试,那么只要有找出问题的可能性,都可以试试。你可以先写一个MessageBox+GetCursorPos的程序试试会不会挂掉。
如果其他程序都没有问题,那么在DllMain里面GetModuleHandle判断一下是否是Explorer.exe,如果是的话,再做apihook,并在你的HookProc第一句写一个DebugBreak或者内联汇编int 3,这样程序会运行出错,然后用的项目去附加调试,继续跟踪下面的代码。能调试总会找出问题所在的,祝你好运!
|
|
|