- 使用RWX权限打开目标进程,并为该DLL分配足够大的内存。
- 将DLL复制到分配的内存空间。
- 计算DLL中用于执行反射加载的导出的内存偏移量。
- 调用
CreateRemoteThread
(或类似的未公开的API函数RtlCreateUserThread
)在远程进程中开始执行,使用反射加载函数的偏移地址作为入口点。 - 反射加载函数使用适当的CPU寄存器查找目标进程的进程环境块(PEB),并使用它查找内存中的地址
kernel32.dll
以及任何其他所需的库。 - 解析的KERNEL32出口目录中找到所需的API功能,如内存地址
LoadLibraryA
,GetProcAddress
和VirtualAlloc
。 - 使用这些函数,然后正确加载DLL(本身)到内存中,并调用它的入口点,DllMain。
时间: 2024-10-11 21:06:01