
Goblin 需要 rustc 1.85.0(Rust 2024 版本)。
在 Cargo.toml 中添加:
[dependencies]
goblin = "0.10"
libgoblin 旨在成为你进行二进制解析、加载和分析的一站式解决方案。
Goblin 主要支持以下重要使用场景:
核心、无 std 的 #[repr(C)] 结构体,编译时间极短,可自由选择 32/64 位(或两者)。
类型双关。在类型上定义一次函数,但使其同时适用于 32 位和 64 位变体——几乎无需修改,且无需宏!请参见 examples/automagic.rs 的基本示例。
std 模式。通过 Pread 和 Pwrite 提供读取和写入实现,支持从文件读取、便捷分配、额外方法等。适用于能够分配内存并希望从磁盘读取二进制的用户。
Endian_fd。一个糟糕的名字 😆 适用于像 panopticon 或 falcon 这样的二进制分析工具,它需要读取外部端序的二进制文件,或作为构建跨平台外部架构二进制工具的基础,例如 cargo-sym 和 bingrep 是简单的例子,但潜力无限。
以下是一些你可以使用此 crate 实现的功能(或帮助实现以便达成的):
Pwrite)。no_std 配置加载二进制文件。即,它基本上只是结构体和常量定义(如同 C 头文件)——无文件描述符、无输出、无 std。libgoblin 设计为高度可配置。当前的标志如下:
repr(C) 结构体定义repr(C) 结构体定义repr(C) 结构体定义repr(C) 结构体定义repr(C) 结构体定义repr(C) 结构体定义repr(C) 结构体定义no_std 环境维护者是特定后端的首要联系人审阅者。根据先前的贡献、活跃度、基础知识以及友善和蔼的性格选定 :D
目前,我([@m4b])对所有 PR 拥有合并权限。未来,给定后端的维护者很可能也将拥有合并权限。
最后,我仍可能对所有 PR 进行粗略审阅,但将主要/完全依赖该后端的维护者。
始终铭记比尔和泰德的智慧:“对彼此友善!”
感谢大家 ❤️ !
按字典序排列: