对于Win2k + SP4的问题,我的解决方法是,在自己Hook的dll里初始化时,
HMODULE hMod = LoadLibrary("Aclayers.DLL");
if (hMod != NULL)
{
FreeLibrary(hMod);
}
经测试在XP和2k SP4下都可以Hook到CreateProcessA和CreateProcessW。我做了个测试,Hook了CreateProcessW和CreateProcessA,我的函数里是先弹出一个密码验证框,验证无误后再调用原系统的API CreateProcessA或CreateProcessW。在Explorer里对可执行文件的操作或其他程序里对API的调用都被Hook了,即会先要求验证。但是,当我直接双击mp3文件时,Winamp直接运行了(郁闷),于是我将mp3的默认播放程序设为Windows Media Player,这下对了,又被Hook了(又要求密码验证了),再设回Winamp,还是直接运行了。
是因为Winamp有反Hook CreateProcess的技术还是Winamp根本就没有通过CreateProcess调用?我用的API Hook方法是通过修改进程所有Module里的输入节信息,应该不存在多线程不安全的问题。按Windows核心编程一书作者的说法,这种方法应该是Windows下最好的API Hook方法。
望高手解答。谢谢!
HMODULE hMod = LoadLibrary("Aclayers.DLL");
if (hMod != NULL)
{
FreeLibrary(hMod);
}
经测试在XP和2k SP4下都可以Hook到CreateProcessA和CreateProcessW。我做了个测试,Hook了CreateProcessW和CreateProcessA,我的函数里是先弹出一个密码验证框,验证无误后再调用原系统的API CreateProcessA或CreateProcessW。在Explorer里对可执行文件的操作或其他程序里对API的调用都被Hook了,即会先要求验证。但是,当我直接双击mp3文件时,Winamp直接运行了(郁闷),于是我将mp3的默认播放程序设为Windows Media Player,这下对了,又被Hook了(又要求密码验证了),再设回Winamp,还是直接运行了。
是因为Winamp有反Hook CreateProcess的技术还是Winamp根本就没有通过CreateProcess调用?我用的API Hook方法是通过修改进程所有Module里的输入节信息,应该不存在多线程不安全的问题。按Windows核心编程一书作者的说法,这种方法应该是Windows下最好的API Hook方法。
望高手解答。谢谢!
解决方案 »
- sendmessage postmessage 的问题继续 力求解释~~~~标题要长。。。。。。。。。。。。。。。。。。。。。。
- 获取窗口的句柄后怎么模拟输入? 输入框的ID怎么找到?
- 在用QQ旋风下载时监听到下面FTP信息,怎么登陆不成功呢,难道有IP限制?
- 关于msvcrt.dll 的问题?
- 如何取得本程序中另一个对话框中控件的句柄
- 获取另外一个进程的list ctrl item text应该如何做?
- 创建并写入数据到Excel文件中的问题
- CRichEditCtrl怎么判断双击点的是哪张图片
- 调用API ExitWindowExt(EWX_POWEROFF,0)为何关不了机器?
- 新手求教,如何在MFC中函数调用结构体
- 使用过Access作为后台数据库的请进
- 在类方法中调用实例化方法为什么编译出错?
http://www.xfocus.net/articles/200405/696.html