From fe2fedadad56bff0c0edbde263096aab036e53c9 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sun, 27 Oct 2024 20:28:17 +0200 Subject: [PATCH] list imports per exe-rs example --- src/main.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index fe6c849..caa70fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ use clap::Parser; use std::path::Path; +use exe::pe::{PE, VecPE}; +use exe::types::{ImportDirectory, ImportData, CCharString}; type Usually = Result>; @@ -23,7 +25,18 @@ impl VestalCli { } } fn inspect (&self, path: impl AsRef) -> 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(()) } }