Rust DMA基础读写内存 (使用PCILeech)

Rust DMA基础读写内存 (使用PCILeech)

Rust DMA基础读写内存 (使用PCILeech) 需要用到的crate: memprocfs(https://github.com/ufrisk/MemProcFS) PCILeech是一个可以通过dma读写内存的库,可以通过memprocfs这个库来操作。 memprocfs这个库的wiki

Rust DMA基础读写内存 (使用PCILeech)

需要用到的crate:

PCILeech是一个可以通过dma读写内存的库,可以通过memprocfs这个库来操作。

memprocfs这个库的wiki在这里:API_Rust · ufrisk/MemProcFS Wiki · GitHub

前置工作

先新建项目并下载crate:

cargo new dma-test;
cd dma-test;
cargo add memprocfs;

代码

连接到pcileech的vmm.dll:

let mut args = ["-printf", "-device", "fpga"].to_vec();
let vmm = Vmm::new("vmm.dll的路径", &args).unwrap();

这里使用fpga设备,也可以根据需求改成USB3380,其他参数请到memprocfs的wiki查询

示例: 寻找进程以及基址

if let Ok(processes) = vmm.process_list() {
        for process in processes {
            if let Ok(info) = process.info() {
                if info.name == "示例.exe" {
                    return Some(process);
                }
            }
        }
    }

获取基址:

process.get_module_base("示例.exe").unwrap();

示例:读写内存

读内存和写内存就分别用vmm::mem_read和vmm::mem_write两个方法进行

此外,memprocfs还提供了vmm::mem_read_as和mem_write_as两个泛型方法,直接可以传入结构体进行读取和写入

LICENSED UNDER CC BY-NC-SA 4.0
Comment