我照着例程写了个MessageBox的钩子。自己写的Loader里加的测试可以钩进去(A族和W族都可以)
系统用到MessageBox的比如记事本(目前好像只发现这个可以钩进去),但其它的(比如WORD,写字板等等)都不行,更头痛的是自己另写的一个用MessageBoxA和MessageBoxW的测试程序也都钩不进去。
哪位达人能不能说说看可能是什么问题啊。我装了卡巴后测试的时候已经把它暂停保护了。

解决方案 »

  1.   

    如果是user mode下的钩子, 远程注入到WORD, notepad进程了吗?
      

  2.   

    API钩子
    我是照着例程写的API钩子,一个DLL,包含了对MessageBoxW和MessageBoxA的重载,LOADER里面加的MessageBoxW和MessageBoxA可以正确的显示出替换的信息,notepad也可以。但其它的就行了,包括自己另写的的一个包含MessageBoxW和MessageBoxA调用的程序显示的还是原来的信息,不是替换的信息,类似于:
    DLL中定义的
    myMessageBoxW(...)
    {
    MessageBox(,,"MY",)
    }
    myMessageBoxA(...)
    {
    MessageBox(,,"MY",)
    }
    notepad钩住后用到MessageBox的时候显示
    MessageBox(,,MY",);
    但其它的程序包括自己写的测试程序显示:
    MessageBox(,,,,);
    也就是说其它的程序没有钩进去,但notepad显示的却是钩进去了,为什么有的程序钩进去了有的却不行呢?
      

  3.   

    小弟我自己整理的APIHook代码:http://waxb.blog.com.cn/archives/2007/APIHook3.shtml我试了下是可以拦截MessageBoxW和A的。
      

  4.   

    钩子需要被钩的程序加载USER32。DLL,否则钩不上。
      

  5.   

    linuxpgy(永远) 的是正解,已经解决了。
    谢谢啊,多看代码永远是最正确的方法。
      

  6.   

    2608.ys168.com 这是我的代码,有兴趣的话看看