AppInit_DLLs 加入自己的dll后HOOK问题请教

nmgwddj 2013-06-26 07:26:59
自己写了个dll在学习HOOK和dll注入,当我从桌面运行一个记事本程序的时候,user32.dll会检查AppInit_DLLs下的字符串并加载字符串中的dll,但是我发现启动完的记事本无法屏蔽键盘输入内容,有的时候还回卡死,请教各位是什么问题,谢谢。dll的代码如下:


#include <Windows.h>

HHOOK g_hKeyboard = NULL;

LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
return 1;
}

void SetHook()
{
g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc,
GetModuleHandle("MyDLL"),
GetCurrentThreadId());
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
SetHook();
}
}
...全文
230 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmgwddj 2013-06-28
  • 打赏
  • 举报
回复
引用 5 楼 yiyefangzhou24 的回复:
楼主应该仔细研究SetWindowsHookEx这个函数,楼主都Hook的原理理解的并不是很清楚,理论上不会出现你说的情况
多谢多谢,我一定细心学习,再翻翻HOOK方面的资料。
yiyefangzhou24 2013-06-27
  • 打赏
  • 举报
回复
yiyefangzhou24 2013-06-27
  • 打赏
  • 举报
回复
楼主应该仔细研究SetWindowsHookEx这个函数,楼主都Hook的原理理解的并不是很清楚,理论上不会出现你说的情况
nmgwddj 2013-06-27
  • 打赏
  • 举报
回复
研究到现在,在搞HOOK注入dll的方式,成功了,但是不知道如何让dll常驻系统某进程下。 我单独写的exe来调用dll中的SetHook方法结束后,程序退出了,dll也从被hook的进程中消失了。。 如何让dll在我的调用程序结束后依然可以常驻被hook的进程中?请教各位,谢谢。
nmgwddj 2013-06-27
  • 打赏
  • 举报
回复
引用 3 楼 yiyefangzhou24 的回复:
可以参考这个http://blog.csdn.net/yiyefangzhou24/article/details/6255636
感谢参与,看了您的例子学习到很多东西,但是还是没有接触一楼的疑惑。 另外您的代码当在注入程序结束的时候,hook也一样没有了。如何让dll常驻被hook的进程中?
nmgwddj 2013-06-26
  • 打赏
  • 举报
回复
用ProcessExplorer查看发现notepad.exe进程下有我的dll,但是一会消失一会存在的,难道是这个hook过程完毕了,dll就自动退出了?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧