• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

核心原理-第23章 DLL注入

核心原理 云涯 5年前 (2019-08-19) 1630次浏览 0个评论

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

23.1 DLL注入

DLL注入指的是向运行中的其他进程强制插入特定的DLL文件。DLL注入命令其他进程自动调用LoadLibrary(),加载用户指定的DLL文件。DLL注入与一般DLL加载区别在于,加载的目标进程是其自身或其他进程。

加载到其他进程中的DLL拥有访问目标进程内存的权限。

  • 获取目标进程的句柄

hProcess = OpenProcess(PROCESS_ALL_ACCESS , FALSE , dwPID)

调用OpenProcess(),借助程序运行时以参数形式传递过来的dwPID值,获取目标进程的句柄(PROCESS_ALL_ACCESS权限),得到权限后就可以使用获取的句柄(hProcess)控制目标进程。

  • 将要注入的DLL路径写入目标进程内存

pRemoteBuf = VirtualAllocEx(hProcess , NULL , dwBufiSize , MEM_COMMIT , PAGE_READWRITE)

需要把即将加载的DLL文件路径(字符串)告知目标进程,因为任何内存空间都无法进行写入操作,,因此现使用VirtualAllocEx()在目标进程的内存空间中分配一块缓存区,且指定该缓冲区的大小为DLL文件路径字符串的长度。

WriteProcessMemory(hProcess , pRemoteBuf , (LPVOID)szDllName , dwBufSize , NULL)

使用WriteProcessMemory()将DLL路径字符串写入分配所得缓冲区pRemoteBuf 地址。这个函数所写的内存空间也是hProcess句柄所指的目标进程的内存空间。这样DLL文件路径就被写入目标进程的内存空间了。

  • 获取LoadLibraryW()地址

hMod = GetModuleHandle(“kernel.dll”)


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:核心原理-第23章 DLL注入
喜欢 (0)

您必须 登录 才能发表评论!