Python DLL injector for Windows.
Project description
PyDll-Injector
Python DLL injector for Windows. Supports various injection methods.
Features
PyDll-Injector comes with the following features:
- DLL Injection on app start: Injects DLL(s) into a process when it starts;
- Env variables support: Enables you to pass environmental variables to the injected DLL;
- Multiple injection methods: Supports various injection methods;
- Check if process is running: Checks if a process is running after injection;
- Graceful process termination: Allows you to terminate the spawned process;
- Ready to use CLI: Comes with a command line interface for easy usage.
Injection methods
The following injection methods are supported:
- standard: Classic CreateRemoteThread + LoadLibraryA;
- apc: QueueUserAPC + LoadLibraryA. Target thread must enter an alertable state;
- nt: NtCreateThreadEx + LoadLibraryA (stealthier than CreateRemoteThread);
- hook: SetWindowsHookExA(WH_CBT) injection. DLL must export
HookProc.
Usage
You can use PyDll-Injector via the command line interface or as a library in your Python code.
CLI
Install the package on your system:
pip install pydll-injector[cli]
You can now use PyDll-Injector from the command line like this:
pydll-injector --executable-file "A:\Path\To\App.exe" --dll-list "B:\Path\To\Your.dll"
For the list of all available CLI options, run:
pydll-injector --help
This injector also allows you to pass configuration via a toml file. Here is a sample configuration file:
[launcher]
executable_file = "A:\\Path\\To\\App.exe"
cmd_line_args = "-arg1 -arg2"
dll_list = [
"B:\\Path\\To\\Your.dll",
]
injection_method = "nt"
[environment]
vars = ["FOO=bar", "BAZ=qux"]
use_system_env = true
environment_append = false
Library
First, install the package. For example, using uv:
uv add pydll-injector
You can now import the library and use it in your Python code:
from pydll_injector.process import spawn_process, is_process_running
from pydll_injector.models import Launcher, Environment
def main() -> None:
launcher = Launcher(
executable_file= r"A:\Path\To\App.exe",
cmd_line_args="",
dll_list=[r"B:\\Path\\To\\Your.dll"],
injection_method='apc',
)
env = Environment(
vars=["FOO=bar"],
use_system_env=True,
environment_append=False
)
ctx = spawn_process(launcher, env)
while is_process_running(ctx):
pass
print("Process has exited.")
if __name__ == "__main__":
main()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydll_injector-0.1.1.tar.gz.
File metadata
- Download URL: pydll_injector-0.1.1.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885e8aead15192cb028ef947a5be8d26a9ad8b4177fd3897875438aee351601b
|
|
| MD5 |
97dbb87a27cf8fd50cd5d5861d790cec
|
|
| BLAKE2b-256 |
8e1f93082f1a6cc854b2937b48c11183bc3b66f2fb7470840a5544da44385d7f
|
File details
Details for the file pydll_injector-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pydll_injector-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1ecca9b271d003ab13499845733c5c06cc998186460dd8489cfcf179f26ec21
|
|
| MD5 |
91b8a07b9ac8a94432d5fce939e71f5d
|
|
| BLAKE2b-256 |
3716d605edc025cc3fa54eac850c51d9f5a6e5a2ed932156023a5887a4f08356
|