13 个版本

使用旧的 Rust 2015

0.3.2 2023 年 9 月 27 日
0.3.1 2023 年 4 月 26 日
0.3.0 2022 年 10 月 2 日
0.2.1 2022 年 5 月 2 日
0.1.5 2018 年 11 月 20 日

Unix API 中排名 50

Download history 1974/week @ 2024-04-15 1920/week @ 2024-04-22 2920/week @ 2024-04-29 2306/week @ 2024-05-06 1956/week @ 2024-05-13 2422/week @ 2024-05-20 2612/week @ 2024-05-27 3121/week @ 2024-06-03 3937/week @ 2024-06-10 2461/week @ 2024-06-17 1935/week @ 2024-06-24 1604/week @ 2024-07-01 2105/week @ 2024-07-08 2627/week @ 2024-07-15 1985/week @ 2024-07-22 2104/week @ 2024-07-29

每月下载量 8,886
26 个crate中使用(其中16个直接使用)

MIT 许可证

175KB
5.5K SLoC

proc-maps

Build Status crates.io docs.rs

此crate支持从另一个进程读取虚拟内存映射,并支持 Linux、macOS、Windows 和 FreeBSD 操作系统。

示例

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());
}

此代码最初由 Julia Evans 作为 rbspy 项目的部分开发: https://github.com/rbspy/rbspy

在 MIT 许可证下发布。


lib.rs:

从另一个进程获取虚拟内存映射

此crate提供了一个函数——get_process_maps,该函数返回一个包含 MapRange 结构体的 Vec。

此代码在 Linux、macOS 和 Windows 上工作。每个操作系统都有不同的实现,但所有操作系统共享相同的接口 - 因此可以在操作系统之间通用。

注意:在 macOS 上这需要 root 权限,即使有 root 权限,在启用系统完整性保护的进程中也无法工作(例如 /usr/bin 中的任何内容)。

示例

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());
}

依赖项

~0–7MB
~38K SLoC