4 个版本
0.1.2 | 2023年4月16日 |
---|---|
0.1.1 | 2023年4月16日 |
0.1.0 | 2023年4月7日 |
#844 in Unix APIs
30KB
482 行
ptrace-inject
ptrace-inject
是一个使用 ptrace 在运行进程注入代码的工具。它是一个 *nix 系统的工具 - 对于 Windows,请参阅 dll-syringe
。目前仅支持 x64 架构,但计划尽快支持其他架构。
ptrace-inject
既是 Rust 库也是命令行工具。以下是一个使用该库的示例
use std::{process::Command, path::PathBuf};
use ptrace_inject::{Injector, Process};
let library = PathBuf::from("path/to/library.so");
// Spawn a new process and inject the library into it.
let target = Command::new("target-process");
Injector::spawn(target)?.inject(&library)?;
// Or attach to an existing process.
let proc = Process::by_name("target-process")?.expect("to find target process");
Injector::attach(proc)?.inject(&library)?;
请参阅 文档 以获取更多信息。
命令行工具的用法如下
Usage: ptrace-inject [OPTIONS] <--name <NAME>|--pid <PID>> <LIBRARY>
Arguments:
<LIBRARY> Path to the library to inject
Options:
-v, --verbose... More output per occurrence
-q, --quiet... Less output per occurrence
-n, --name <NAME> Name of a process to attach to
-p, --pid <PID> PID of a process to attach to
-h, --help Print help
-V, --version Print version
您可以使用以下命令安装它:cargo install ptrace-inject --features cli
。
依赖项
~6–18MB
~248K SLoC