to azuo_lee: 你一下问了这么多问题.我也很难回答,因为我是在网上得到的一段代码,经过我调试成功了.我目前还没有注意到在所有进程中调试,我的程序也不需要作到这个功能.应该是在本进程中HOOK吧.让你失望了.呵呵.但是我看了<<WINDOWS核心编程>>里的例子,它写的很详细.
to verybigbug(): VerifyScreenSavePwd()是在password.cpl里的一个未公开的API.在带有密码的屏保运行时,按任意键弹出一个要求你输入密码的对话框,这就是这个函数的功能.我的意思是,我想截获这个对话框,即用自己的对话框来验证密码.那么就要HOOK这个函数.但是我在调试时发现,在我的进程中无法得到password.cpl这个描述符.在HOOK时需要扫描IMPORTED的dll,但是我的进程中无法把PASSWORD.CPL注入.(有些术语可能不是很准确.)
你的MyMessageBox函数???
大侠,我好激动,好佩服你,我感激.我我我,我都不知道说什么了.
一定给你送分.谢谢.
对了,这是为什么呀?还有,您能解答第2个问题吗?是不是可以HOOK任何的WINDOWS API?
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下找到用中断实现的方案,还没完成呢。
在password.cpl 有一个VerifyScreenSave
---〉不要告诉我你是用于不法目的
。
。
。
。
。
你真的Hook成功了?而且是在95/98环境下?我想请教几个问题:
1. 你Hook用的是什么思想?动态修改原来USER32的内存映像?是直接修改代码段还是修改引出表?
2。如果是直接修改码段,你是如何修改的?95/98下VirtualProtect函数不能正常工作啊?
3。如果是修改引出表,那么在你修改之前加载的程序将不会被Hook到,你是如何处理的?
4。你用什么办法把自己的Hook函数所在的DLL注入到所有进程(注意,是所有,所有调用MessageBox函数的进程,包括已经运行的和将要运行的、GUI界面的和控制台的)的地址空间的?简单的SetWindowsHook函数似乎不足以完成此重任啊?
5。千万不要告诉我你只是在本进程的范围内Hook了一个API,那样我就全白问了……
我不知道,也不知道什么时候进行Hook!!
我的Hook程序是针对单个程序进行Hook的.
目的是只跟踪我希望跟踪的程序....
VerifyScreenSavePwd()是在password.cpl里的一个未公开的API.在带有密码的屏保运行时,按任意键弹出一个要求你输入密码的对话框,这就是这个函数的功能.我的意思是,我想截获这个对话框,即用自己的对话框来验证密码.那么就要HOOK这个函数.但是我在调试时发现,在我的进程中无法得到password.cpl这个描述符.在HOOK时需要扫描IMPORTED的dll,但是我的进程中无法把PASSWORD.CPL注入.(有些术语可能不是很准确.)