#pe #map #client-server #手动映射

bin+lib mmap-loader

可移植可执行文件手动映射加载器

17 个版本

新版本 0.5.3 2024 年 8 月 17 日
0.5.1 2024 年 4 月 6 日
0.4.6 2022 年 8 月 6 日
0.4.5 2022 年 3 月 23 日
0.4.2 2021 年 10 月 25 日

#170内存管理

Download history 1/week @ 2024-05-15 6/week @ 2024-05-22 112/week @ 2024-07-31 3/week @ 2024-08-07 121/week @ 2024-08-14

每月 236 次下载

自定义许可

110KB
1.5K SLoC

包含 (Windows DLL,11KB) test/Foo.dll,(DOS 可执行文件,2KB) test/baddos.exe,(DOS 可执行文件,2KB) test/badentry.exe,(DOS 可执行文件,2KB) test/badmod.exe,(DOS 可执行文件,6KB) test/badproc.exe,(DOS 可执行文件,2KB) test/badsection.exe 和更多

mmap-loader-rs

支持可执行文件和 DLL 类型的 Windows 可移植可执行文件手动映射加载器。使用 Rust 编写

Crate | 文档(排除 TLS)

要求

  • 1.77.1+ 稳定编译器

功能

  • 支持 DLL 和 EXE 类型
  • 远程或本地 PDB 服务器用于解析内部 Windows 函数
  • 支持 C++ 异常、向量异常处理和结构化异常处理
  • 将条目添加到加载器结构中,允许支持诸如 GetModuleHandleGetModuleFileName 等功能
  • 允许将模块视为主模块,导致对 GetModuleHandle(null) 的调用解析为映射模块
  • 对于短暂的可执行文件,在销毁时卸载文件并清理操作系统结构
  • MSVC 识别映射的可执行文件,并且支持带有符号的子进程调试
  • 支持懒惰执行,可以在执行任何可执行文件之前加载多个 PE 文件
  • 在执行完成后将控制流返回到调用函数

功能标志

  • server
    • 启用单独的服务器组件
  • tls
    • 启用客户端和服务器对 TLS 的支持

支持

如果有问题,请通过打开问题来告知我。它仅在 Windows 10 20H2 上进行过测试,可能不支持 Windows 7 及以前版本。要查看它是否在您的系统上工作,请运行 cargo test

已知限制

  • 由于 此问题,带有 TLS 支持的 Docs.rs 构建 已损坏。使用 cargo doc 使用符合规范的 C 编译器本地构建文档以查看完整文档
  • 不支持 32 位环境
  • GetModuleInformation 和相关函数将无法找到已加载的模块。这是因为用于找到这些函数的模块的链表经过了合理性检查并由内核保护,修改这些结构后的第一次访问将导致致命的操作系统异常。建议的替代方案是使用 VirtualQuery 来获取分配的大小。

用法

查看示例:https://github.com/mrelectrify/mmap-loader-rs/blob/07e47a0b086e3907b43e0b2c2a38825a1279a64f/examples/

依赖项

~10–22MB
~343K SLoC