稳定的内存dll注入模块

易语言 2020-07-24 21:21:40

稳定的内存dll注入模块

本例程演示内存DLL注入模块的功能和调用方法。
例程的主要内容为运行一个记事本程序 并将已经写好的测试DLL从内存里注入到记事本进程里。

.如果真 (是否已注入 () 或 DLL数据 = { } 或 进程句柄 = 0)
返回 (0)
.如果真结束
' 将内存中的DLL写到目标进程
DataAddr = 写入内存数据_ (进程句柄, DLL数据)
.如果真 (DataAddr = 0)
返回 (0)
.如果真结束
' 把加载函数写到目标进程
LoadAddr = 写入内存数据_ (进程句柄, #load_code + #getaddr_code + #free_code)
.如果真 (LoadAddr = 0)
释放内存_ (进程句柄, DataAddr)
重载变量 ()
返回 (0)
.如果真结束
GetAddr = LoadAddr + 2143 ' 2143 = 取字节集长度(#load_code)
FreeAddr = GetAddr + 277 ' 277 = 取字节集长度(#getaddr_code)
hModule = 启动线程_Ret (进程句柄, LoadAddr, DataAddr)
.如果真 (hModule = 0)
释放内存_ (进程句柄, LoadAddr)
释放内存_ (进程句柄, DataAddr)
重载变量 ()
返回 (0)
.如果真结束
DuplicateHandle (-1, 进程句柄, -1, hProcess, 0, 0, 2) ' 复制句柄
返回 (hModule)