4 个版本 (2 个重大更改)
0.3.0 | 2024 年 3 月 27 日 |
---|---|
0.2.2 | 2024 年 3 月 20 日 |
0.2.0 | 2024 年 3 月 20 日 |
0.1.0 | 2024 年 3 月 19 日 |
#5 in #hex-dump
每月 181 次下载
25KB
446 行
逆向工程库 🕵️♂️🔍
欢迎来到 reverse_engineering_lib,您用于剥离二进制层并了解其内部结构的 Rust 包!无论您是网络安全爱好者、恶意软件分析师,还是仅仅对可执行文件的工作原理感兴趣,这个包都能帮到您。
功能 🌟
- 熵计算:了解您二进制中的随机性,这是发现压缩或加密部分的关键线索。
- 基于颜色的十六进制可视化:将那些单调的十六进制转储变成丰富的颜色阵列,因为谁说逆向工程不能是一种视觉享受呢?
- 详细 PE 分析:深入了解可移植可执行文件,提取如入口点、段头和导入/导出表等详细信息。
入门 🚀
首先,您需要安装 Rust。如果您还没有安装,请访问 rustup.rs 并按照说明操作。
Rust 准备就绪后,克隆仓库并导航到您的项目目录
git clone https://github.com/bdr-pro/reverse_engineering_lib.git
cd reverse_engineering_lib
用法 🛠
计算二进制的熵非常简单
let entropy = calculate_entropy("path/to/your/binary.exe").unwrap();
println!("Entropy: {}", entropy);
为了从基于颜色的视角查看您的二进制文件
let color_data = color_based_hex("path/to/binary.exe").unwrap();
// Implement your logic to visualize color_data
以及提取详细的 PE 信息
let details = extract_detail_exe("path/to/binary.exe").unwrap();
for (key, value) in details.iter() {
println!("{}: {}", key, value);
}
CLI 模式 🖥️
主函数在 main.rs
文件中。它通过在 CLI 模式下使用库函数分析二进制文件来展示库的功能。
贡献 🤝
如果您有改进 reverse_engineering_lib 的想法,非常欢迎提交拉取请求!无论是添加新功能、改进文档还是修复错误,您的贡献都是开源社区精彩的地方。
许可证 📜
reverse_engineering_lib 根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE
。
鸣谢 💖
向 Rust 编程语言的开发者致敬,向 sha2
、rand
和 goblin
包的创建者致敬,以及所有在网络安全社区分享知识和工具的人。你们都很棒!
示例 main.rs
📂
以下是一个如何使用 reverse_engineering_lib 的实际示例,请查看仓库中提供的 main.rs
文件。这是该库功能的演示,可以直接运行。
以下是它支持的模式的简要概述
对于 pe-header
模式
给定一个 PE 文件,此模式将打印出基本的 PE 头信息
$ cargo run -- pe-header path/to/pe_file.exe
PeHeaderInfo { machine: 34404, number_of_sections: 5 }
此输出表明 PE 文件是为 x64 架构(machine: 34404
对应于 AMD64)并且包含 5 个部分。
对于 elf-functions
模式
给定一个 ELF 文件,此模式列出 ELF 文件中找到的函数名称
$ cargo run -- elf-functions path/to/elf_file
["main", "_start", "printf", "exit"]
此示例输出显示 ELF 文件包含 main
、_start
、printf
和 exit
等函数。
对于 entropy
模式
此模式计算并显示文件段(或“窗口”)的熵,这可以指示其随机性
$ cargo run -- entropy path/to/any_file
Offset: 0x0, Entropy: 7.95
Offset: 0x100, Entropy: 5.47
Offset: 0x200, Entropy: 3.58
在此,熵值是假设的,表明文件以高随机性(熵接近 8)开始,随后部分逐渐降低。高熵可能表明是压缩或加密的数据。
反汇编器模式
此模式将给定的二进制文件反汇编并打印反汇编指令
0x14af: nop
0x14b0: call 0xcc30
0x14b5: cmp eax, 0xa
0x14b8: je 0x14bf
0x14ba: cmp eax, -1
0x14bd: jne 0x14b0
0x14bf: mov eax, dword ptr [rbp - 4]
0x14c2: cmp eax, dword ptr [rip + 0x424330]
0x14c8: jle 0x14da
此输出显示二进制文件中不同内存地址处的反汇编指令。
use reverse_engineering_lib::disassemble;
fn main() {
let file_path =
"{your_binary_file_path_here.exe}";
match disassemble(&file_path) {
Ok(disassembly) => println!("{}", disassembly),
Err(e) => eprintln!("Disassembly failed: {}", e),
}
}
快乐的逆向工程!🚀👨💻👩💻
请记住,强大的力量伴随着巨大的责任。请合法且道德地使用 reverse_engineering_lib。快乐黑客!🖥️🔐
依赖项
~34MB
~1M SLoC