#注入 #内存 #加载器 #共享库 #动态库

injex

为用户提供注入和操作进程的能力

1 个不稳定版本

0.1.0 2021年4月25日

#4#共享库

MIT 许可证

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