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

#42 in Operating systems

Download history 5003/week @ 2024-11-18 3908/week @ 2024-11-25 4150/week @ 2024-12-02 6102/week @ 2024-12-09 5856/week @ 2024-12-16 2476/week @ 2024-12-23 2664/week @ 2024-12-30 5194/week @ 2025-01-06 6741/week @ 2025-01-13 7629/week @ 2025-01-20 7088/week @ 2025-01-27 19538/week @ 2025-02-03 19806/week @ 2025-02-10 24330/week @ 2025-02-17 12847/week @ 2025-02-24 12296/week @ 2025-03-03

71,001 downloads per month
Used in 29 crates (19 directly)

MIT license

180KB
6K SLoC

proc-maps

Build Status crates.io docs.rs

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
~38K SLoC