process_memory/
process_memory.rs1use dma_rs::Dma;
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let dma = Dma::new("fpga://algo=0")?;
5
6 let process = dma.attach("explorer.exe")?;
7 let info = process.info()?;
8
9 println!("Attached to {} (PID: {})", info.name, info.pid);
10 println!("Path: {}\n", info.path);
11
12 let modules = process.list_modules()?;
13 println!("Loaded modules: {}", modules.len());
14
15 for module in modules.iter().take(5) {
16 println!(" {} @ 0x{:X} (size: 0x{:X})",
17 module.name, module.base, module.size);
18 }
19
20 if let Some(kernel32) = modules.iter().find(|m| m.name.eq_ignore_ascii_case("kernel32.dll")) {
21 println!("\nkernel32.dll base: 0x{:X}", kernel32.base);
22
23 let bytes = process.read_bytes(kernel32.base, 64)?;
24 println!("First 64 bytes:");
25 for (i, chunk) in bytes.chunks(16).enumerate() {
26 print!(" {:04X}: ", i * 16);
27 for byte in chunk {
28 print!("{:02X} ", byte);
29 }
30 println!();
31 }
32 }
33
34 Ok(())
35}