Injector:一行命令向 Windows 进程完成 DLL 注入与卸载
【免费下载链接】InjectorCommand line utility to inject and eject DLLs项目地址: https://gitcode.com/gh_mirrors/injec/Injector
想 hook 一个正在运行的进程,传统做法要自己处理 OpenProcess、VirtualAllocEx、CreateRemoteThread,任何一步出错都要从头排。Injector 就是为这类场景准备的 Windows 命令行工具,一条命令把 DLL 注入或卸载进任意运行中的进程。
一句话定位:Injector 是一个 Windows 命令行工具,支持按进程名、窗口标题、PID 三种方式定位目标进程,一次调用完成一个或多个 DLL 的注入(inject)与卸载(eject),面向需要 hook 开发、进程调试和功能监控的开发者与测试人员。
安装与首次运行
获取源码:
git clone https://gitcode.com/gh_mirrors/injec/Injector用 Visual Studio 2019 或更高版本打开解决方案文件 Injector.sln,选择 x86、x64 或 ARM64 平台生成即可;也可以直接从项目的 Releases 页下载对应架构的预编译二进制。
拿到可执行文件后,第一条能跑通的命令(目标:向记事本注入一个 DLL):
Injector.exe --process-name notepad.exe --inject C:\Temp\myHooks.dll输出Successfully injected module!即注入成功,返回码为 0。
命令怎么拼:三步组出有效调用
一条完整命令由三部分组成,前两部分各选一,第三部分可传多个。
- 定位目标进程(三选一)
-n/--process-name:按进程模块名,默认不区分大小写,加-c/--case-sensitive开启精确匹配-w/--window-name:按主窗口标题-p/--process-id:按数字 PID
- 指定动作(二选一)
-i/--inject:加载 DLL-e/--eject:卸载 DLL,按模块名匹配,磁盘上文件已删除也能卸载
- 附加一个或多个 DLL 路径(绝对或相对路径),空格分隔
其他要点:
- 注入前工具会自动申请
SeDebugPrivilege权限,这是调试其他进程所必需的 - 返回码约定:
0成功、1命令行参数无效、2一般错误、3结构化异常(SEH)错误、4未知错误,方便脚本判断 - 输入
Injector.exe -h可随时查看帮助
实战场景
Hook 开发者的编译后自动化:调试 DLL 每次重新编译后都要手动注入,很烦。把注入命令写进 Visual Studio 的后置生成事件,编译完成时 hook 自动加载进目标进程,全程不用手动操作。
测试人员验证 hook 是否生效:验证完某个 hook 后不想杀进程重启(会丢失现场状态),执行
Injector.exe --process-id 4321 --eject myHooks.dll,DLL 立即从目标进程中卸载,进程继续运行。批量挂多个模块:一次任务要挂 hook、overlay、日志三个 DLL,无需跑三遍命令,一条命令全部带上:
Injector.exe --process-name chrome.exe --inject hook1.dll hook2.dll hook3.dll
进阶入口:源码与构建
想改行为或自己编译时,从这几个位置入手:
- Injector/Main.cpp:命令行解析、参数校验、返回码定义
- Injector/Injector.cpp 与 Injector/Injector.h:注入/卸载类的完整实现
- Injector/Seh.cpp:把 SEH 异常代理成 C++ 异常,保证错误路径可捕获
- scripts/finalize-release.ps1:发布流程脚本
踩坑速查
- 权限不足注入失败:目标若是 64 位系统进程或以管理员身份运行的程序,需以管理员身份运行 Injector(工具会自动申请 SeDebugPrivilege,但提升该权限本身需要管理员)。
- 架构不匹配:32 位 DLL 注入不进 64 位进程,反之亦然。先确认 DLL 与目标进程的位宽一致,再排查其他原因。
- 提示 No process identifier specified!:
-n、-w、-p至少传一个,-i、-e也至少传一个,且-i与-e不能同时用。跑Injector.exe -h对照格式。
结尾
工具边界很窄:你负责指定"哪个进程"和"哪个 DLL",OpenProcess 到远程线程的细节它全包。如果任务就是让某个进程加载某个 DLL,一行命令是它的上限复杂度。
【免费下载链接】InjectorCommand line utility to inject and eject DLLs项目地址: https://gitcode.com/gh_mirrors/injec/Injector
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考