injrs 0.1.2

DLL injector library and tool written in Rust. Rust 实现的DLL注入工具/库。
docs.rs failed to build injrs-0.1.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

injrs

DLL injector library and tool written in Rust. Rust 实现的DLL注入工具/库

CI crates.io Documentation dependency status Apache-2.0

Install

Go to releases page download the latest binary.

Or if you have rust installed, use cargo to install:

cargo install injrs

Install rust if you don't have.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Usage

At most time, you can use injrs as a simple tool.

USAGE:
injrs PROCESS_NAME/PID [Libraies...]

EXAMPLES:
1. Inject test.dll to process Calc.exe
    $ injrs Calc.exe test.dll

2. Inject test.dll and demo.dll to process with PID: 1888
    $ injrs 1888 test.dll demo.dll

DLL Demo

The code in examples/hellobox is a simple message box dll for testing injector.

You can build with command:

cargo build --release --example hellobox

Build target will locate in:

target/i686-pc-windows-msvc/release/examples/hellobox.dll

Try to inject the demo dll to your target process:

injrs PID/PNAME target/i686-pc-windows-msvc/release/examples/hellobox.dll

Usage as library

You also can write a injector project using injrs as a library.

use injrs::process_windows::*;
use injrs::inject_windows::*;

fn main() {
    let name = "Calc.exe";
    let dll = "./my-demo-dll.dll";
    let p = Process::find_first_by_name(name).unwrap();

    print!("inject dll to process => ");
    match process.inject(dll) {
        Err(e) => {
            println!("error: {}", e);
        },
        Ok(_) => {
            println!("success");
        }
    }
}

for more detail you can check src/main.rs.