#mach-o #extremely #pe #elf #ar #elf-pe-mach-o-ar

binfarce

针对 ELF、Mach-O、PE 和 ar 的极简解析器

6 个版本

0.2.1 2021 年 7 月 3 日
0.2.0 2021 年 7 月 3 日
0.1.1 2020 年 9 月 7 日
0.0.1 2020 年 8 月 11 日

#710解析器实现 中排名

Download history 8813/week @ 2024-03-31 8260/week @ 2024-04-07 8420/week @ 2024-04-14 8658/week @ 2024-04-21 8898/week @ 2024-04-28 9118/week @ 2024-05-05 9950/week @ 2024-05-12 8669/week @ 2024-05-19 8097/week @ 2024-05-26 8758/week @ 2024-06-02 9539/week @ 2024-06-09 8510/week @ 2024-06-16 8717/week @ 2024-06-23 8667/week @ 2024-06-30 8992/week @ 2024-07-07 8380/week @ 2024-07-14

35,358 每月下载量
用于 6 软件包(3 个直接使用)

MIT 许可证

94KB
2.5K SLoC

binfarce

针对 ELF/PE/Mach-o/ar 的极简解析器。

此软件包主要用于在 cargo-bloatauditable-extract 软件包之间共享代码。它仅实现了这些工具正常运行所需的最小功能。如果您正在寻找功能齐全的解析器,请参阅 goblin

目标

  • 100% 安全的代码,包括所有依赖项。
  • 简单且易于审计的代码。没有使用复杂的技巧,例如 proc 宏。

非目标

  • 最高的性能。解析这些内容本身已经很便宜了。
  • 全面支持格式。

功能状态

头文件解析段提取 都被两个工具使用。它们是无分配的,并对不受信任的输入进行了加固。

#[forbid(unsafe_code)] 确保没有代码执行漏洞。没有堆分配确保它不会耗尽 RAM。通过 opt-in Clippy 检查和模糊测试使用静态分析来确保没有恐慌。

符号提取 仅由 cargo-bloat 使用。它在堆上分配了无界的内存,并且可能因不受信任的输入而恐慌。

只要它们遵守上述目标并保持现有工具正常运行,欢迎提交带有您自己工具所需功能的功能性 PR。然而,您应考虑使用功能齐全的 goblin 软件包。

该项目曾短暂地被称为 "kuduk"。

无运行时依赖项