工具

goblin 二进制格式解析库

以零拷贝、感知字节序的方式解析二进制格式的 Rust crate,支持 ELF32/64、32/64 位 Mach-O 及多架构 fat 容器、PE32/PE32+、COFF 目标文件、Terse Executable(TE)镜像以及 Unix/BSD 归档;Object::parse 根据魔数自动识别格式。解析结果涵盖 ELF 的文件头、节区、符号、动态段条目、重定位和 note,Mach-O 的加载命令及导入导出,以及 PE 的导入导出、重定位、TLS、资源、异常与展开信息、Authenticode 证书和 .NET CLR 头。借助特性开关,它还可精简为不依赖 std 的 #[repr(C)] 结构体定义,供内核等 no_std 代码使用。

使用条件与局限

  • 审阅时最新标签为 0.10.6(另有同名的 v0.10.6 标签),位于 2026-05-25 的版本号更新提交;项目不发布 GitHub Release。crates.io 另列有 0.10.7,发布于 2026-05-28,但仓库中没有对应的标签或更新日志条目。所审阅的 master 提交(2026-08-30)仍声明版本 0.10.6,本条目固定该提交仅用于引用文档。
  • 作为 Cargo 依赖使用,需要 rustc 1.85.0+(Rust 2024 edition),依赖 plain、scroll 和可选的 log。默认特性启用全部格式及 std;elf32/elf64、mach32/mach64、pe32/pe64、te 和 archive 用于选择后端,endian_fd 按二进制自身的字节序解析,而 Mach-O、PE 和 TE 解析需要 alloc 与 endian_fd。
  • 输入为用户自行提供的可执行文件、目标文件或归档的字节切片。goblin 只解析格式元数据,不包含反汇编器,代码部分需另用指令解码器处理。PE 解析选项可跳过 RVA 解析、属性证书、TLS 数据、资源或导入表;更新日志还提到 ELF 与 PE 的宽松解析模式,用于处理加壳、损坏或恶意软件样本。
  • MIT 许可证。README 引用了一份 1 亿次模糊测试的报告,仓库中也有 cargo-fuzz 与 AFL 测试框架;两者均未重新运行,本次也未解析任何二进制。

关于此条目

类型
工具
类别
二进制分析库
关联
基础工具
目标
二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · m4b/goblin · 修订 24a6260
  2. Cargo.toml GitHub · m4b/goblin · 修订 24a6260
  3. CHANGELOG.md GitHub · m4b/goblin · 修订 24a6260
  4. src/lib.rs#L286-L323 GitHub · m4b/goblin · 修订 24a6260
  5. src/pe/options.rs GitHub · m4b/goblin · 修订 24a6260
  6. src/pe GitHub · m4b/goblin · 修订 24a6260
  7. src/mach GitHub · m4b/goblin · 修订 24a6260
  8. src/elf GitHub · m4b/goblin · 修订 24a6260
  9. LICENSE GitHub · m4b/goblin · 修订 24a6260
  10. https://github.com/m4b/goblin/tree/0.10.6
  11. https://docs.rs/crate/goblin/0.10.7