#reverse-engineering #section-header #hex-dump #binary-file #malware-analysis #entry-point #entropy-calculation

bin+lib reverse_engineering_lib

A Rust 工具库,用于逆向工程任务,包括熵计算、基于颜色的十六进制可视化以及 PE 文件分析

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

Download history 7/week @ 2024-04-03

每月 181 次下载

MIT 许可证

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 编程语言的开发者致敬,向 sha2randgoblin 包的创建者致敬,以及所有在网络安全社区分享知识和工具的人。你们都很棒!

示例 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_startprintfexit 等函数。

对于 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