2 releases

0.1.1 Jan 10, 2021
0.1.0 Jan 10, 2021

#153 in Windows APIs

MIT license

2.5MB
265 lines

Contains (Windows DLL, 4MB) examples/my_library_64.dll, (Windows DLL, 4MB) examples/my_library.dll

Djin - Windows DLL injection library for Rust

Features

  • Custom stub code for 32-bit and 64-bit allows calling an additional initialization function
  • Includes full error handling
  • Minimal, low level interface
// DWORD WINAPI fn(void);
extern "system" fn() -> DWORD;

See examples/injector.rs for how to use this library.

Method used

CreateRemoteThread

FEP (Frequently Encountered Problems)

  • It doesn't work, the error code is 5!

Note that the bitness (32-bit or 64-bit) of the calling process, target process, and injected DLL all need to match. Also, in some cases, Windows won't let you inject certain processes.

  • It doesn't work, the error code is 126!

The injected process couldn't find your DLL. Make sure you got the path to your DLL right, and that it stays where it is until inject_dll returns.

  • It doesn't work, the error code is 127!

The system couldn't find the initialization function in your DLL. Make sure you spelled the name correctly.

  • It doesn't work, the error code is some huge number!

or

  • It doesn't work, the injected program crashes!

Make sure it's not an issue in your DLL's code. Note that some programs may implement code that can detect if they're being injected, and crash.

Otherwise, not sure how much I can help you. Debugging this stuff is not easy.

Dependencies