module_functions/
module_functions.rs

1use dma_rs::Dma;
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let dma = Dma::new("fpga://algo=0")?;
5    let process = dma.attach("explorer.exe")?;
6
7    let kernel32_base = process.module_base("kernel32.dll")?;
8    println!("kernel32.dll base: 0x{:X}", kernel32_base);
9
10    let functions = [
11        "CreateFileW",
12        "ReadFile",
13        "WriteFile",
14        "GetProcAddress",
15        "LoadLibraryW",
16    ];
17
18    for func_name in &functions {
19        match process.proc_address("kernel32.dll", func_name) {
20            Ok(addr) => {
21                let offset = addr - kernel32_base;
22                println!("{}+0x{:X} = 0x{:X}", func_name, offset, addr);
23            }
24            Err(e) => println!("Failed to find {}: {}", func_name, e),
25        }
26    }
27
28    Ok(())
29}