#pe #executable #malware #portable #creation #malformed #winapi

exe

一个PE(可移植可执行)库!

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 109/week @ 2024-04-21 124/week @ 2024-04-28 97/week @ 2024-05-05 109/week @ 2024-05-12 100/week @ 2024-05-19 98/week @ 2024-05-26 107/week @ 2024-06-02 121/week @ 2024-06-09 90/week @ 2024-06-16 389/week @ 2024-06-23 125/week @ 2024-06-30 73/week @ 2024-07-07 131/week @ 2024-07-14 102/week @ 2024-07-21 166/week @ 2024-07-28 84/week @ 2024-08-04

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