我尝试使用ifstream
将我的dll文件的内容注入远程进程。我使用char*
缓冲区来存储dll的内容,然后使用WriteProcessMemory
将dll文件的二进制文件注入到进程中。我使用CheatEngine来查看VirtualAllocEx
结果指向的内存区域,所以我知道数据已写入,因为我看到了我所做的一个函数的文本参数。我只是好奇LoadLibrary
与将dll的原始二进制文件加载到流程中的做法不同。
答案 0 :(得分:4)
简而言之,LoadLibrary
执行以下操作:
在内存中映射和重新定位部分。
处理导入描述符表,加载任何依赖项(如有必要),并填写导入地址表(IAT)。
将必要的信息写入过程环境块(PEB),以便您可以在模块列表中找到该模块。
调用模块加载通知(通常在内核中)。
清理新模块上下文。
创建激活上下文(如果有清单)。
调用入口点(DllMain
),如果它存在。