Washi1337/AsmResolver
GitHub: Washi1337/AsmResolver
AsmResolver 是一个 .NET 库,用于读取、修改和重建 PE 文件和 .NET 模块,解决二进制文件处理的需求。
Stars: 1074 | Forks: 147
# AsmResolver
[](https://github.com/Washi1337/AsmResolver/actions/workflows/test-and-publish.yml)
[](https://www.nuget.org/packages/AsmResolver/)
[](https://www.nuget.org/packages/AsmResolver/)
[](https://opensource.org/licenses/MIT)
[](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://github.com/Washi1337/AsmResolver/actions/workflows/test-and-publish.yml) |
| development | [](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, 跨平台兼容, 软件工程, 逆向工程