15次发布

0.5.6 2023年1月10日
0.5.5 2022年10月12日
0.5.4 2022年4月27日
0.5.1 2022年3月29日
0.4.0 2021年7月28日

#2 in #win-api

Download history • Rust 包仓库 109/week @ 2024-04-21 • Rust 包仓库 124/week @ 2024-04-28 • Rust 包仓库 97/week @ 2024-05-05 • Rust 包仓库 109/week @ 2024-05-12 • Rust 包仓库 100/week @ 2024-05-19 • Rust 包仓库 98/week @ 2024-05-26 • Rust 包仓库 107/week @ 2024-06-02 • Rust 包仓库 121/week @ 2024-06-09 • Rust 包仓库 90/week @ 2024-06-16 • Rust 包仓库 389/week @ 2024-06-23 • Rust 包仓库 125/week @ 2024-06-30 • Rust 包仓库 73/week @ 2024-07-07 • Rust 包仓库 131/week @ 2024-07-14 • Rust 包仓库 102/week @ 2024-07-21 • Rust 包仓库 166/week @ 2024-07-28 • Rust 包仓库 84/week @ 2024-08-04 • Rust 包仓库

489 每月下载量
8 个crate中(7个直接使用) 使用

GPL-3.0 许可

305KB
6K SLoC

exe-rs

exe-rs 是一个可移植可执行(PE)解析库,在多种类型的不完整PE可执行文件上进行了测试,包括 Corkami语料库 和各种形式的恶意软件!它是一个兼顾创建和解析的库,旨在使与PE文件相关的任务尽可能流畅和完美。

您可以在 这里 阅读文档,并在 测试文件 中查看各种使用示例。不同版本之间的变更日志可在 这里 获取。

特定于Windows的功能(例如加载给定的PE文件进行执行)可以通过启用crate的 win32 功能来配置。


lib.rs:

exe-rs 是一个用于处理PE文件的库,无论是构建还是分析!

入门简单

use exe::pe::{PE, VecPE};
use exe::types::{ImportDirectory, ImportData, CCharString};

let image = VecPE::from_disk_file("test/compiled.exe").unwrap();
let import_directory = ImportDirectory::parse(&image).unwrap();

for descriptor in import_directory.descriptors {
   println!("Module: {}", descriptor.get_name(&image).unwrap().as_str().unwrap());
   println!("Imports:");

   for import in descriptor.get_imports(&image).unwrap() {
      match import {
         ImportData::Ordinal(x) => println!("   #{}", x),
         ImportData::ImportByName(s) => println!("   {}", s)
      }
   }
}

标准PE头和其他类型可以在 headers 模块中找到,而辅助类型可以在 types 模块中找到。处理PE数据的底层功能,例如收集指针和将指针作为数据拉出,由 pkbuffer 模块和 Buffer trait 处理。更多使用示例可以在 测试文件 中找到。

依赖关系

~3.5–10MB
~87K SLoC