Dll注入技术之消息钩子
来源:互联网 发布:小智外设店 淘宝 编辑:程序博客网 时间:2024/05/14 21:21
DLL注入技术之消息钩子注入
消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个特性,我们可以将DLL注入到指定进程中。主要流程如下图所示
1.准备阶段
需要编写一个DLL,并且显式导出MyMessageProc()函数,主要代码如下:
- LRESULT WINAPI MyMessageProc(int code,WPARAM wParam,LPARAM lParam)
- {
- return CallNextHookEx(NULL, code, wParam, lParam);
- }
显示导出某个函数需要在.def文件中的EXPORTS填写MyMessageProc(),如下图所示:
2.HOOK阶段
使用SetWindowsHookEx()之前首先需要将HOOK的DLL 加载到本身的进程中,以此得到DLL的模块句柄,再使用GetProcAddress()得到DLL中显示导出的函数MyMessageProc()的函数地址,最后遍历出待注入进程的线程ID,这样SetWindowsHookEx()就可以利用这些参数进行HOOK了。主要代码如下图所示:
- //加载DLL到本身进程
- hMod = LoadLibrary(pDllName);
- if(!hMod) return FALSE;
- //得到显示函数的地址
- lpFunc = (DWORD)GetProcAddress(hMod, "MyMessageProc");
- if(!lpFunc)
- {
- if(hMod) FreeLibrary(hMod);
- return FALSE;
- }
- //得到待注入EXE的进程ID
- dwProcessId = GetProcessId(pExeName);
- if(!dwProcessId)
- {
- if(hMod) FreeLibrary(hMod);
- return FALSE;
- }
- //得到待注入EXE的线程ID
- dwThreadId = GetThreadId(dwProcessId);
- if(!dwThreadId)
- {
- if(hMod) FreeLibrary(hMod);
- return FALSE;
- }
- //利用HOOK进行注入
- hhook = SetWindowsHookEx(
- WH_GETMESSAGE,//WH_KEYBOARD,//WH_CALLWNDPROC,
- (HOOKPROC)lpFunc,
- hMod,
- dwThreadId);
3.释放阶段
利用LoadLibrary()得到的模块句柄把本身进程的DLL释放掉,代码如下所示:
- if(hMod) FreeLibrary(hMod);
0 0
- DLL注入技术之消息钩子注入
- DLL注入技术之消息钩子注入
- DLL注入技术之消息钩子注入
- DLL注入技术之消息钩子注入
- Dll注入技术之消息钩子
- Dll注入技术之消息钩子
- Dll注入技术之消息钩子
- DLL注入--设置消息钩子
- VC dll 注入之钩子注入
- 安装全局消息钩子实现dll窗体程序注入
- 钩子DLL注入
- 函数钩子-Dll注入
- Anti 消息钩子注入
- 消息钩子注入示例
- DLL注入技术之远线程注入
- DLL注入技术之APC注入
- DLL注入技术之REG注入
- DLL注入技术之ComRes注入
- 在Dephi中使用TStream读写数据的技巧
- DLL注入技术之劫持进程创建注入
- JavaScript实现的网页放大镜效果
- Dll注入技术之输入法注入
- Experimental Educational Round: VolBIT Formulas Blitz(F)排列组合
- Dll注入技术之消息钩子
- Dll注入技术之ComRes注入
- Edu CF #R8(ABC)
- Dll注入技术之注册表注入
- Experimental Educational Round: VolBIT Formulas Blitz(J)打表找规律
- 1007. Maximum Subsequence Sum (25)
- OpenJudge百炼习题解答(C++)--题4109:公共朋友-Common Friends
- hdu 3001 Travelling 状压dp
- JQuery学习—JQuery的Validform学习