Washi1337/AsmResolver

GitHub: Washi1337/AsmResolver

AsmResolver 是一个 .NET 库,用于读取、修改和重建 PE 文件和 .NET 模块,解决二进制文件处理的需求。

Stars: 1074 | Forks: 147

# AsmResolver [![测试与发布](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0026f12874110648.svg)](https://github.com/Washi1337/AsmResolver/actions/workflows/test-and-publish.yml) [![NuGet 源](https://img.shields.io/nuget/v/AsmResolver)](https://www.nuget.org/packages/AsmResolver/) [![NuGet 源](https://img.shields.io/nuget/vpre/AsmResolver)](https://www.nuget.org/packages/AsmResolver/) [![许可:MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Discord](https://img.shields.io/discord/961647807591243796.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/Y7DTBkbhJJ) AsmResolver 是一个用于读取、修改和重建可移植可执行(PE)文件的库。它支持在 Windows 上原生运行的 PE 映像,以及包含托管(.NET)元数据的映像。 AsmResolver 根据 MIT 许可证发布。 ## 主要特性 AsmResolver 功能丰富。以下是部分重点功能列表(非详尽): - [x] 创建、读取、修改、写入和修补 PE 文件。 - [x] 完全访问节、数据目录及其解释。 - [x] 导入地址表(IAT)重建和跳板。 - [x] 完全控制最终 PE 文件输出的布局。 - [x] 丰富支持多种 Win32 资源类型(图标、版本信息等)。 - [x] 丰富支持 .NET 元数据,提供类似 `System.Reflection` 的直观 API。 - [x] 支持托管、本地和动态方法体。 - [x] 轻松导入和克隆元数据。 - [x] 托管资源文件的序列化器和反序列化器。 - [x] 支持 AppHost / SingleFileHost 捆绑包。 - [x] 支持 ReadyToRun (R2R) 二进制文件。 - [x] 设计稳健,可处理格式错误/混淆的二进制文件。 - [x] 丰富支持读取 PDB 和 PortablePdb 符号。 - [x] 完全托管的跨平台 API(无需 [DIA](https://learn.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/debug-interface-access-sdk?view=visualstudio) 或类似依赖项)。 - [x] 跨平台(Windows 和 *nix,兼容 .NET Framework 3.5+、.NET Standard 2.0、.NET Core、Mono 和 NixOS 包)。 - [x] [文档完善](https://docs.washi.dev/asmresolver)。 - [x] 经过单元测试。 ## 文档 - [指南](https://docs.washi.dev/asmresolver) - [从 v5.x 迁移到 v6.0](https://docs.washi.dev/asmresolver/guides/migration-v5-v6.html) - [API 参考](https://docs.washi.dev/asmresolver/api/core/AsmResolver.html) ## 支持 - [问题追踪器](https://github.com/Washi1337/AsmResolver/issues) - [讨论板](https://github.com/washi1337/asmresolver/discussions) - [Discord](https://discord.gg/Y7DTBkbhJJ) ## 二进制文件 稳定版本: - [NuGet 源](https://www.nuget.org/packages/AsmResolver/) - [GitHub Releases](https://github.com/Washi1337/AsmResolver/releases) 每晚构建版本: - [每晚 NuGet 源](https://nuget.washi.dev/) (https://nuget.washi.dev/v3/index.json) | 分支 | 构建状态 | |--------|--------| | master | [![测试与发布](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/fb6c64f10d110648.svg)](https://github.com/Washi1337/AsmResolver/actions/workflows/test-and-publish.yml) | | development | [![测试与发布](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/2f0a6a4ba2110649.svg)](https://github.com/Washi1337/AsmResolver/actions/workflows/test-and-publish.yml) | ## 编译 解决方案可以使用 .NET SDK 或与之兼容的 IDE(例如 Visual Studio 和 JetBrains Rider)进行构建。主要目标包面向各个 .NET 运行时的 LTS 版本(.NET Framework 3.5、.NET Standard 2.0、.NET Standard 2.1、.NET Core 3.1、.NET 6.0、.NET 8.0、.NET 9.0、.NET 10.0)。 要从命令行构建项目,请使用: ``` $ dotnet build ``` 要运行所有测试,请使用: ``` $ dotnet test ``` 要成功运行测试,您需要安装其他版本的 .NET _运行时_(包括 STS 版本或已声明生命周期结束的版本),因为单元测试会验证针对各种 .NET 运行时的二进制文件读取。 要在 macOS 和 Linux 上成功运行测试,还需要安装 `mono` 和 `wine`。 ## 致谢 AsmResolver 最初是一个个人项目,但已发展成为一个由众多贡献者组成的社区项目。没有这些人,AsmResolver 不会取得今天的成就! - 特别感谢所有通过[代码提交](https://github.com/Washi1337/AsmResolver/graphs/contributors)或通过 [GitHub 赞助者](https://github.com/sponsors/Washi1337)进行资金支持的人。 - 特别感谢 [@MonoMod](https://github.com/MonoMod) 团队在 .NET Framework 3.5 兼容性方面提供的帮助。 - 再次感谢所有建议新功能、提供 API 设计反馈、进行大量测试和/或通过[问题板](https://github.com/Washi1337/AsmResolver/issues)、电子邮件或私信报告错误的人。 如果您觉得在这些致谢中没有得到充分体现,请随时与我们联系。
标签:AsmResolver, IAT重建, .NET开发, .NET模块, PE文件操作, PE编辑器, 二进制修补, 二进制分析, 二进制文件处理, 云安全运维, 云资产清单, 元数据处理, 元数据读写, 多人体追踪, 库, 应急响应, 数据管道, 文件修改, 符号支持, 符号调试, 资源管理, 资源类型支持, 跨平台API, 跨平台兼容, 软件工程, 逆向工程