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
489 每月下载量
在 8 个crate中(7个直接使用) 使用
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