好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 JoyChou 于 2013-6-9 17:03 编辑
注入思路:
1、打开目的进程(OpenProcss)
2、在目的进程的地址空间中申请一块dll完整路径长度 + sizeof(char)的地址(VirtualAllocEx)
3、在刚申请的目的进程的地址空间中,写入xxx.dll的完整路径(WriteProcessMermory)
4、获取LoadLibrary的地址
5、创建远程线程函数,达到LoadLibrary("xxx.dll")加载自己dll的功能(CreateRemoteThread)
卸载思路:
1、遍历目的进程的所有模块完整路径,和xxx.dll的完整路径比较
2、获取到当前模块的句柄
3、创建远程线程函数,达到FreeLibrary(hModule)
InLine Hook注意事项:
在定义类似下面这个函数的时候,如果不添加WINAPI函数调用方式,
在堆栈平衡的时候就会出错。
关于调用方式可以看下 http://hi.baidu.com/viarus_zxx/item/e6190f13a7b6abdc86ad4e77
原理就是恢复堆栈,返回到原来调用的地方。
[C++] 纯文本查看 复制代码 int /*WINAPI*/ MyMessageBox( HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType )
{
MsgHook.UnHook();
MessageBox(NULL, "现在可以调用了", "结果", MB_OK);
MessageBox(hWnd, lpText, lpCaption, uType);
MsgHook.ReHook();
__asm
{
pop edi
pop esi
pop ebx
add esp, 0x40 //release版本注释掉这句话
pop ebp
ret 0x10 //4个参数(4*4)根据函数的具体参数而定
}
return 0;
}
Hook CreateProcessW原理:
用InlineHook Hook掉CreateProcessW函数(写在dll)
我们用dll注入工具,注入到Explorer.exe桌面进程
这样,当我们打开noteapd,calc等程序explorer进程都会创建notepad等子进程,explorer是其父进程,
可以用process explorer软件查看,然后都会执行我们自己定义的函数
代码见附件,DLL注入是VS08的工程,HookCreateProcessWDll是VC6的工程
附件1:
Dll注入.rar
(66.37 KB, 下载次数: 84)
附件2:
HookCreateProcessWDll.rar
(10.79 KB, 下载次数: 72)
PS:菜鸟记录InLineHook以及远程线程注入(纯属YY),无任何实际意义。XP测试成功。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|