Dll注入技术之消息钩子
来源:互联网 发布:linux 开机启动 编辑:程序博客网 时间:2024/05/17 01:44
转自:黑客反病毒
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);消息钩子注入只需要对SetWindowsHookEx()和DLL导出函数有深刻的认识就可以很容编写,所以代码简单,比较容易实现。
0 0
- DLL注入技术之消息钩子注入
- DLL注入技术之消息钩子注入
- DLL注入技术之消息钩子注入
- DLL注入技术之消息钩子注入
- Dll注入技术之消息钩子
- Dll注入技术之消息钩子
- Dll注入技术之消息钩子
- DLL注入--设置消息钩子
- VC dll 注入之钩子注入
- 安装全局消息钩子实现dll窗体程序注入
- 钩子DLL注入
- 函数钩子-Dll注入
- Anti 消息钩子注入
- 消息钩子注入示例
- DLL注入技术之远线程注入
- DLL注入技术之APC注入
- DLL注入技术之REG注入
- DLL注入技术之ComRes注入
- Dll注入技术之ComRes注入
- restlet中使用freemaker举例
- ZOJ 1489 2^x mod n = 1 数论
- Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
- [母函数]HDU 1709 The Balance
- Dll注入技术之消息钩子
- UVa 156 反语片
- hdu 4276 树形背包
- 85. 两个头脑往往比一个更好
- Dll注入技术之远程线程注入
- usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数
- Dll注入技术之依赖可信进程注入
- 86. 两个错误的结果可以是正确(也会更难修复)