dll-syringe 0.18.2

A windows dll injection library written in rust.
Documentation
use dll_syringe::process::Process;
use std::time::Duration;

#[allow(unused)]
mod common;

process_test! {
    fn path_returns_correct_path(
        process: OwnedProcess
    ) {
        let path = process.path().unwrap();
        let main_module = process.borrowed().wait_for_module_by_path(&path, Duration::from_secs(1)).unwrap().unwrap();
        assert!(same_file::is_same_file(path, main_module.path().unwrap()).unwrap());
    }
}

process_test! {
    fn base_name_returns_correct_path(
        process: OwnedProcess
    ) {
        let base_name = process.base_name().unwrap();
        let main_module = process.borrowed().wait_for_module_by_name(&base_name, Duration::from_secs(1)).unwrap().unwrap();
        assert_eq!(base_name, main_module.base_name().unwrap());
    }
}

#[cfg(feature = "syringe")]
use dll_syringe::Syringe;

#[cfg(feature = "syringe")]
syringe_test! {
    fn guess_is_loaded_returns_true_after_inject(
        process: OwnedProcess,
        payload_path: &Path,
    ) {
        let syringe = Syringe::for_process(process);
        let module = syringe.inject(payload_path).unwrap();
        assert!(module.guess_is_loaded());
    }
}

#[cfg(feature = "syringe")]
syringe_test! {
    fn guess_is_loaded_returns_false_after_eject(
        process: OwnedProcess,
        payload_path: &Path,
    ) {
        let syringe = Syringe::for_process(process);
        let module = syringe.inject(payload_path).unwrap();
        syringe.eject(module).unwrap();
        assert!(!module.try_guess_is_loaded().unwrap());
    }
}

#[cfg(feature = "syringe")]
syringe_test! {
    fn guess_is_loaded_returns_false_after_kill(
        process: OwnedProcess,
        payload_path: &Path,
    ) {
        let syringe = Syringe::for_process(process);
        let module = syringe.inject(payload_path).unwrap();
        syringe.process().kill().unwrap();
        assert!(!module.try_guess_is_loaded().unwrap());
    }
}