list imports per exe-rs example

This commit is contained in:
🪞👃🪞 2024-10-27 20:28:17 +02:00
parent 14a6dca63f
commit fe2fedadad

View file

@ -1,5 +1,7 @@
use clap::Parser;
use std::path::Path;
use exe::pe::{PE, VecPE};
use exe::types::{ImportDirectory, ImportData, CCharString};
type Usually<T> = Result<T, Box<dyn std::error::Error>>;
@ -23,7 +25,18 @@ impl VestalCli {
}
}
fn inspect (&self, path: impl AsRef<Path>) -> Usually<()> {
todo!("inspect");
let image = VecPE::from_disk_file(path)?;
let import_directory = ImportDirectory::parse(&image)?;
for descriptor in import_directory.descriptors {
let name = descriptor.get_name(&image)?.as_str()?;
println!("\n{name}:");
for import in descriptor.get_imports(&image).unwrap() {
match import {
ImportData::Ordinal(x) => println!("{name} #{}", x),
ImportData::ImportByName(s) => println!("{name} {}", s)
}
}
}
Ok(())
}
}