加载库vs加载二进制dll到进程

LoadLibrary vs loading binary dll into process?

本文关键字:加载 进程 dll 二进制 vs      更新时间:2023-10-16

我尝试使用ifstream将我的dll文件的内容注入到远程进程中。我使用char*缓冲区来存储dll的内容,然后使用WriteProcessMemory将dll文件的二进制文件注入进程中。我使用CheatEngine查看VirtualAllocEx结果所指向的内存区域,因此我知道数据已经写入,因为我看到了我所创建的一个函数的文本参数。我只是好奇它是什么,LoadLibrary做不同于只是加载原始二进制的dll到进程。

简而言之,LoadLibrary做了以下事情:

  1. 处理导入描述符表,加载任何依赖项(如果需要),并填写导入地址表(IAT)

  2. 将必要的信息写入进程环境块(PEB),以便您可以在模块列表中找到模块。

  3. 调用模块加载通知(通常在内核)

  4. 清理新模块上下文

  5. 创建一个激活上下文(如果有清单)。

  6. 调用入口点(DllMain),如果它存在