1 个不稳定版本
0.1.0 | 2021年4月25日 |
---|
#4 在 #共享库
34KB
702 代码行
Injex
- 旨在提供一个用于改变其他进程的 Rust 库
- 目前只支持 Linux,如果我对 Linux 实现感到满意,我将考虑 OpenBSD/Mac/Windows
示例
use injex::prelude::*;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let anon = AnonManipulator::new("game_name")?;
inject(&anon, anon.pid(), "path/to/dynamic_library")?;
Ok(())
}
// Dynamic Library in its own crate
use std::thread;
use injex::prelude::*;
#[link_section = ".init_array"]
static INITIALIZE: fn() = init;
fn init() {
thread::spawn(move || -> thread::Result<()> {
let manipulator = InternalManipulator {}
println!("{:?}", manipulator.memory_maps());
let address = manipulator.find(0, 1024, &[0, 3, 10, 32, 1]).unwrap();
loop {
manipulator.write(address, &[255, 255, 255, 255]).unwrap();
}
});
}
致谢
https://github.com/DavidBuchanan314/dlinject
- 我的注入函数基本上是 dlinject 的 Rust 重写
许可证
- MIT
依赖项
~2.8–5.5MB
~97K SLoC