欢迎到http://www.csdn.net/expert/topic/167/167173.shtm 
有问题,解决的人可能是你,谢谢,大哥,大姐

解决方案 »

  1.   

    有没有加WINAPI呀?
    你的MyMessageBox函数???
      

  2.   

    to verybigbug(): 大侠,我算服了你了.你说的一点没错!!!!!!我一试果然成功!!!!
    大侠,我好激动,好佩服你,我感激.我我我,我都不知道说什么了.
    一定给你送分.谢谢.
    对了,这是为什么呀?还有,您能解答第2个问题吗?是不是可以HOOK任何的WINDOWS API?
      

  3.   

    监视函数必须和原函数的定义一致!!!--基本要求
    Hook任何的WINDOWS API??
    在DllMain里写的函数就不可以。
    另外,你知道MessageBoxA实际上调用MessageBoxExA的,你能
    Hook它吗?    不能!!!!你最多只能Hook别人调用MessageBoxExA。
    不能Hook MessageBoxA中调用的MessageBoxExA!!!
    这种Hook Api的方法我早就做好了,最近修改了一下,你可以看看效果。
      verybigbug.home.chinaren.com的Api Function Spy另外想实现Hook 任何的WINDOWS API,可以参考微软的detours.
    我还在NT下找到用中断实现的方案,还没完成呢。
      

  4.   

    谢谢verybigbug().我知道你在这方面是高手,我请教一个具体问题:
       在password.cpl 有一个VerifyScreenSave
      

  5.   

    谢谢verybigbug.我知道在这方面你是高手.我想请教一个具体的问题.(WIN98下,不是NT)在WINDOWS\SYSTEM\下有个PASSWORD.CPL(实际是个DLL),它输出一个API: VerifyScreenSavePwd(HWND hParentWnd).它负责显示屏保密码验证的那个对话框.我现在想用自己的对话框替代,就想HOOK这个函数.你看能做到吗? 我HOOK MessageBox()时成功,但是HOOK该函数失败.我调试时发现是不能得到 IMPORTED DESCRITPION.我不知道为什么.请你帮帮忙,看看是什么问题呢?你能帮我测试一个HOOK这个函数吗?非常感谢.我在HOOK方面刚入门,请多多指导.
      

  6.   

    不要整天想作黑客,又没什么意义。作点有意义的工作吧。用自己的对话框替代的问题,很简单,Hook DialogMessageParam呀。
    ---〉不要告诉我你是用于不法目的





      

  7.   

    大哥,你别急,我敢用我的人格保证,我不是在做黑客或不法的事情.我只是在研究WINDOWS 98的各方面安全机制.请不要误会!
      

  8.   

    To dongdong530:
    你真的Hook成功了?而且是在95/98环境下?我想请教几个问题:
    1. 你Hook用的是什么思想?动态修改原来USER32的内存映像?是直接修改代码段还是修改引出表?
    2。如果是直接修改码段,你是如何修改的?95/98下VirtualProtect函数不能正常工作啊?
    3。如果是修改引出表,那么在你修改之前加载的程序将不会被Hook到,你是如何处理的?
    4。你用什么办法把自己的Hook函数所在的DLL注入到所有进程(注意,是所有,所有调用MessageBox函数的进程,包括已经运行的和将要运行的、GUI界面的和控制台的)的地址空间的?简单的SetWindowsHook函数似乎不足以完成此重任啊?
    5。千万不要告诉我你只是在本进程的范围内Hook了一个API,那样我就全白问了……
        
      

  9.   

    VerifyScreenSavePwd函数是什么时候调用的?
    我不知道,也不知道什么时候进行Hook!!
    我的Hook程序是针对单个程序进行Hook的.
    目的是只跟踪我希望跟踪的程序....
      

  10.   

    to azuo_lee: 你一下问了这么多问题.我也很难回答,因为我是在网上得到的一段代码,经过我调试成功了.我目前还没有注意到在所有进程中调试,我的程序也不需要作到这个功能.应该是在本进程中HOOK吧.让你失望了.呵呵.但是我看了<<WINDOWS核心编程>>里的例子,它写的很详细.
      

  11.   

    to verybigbug():
    VerifyScreenSavePwd()是在password.cpl里的一个未公开的API.在带有密码的屏保运行时,按任意键弹出一个要求你输入密码的对话框,这就是这个函数的功能.我的意思是,我想截获这个对话框,即用自己的对话框来验证密码.那么就要HOOK这个函数.但是我在调试时发现,在我的进程中无法得到password.cpl这个描述符.在HOOK时需要扫描IMPORTED的dll,但是我的进程中无法把PASSWORD.CPL注入.(有些术语可能不是很准确.)