#injection #memory #loader #shared-libraries #dynamic-library

injex

Gives users the possibility to inject into and manipulate processes

1 unstable release

0.1.0 Apr 25, 2021

#4 in #shared-libraries

MIT license

34KB
702 lines

Injex

  • aims to provide a library in rust to alter other processes
  • at the moment only linux is supported, if i enter a state where i am satisfied with the linux implementation i will look at OpenBSD/Mac/Windows

Example

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

Credit

https://github.com/DavidBuchanan314/dlinject

  • my injection function is basically a rewrite of dlinject in rust

LICENSE

  • MIT

Dependencies

~2.9–5.5MB
~97K SLoC