DLL注入

DLL注入(DLL Injection) 是渗透其他进程的最简单有效的方法,借助DLL注入技术,可以钩取API、改进程序、修复BUG等。

DLL 注入

DLL注入指的是向运行中的其他进程强制插入特定的DLL文件。从技术细节来说,DLL注入命令其他进程自行调用LoadLibrary() API,加载用户指定的DLL文件。DLL注入与一般DLL加载的区别在于,加载的目标进程是其自身或其他进程。
被注入的DLL与其他加载到进程中的dll一样,拥有访问进程内存的(正当)权限,就可以实现任何想做的事了。

DLL(Dynamic Linked Library,动态链接库)

DLL被加载到进程后会自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载Dll时,添加的代码就会自然而然得到执行。利用该特性可修复程序bug,或向程序添加新功能。
DllMain()函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lobReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_DETACH:
break;
}
return true;
}

DLL注入方法

  1. 创建远程线程(CreateRemoteThread)
  2. 使用注册表(AppInit_DLLs)
  3. 消息钩取(SetWindowHookEx)

CreateRemoteThread

编写myhack.dll注入notepad.exe,实现联网下载https://wuuuudle.cn/index.html。

Myhack.cpp源码

1
2


文章目录
  1. 1. DLL 注入
  2. 2. DLL注入方法
    1. 2.1. CreateRemoteThread