我正在努力找出windows exe是32位还是64位,我需要能够在linux 上做到这一点
下面我有非常简化的代码来可视化它
use std::{fs::File, path::Path};
fn is_x86_64(exe: &mut File) -> bool {
// something
}
if let Ok(exe) = File::open(Path::new("./test.exe")) {
assert!(is_x86_64(exe_file));
}
goblin
机箱看起来可以满足您的需求,而且它似乎非常成熟,可以在生产中使用。
我能够在Linux上成功地运行这个:
use std::{error::Error, fs, path::Path};
fn is_x86_64(exe_data: &[u8]) -> Result<bool, Box<dyn Error>> {
use goblin::Object;
match Object::parse(exe_data)? {
Object::PE(pe) => Ok(pe.is_64),
_ => Err("File is not a Windows PE file.".into()),
}
}
fn main() {
let exe_data = fs::read(Path::new("./test.exe")).unwrap();
println!("{:?}", is_x86_64(&exe_data).unwrap());
}