工具
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 测试框架;两者均未重新运行,本次也未解析任何二进制。
关于此条目
- 类型
- 工具
- 类别
- 二进制分析库
- 关联
- 基础工具
- 目标
- 二进制
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · m4b/goblin · 修订 24a6260
- Cargo.toml GitHub · m4b/goblin · 修订 24a6260
- CHANGELOG.md GitHub · m4b/goblin · 修订 24a6260
- src/lib.rs#L286-L323 GitHub · m4b/goblin · 修订 24a6260
- src/pe/options.rs GitHub · m4b/goblin · 修订 24a6260
- src/pe GitHub · m4b/goblin · 修订 24a6260
- src/mach GitHub · m4b/goblin · 修订 24a6260
- src/elf GitHub · m4b/goblin · 修订 24a6260
- LICENSE GitHub · m4b/goblin · 修订 24a6260
- https://github.com/m4b/goblin/tree/0.10.6
- https://docs.rs/crate/goblin/0.10.7