14 releases
Uses old Rust 2015
0.4.0 | Oct 17, 2024 |
---|---|
0.3.2 | Sep 27, 2023 |
0.3.1 | Apr 26, 2023 |
0.3.0 | Oct 2, 2022 |
0.1.5 | Nov 20, 2018 |
#65 in Operating systems
23,498 downloads per month
Used in 28 crates
(18 directly)
180KB
6K
SLoC
proc-maps
This crate supports reading virtual memory maps from another process - and supports Linux, macOS, Windows, and FreeBSD operating systems.
Examples
use proc_maps::get_process_maps;
let maps = get_process_maps(pid)?;
for map in maps {
println!("Filename {:?} Address {} Size {}", map.filename(), map.start(), map.size());
}
cargo run --example print_maps <PID>
Credits
This code was originally developed by Julia Evans as part of the rbspy project: https://github.com/rbspy/rbspy.
License
Released under the MIT License.
lib.rs
:
Get virtual memory maps from another process
This crate provides a function—get_process_maps
that returns a Vec of MapRange
structs.
This code works on Linux, macOS, and Windows. Each operating system has a different implementation, but the functions and structs for all OSes share the same interface - so this can be used generically across operating systems.
Note: on macOS this requires root access, and even with root will still not work on processes that have System Integrity Protection enabled (anything in /usr/bin for example).
Example
use proc_maps::{get_process_maps, MapRange, Pid};
let maps = get_process_maps(123456 as Pid).unwrap();
for map in maps {
println!("Filename {:?} Address {} Size {}", map.filename(), map.start(), map.size());
}
Dependencies
~0–6.5MB
~41K SLoC