Windows DLL 劫持分析与代理 DLL(proxy DLL)项目生成工具

项目结构

路径

说明

main.py

程序入口(GUI,打包入口)

dll_hijack_tool/__main__.py

程序入口( 方式)python -m

dll_hijack_tool/gui.py

GUI 主程序(tkinter 双标签页)

dll_hijack_tool/scanner.py

DLL 劫持扫描引擎

dll_hijack_tool/generator.py

代理 DLL 项目代码生成器

build.py

PyInstaller 打包脚本

examples/version_dll/

version.dll 代理 DLL 示例模板

快速开始

运行 GUI

pip install pefile
python main.py
# 或 python -m dll_hijack_tool

命令行使用

# 扫描目录中可劫持的 DLL
python -m dll_hijack_tool.scanner <目标目录> [--max-biz 0]

# 根据 DLL 生成代理 DLL 项目(默认转发到真实 DLL)
python -m dll_hijack_tool.generator <DLL路径>

# 指定转发真实 DLL 的完整路径(业务 DLL 场景)
python -m dll_hijack_tool.generator <DLL路径> --forward-path <真实DLL完整路径>

# 生成不转发的空壳(仅执行注入代码,导出函数为空实现)
python -m dll_hijack_tool.generator <DLL路径> --no-forward

打包成 exe

python build.py

打包完成后,可执行文件位于 。dist_v3\DLL_Hijack_Tool.exe

功能说明

DLL 劫持扫描

  • 选择目标目录,扫描其中的 EXE 文件

  • 分析可劫持的系统 DLL

  • 显示导出函数数量,标记优质目标

代码生成器

  • 选择 DLL 文件

  • 可选“ DLL 函数转发”模式:

    • 开启(默认):加载真实 DLL 并转发所有导出调用,程序功能不受影响

    • 关闭:不转发,导出函数为空壳,DLL 仅被加载以执行注入代码

  • 可选“转发 DLL 路径”:指定真实 DLL 的完整路径(业务 DLL 场景)

    • 留空时自动判断:源 DLL 位于系统目录(System32)→ 运行时从系统目录加载;否则 → 使用源 DLL 自身路径

    • 生成代码中以 宏形式写入,可直接编辑REAL_DLL_PATH

  • 自动生成完整 Visual Studio 项目:

    • <dll名>.sln / .vcxproj / .vcxproj.filters- 项目文件

    • Source.def- 模块定义文件

    • proxy.asm- 汇编代理代码(x86/x64 通用)

    • dllmain.cpp- DLL 主代码

    • pch.h / pch.cpp / framework.h- 支持文件

  • 双击生成的 即可直接用 Visual Studio 编译.sln

依赖

  • Python 3.7+

  • PEFILE

  • PyInstaller(打包用)

下载 https://github.com/zskxc666/DLL-Side-Loading-Exploitation