{"adoption": {"forks": 299, "observed_at": "2026-08-28T04:04:16.974543+00:00", "stars": 1296}, "canonical_url": "https://ross.abutalabs.com/products/injdrv", "card": {"archived": false, "artifact_type": "library", "description": "proof-of-concept Windows Driver for injecting DLL into user-mode processes using APC", "domain": ["security", "windows", "reverse-engineering", "developer-tools"], "enriched": true, "function": ["security", "reverse-engineering", "developer-tools"], "health_score": 20, "homepage": null, "language": "C", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["wbenny/injdrv"], "name": "wbenny/injdrv", "platform": ["windows", "cpp", "c"], "pushed_at": "2024-05-01T13:30:40+00:00", "repo": "wbenny/injdrv", "stars": 1296, "tags": ["windows-driver", "dll-injection", "apc", "kernel-driver", "hooking", "proof-of-concept", "wow64", "etw-tracing"], "topics": ["windows-driver", "apc", "injection", "hooking"], "urls": [], "use_cases": ["inject a DLL into a user-mode process from a kernel driver", "learn how APC-based DLL injection works on Windows", "hook ntdll functions in newly created processes", "inject DLLs into Wow64 processes on x64 Windows", "study Windows kernel driver development with process callbacks", "trace API calls using ETW from an injected DLL"], "what_it_is": "A proof-of-concept Windows kernel driver that injects DLLs into user-mode processes using Asynchronous Procedure Calls (APC). It hooks into process and image load notifications to inject early in process initialization, with a demonstrative DLL that hooks ntdll functions and traces calls via ETW.", "when_to_avoid": ["you need a production-ready, supported injection solution", "you want user-mode-only injection without a kernel driver", "you need documentation beyond a proof-of-concept or long-term maintenance guarantees", "your target is Windows 11 or newer (support is stated for Windows 7 through 10)"], "when_to_choose": ["you need a small, readable reference implementation of kernel-mode APC DLL injection", "you want to inject DLLs very early in process initialization", "you need support for x86, x64, ARM32, ARM64 and Wow64 injection", "you are researching Windows internals or building security/monitoring tooling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/injdrv", "repo": "wbenny/injdrv", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.974543+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:53:58.758737+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ef270670206423c03939a4f7cfb442a7d77a17b3151ed1a732637b7cb0d2713", "fetched_at": "2026-08-28T04:04:16.974543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wbenny/injdrv"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3237, "days_push": 854, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}