1个不稳定版本
0.1.0 | 2023年11月18日 |
---|
#306 in 构建工具
143 每月下载量
在 2 crates 中使用
115KB
2K SLoC
editpe
可移植可执行文件资源编辑器。
支持跨平台解析和修改Windows可执行文件及其资源。
功能
- 解析和内省可移植可执行文件
- 资源编辑和图标替换
- 资源在文件之间传输
与其他资源编辑器(如rcedit)相比,editpe非常注重保持修改后的可执行文件处于有效状态。它通过解析和重建完整的资源目录以及所有文件和段头,保持现有段完整,并将任何附加数据留在文件末尾。
请注意,打包的可执行文件(如用UPX打包的)可能不以修改后的资源表开头,并且可能包含无法读取的压缩资源。如果您需要具有修改后的资源的打包可执行文件,请先编辑资源,然后进行打包。
用法
库
请参阅测试以获取更多用法示例。
示例:图标替换
use editpe::Image;
let data = std::fs::read(BINARY_PATH)?;
let icon = std::fs::read(ICON_PATH)?;
// parse the executable image
let mut image = Image::parse(&data)?;
// get the resource directory
let mut resources = image.resource_directory().cloned().unwrap_or_default();
// set the icon in the resource directory
resources.set_icon(&image)?;
// set the resource directory in the image
image.set_resource_directory(resources)?;
// build an executable image with all changes applied
let target = image.data();
示例:资源传输
use editpe::Image;
let source = std::fs::read(SOURCE_PATH)?;
let target = std::fs::read(TARGET_PATH)?;
// parse the source executable image
let image = Image::parse(&source)?;
// get the source resource directory
let resources = image.resource_directory()?;
// parse the target executable image
let mut image = Image::parse(&target)?;
// set the resource directory in the target image
image.set_resource_directory(resources)?;
// build an executable image with all changes applied
let target = image.data();
依赖关系
~7MB
~98K SLoC