Skip to main content

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

License

The project is distributed under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydll_injector-0.1.2.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydll_injector-0.1.2-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file pydll_injector-0.1.2.tar.gz.

File metadata

  • Download URL: pydll_injector-0.1.2.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.3

File hashes

Hashes for pydll_injector-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8d128144837827ba48ef831289656268f093af68a1bdb036665d5ed4fd20c71e
MD5 9e0ea6481ae42162773e7d6b52d7115f
BLAKE2b-256 c35f43f5e262c21fbc31711991cb7790804e9c8f5dcd63603f9154edf3b95e26

See more details on using hashes here.

File details

Details for the file pydll_injector-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pydll_injector-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2187a224059d6931549f7c212b1a4c13ee5218e9f84d2da8892756f022db27e2
MD5 dd97ae93ae0143d78deec9d251ff6a55
BLAKE2b-256 7c4649f742f04272c6479249ad810baeaab96010e9a74b9c2c3a8a67600c2119

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page