1use eyre::Result;
2use goblin::{pe::PE, Hint};
3use std::io::Cursor;
4
5mod windows;
6
7pub fn convert(
11 file: impl AsRef<[u8]>,
12 addresses: &[usize],
13 reverse: bool,
14 base: Option<usize>,
15) -> Result<Vec<usize>> {
16 let mut binary = Cursor::new(file);
17 let hint = goblin::peek(&mut binary)?;
18
19 match hint {
20 Hint::PE => {
21 let pe = PE::parse(binary.get_ref().as_ref())?;
22 windows::output(&pe, addresses, reverse, base)
23 }
24 _ => eyre::bail!("Unsupported file format, supported formats are: PE"),
25 }
26}