Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
DLLHSC — 用于发现 Windows 可执行文件中 DLL 搜索顺序劫持候选者的自动化扫描器,具备导入表解析、运行时模块枚举以及通过 Microsoft Detours 实现 API 钩子等功能。 | Kitploit
工具/GitHubGitHub/ctxis/dllhsc
漏洞利用渗透测试二进制分析Payload 开发
GitHubctxis/dllhsc

DLLHSC

用于发现 Windows 可执行文件中 DLL 搜索顺序劫持候选者的自动化扫描器,具备导入表解析、运行时模块枚举以及通过 Microsoft Detours 实现 API 钩子等功能。

查看仓库
158366年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DLLHSC

DLL Hijack SCanner(DLL劫持扫描器)——一款用于生成线索并自动化发现DLL搜索顺序劫持候选目标的工具

本页目录

  • 本仓库内容
  • 运行模式
  • 编译与运行指导
  • 帮助菜单
  • 示例运行
  • 反馈

本仓库内容

本仓库包含该工具的Visual Studio项目文件(DLLHSC)、API钩子功能项目文件(detour)、有效载荷项目文件,以及最重要的——适用于x86和x64架构的编译后可执行文件(位于本仓库的release部分)。代码使用 Visual Studio Community 2019 编写和编译。

若选择从源码编译本工具,需编译DLLHSC、detour和payload三个项目。DLLHSC实现了本工具的核心功能。detour项目生成一个用于挂钩API的DLL。payload项目生成一个作为概念验证的DLL,用于测试目标可执行文件是否能通过搜索顺序劫持加载它。生成的payload DLL需与DLLHSC和detour放在同一目录下,x86架构需命名为payload32.dll,x64架构需命名为payload64.dll。

运行模式

本工具实现了三种运行模式,说明如下。

轻量模式

将可执行映像加载到内存中,解析导入表,然后将导入表中引用的任何DLL替换为有效载荷DLL。

该工具仅会在应用程序目录中放置一个模块(DLL),该模块满足以下条件:不在应用程序目录中、不属于WinSxS、也不属于KnownDLLs。

有效载荷DLL在执行时,会在以下路径创建一个文件:C:\Users\%USERNAME%\AppData\Local\Temp\DLLHSC.tmp,作为执行证明。工具启动应用程序并通过检查临时文件是否存在来报告有效载荷DLL是否被执行。由于某些可执行文件会从它们加载的DLL中导入函数,当提供的DLL无法导出这些函数(即无法满足所提供映像的依赖关系)时,可能会弹出错误消息框。但是,消息框的出现表明,如果依赖关系得到满足,该DLL可能是执行有效载荷的良好候选。此时需要进一步分析。这些消息框的标题可能包含字符串:Ordinal Not Found 或 Entry Point Not Found。DLLHSC会查找包含这些字符串的窗口,在它们出现后立即关闭,并报告结果。

模块列表模式

使用提供的可执行映像创建一个进程,枚举加载到此进程地址空间中的模块,并在应用过滤器后报告结果。

该工具仅报告从System目录加载且不属于KnownDLLs的模块。这些结果是需要进一步分析的线索。分析人员随后可以将报告的模块放入应用程序目录,并检查应用程序是否会加载提供的模块。

运行时模式

通过 Microsoft Detours 挂钩LoadLibrary和LoadLibraryEx API,并报告运行时加载的模块。

每次被扫描的应用程序调用LoadLibrary和LoadLibraryEx时,工具会拦截该调用,并将请求的模块写入文件 C:\Users\%USERNAME%\AppData\Local\Temp\DLLHSCRTLOG.tmp。如果LoadLibraryEx特别使用了标志LOAD_LIBRARY_SEARCH_SYSTEM32,则不会向该文件写入任何输出。所有拦截完成后,工具读取该文件并打印结果。需要进一步分析的感兴趣的模块包括:不存在于KnownDLLs注册表项中的模块、不存在于System目录中的模块、以及没有完整路径的模块(对于这些模块,加载程序会应用正常的搜索顺序)。

编译与运行指导

如果你选择从源码编译本工具,建议在Visual Code Studio 2019上进行。为了使工具正常运行,DLLHSC、detour和payload项目必须为同一架构编译,然后放在同一目录下。请注意,payload项目生成的DLL必须重新命名为payload32.dll(32位架构)或payload64.dll(64位架构)。

帮助菜单

应用程序的帮助菜单

root@kitploit:~
NAME
        dllhsc - DLL Hijack SCanner

SYNOPSIS
        dllhsc.exe -h

        dllhsc.exe -e <executable image path> (-l|-lm|-rt) [-t seconds]

DESCRIPTION
        DLLHSC scans a given executable image for DLL Hijacking and reports the results

        It requires elevated privileges

OPTIONS
        -h, --help
                display this help menu and exit

        -e, --executable-image
                executable image to scan

        -l, --lightweight
                parse the import table, attempt to launch a payload and report the results

        -lm, --list-modules
                list loaded modules that do not exist in the application's directory

        -rt, --runtime-load
                display modules loaded in run-time by hooking LoadLibrary and LoadLibraryEx APIs

        -t, --timeout
                number of seconds to wait for checking any popup error windows - defaults to 10 seconds

示例运行

本节提供如何运行DLLHSC以及它报告的结果的示例。为此,使用了合法的Microsoft工具 OleView.exe(MD5:D1E6767900C85535F300E08D76AAC9AB)。为获得更好效果,建议在待扫描可执行文件所在的安装目录中进行扫描。

标志 -l 解析提供的可执行文件的导入表,应用过滤器,并尝试通过将有效载荷DLL放入应用程序当前目录来武器化导入的模块。当有效载荷DLL的依赖(导出的函数)不满足时,被扫描的可执行文件可能会弹出错误框。此时会弹出一个错误消息框。DLLHSC默认检查10秒(或用户通过 -t 标志指定的秒数)以确定是否有消息框弹出。错误消息框表明,如果依赖关系得到满足,该模块可以被武器化。

以下截图显示当 OleView.dll 加载有效载荷DLL时生成的错误消息框:

依赖项

工具会等待最大时间范围(10秒或 -t 秒)以确保进程初始化完成并且任何消息框已生成。然后检测消息框,关闭它并报告结果:

导入的模块

标志 -lm 启动提供的可执行文件,并打印它加载的既不属于KnownDLLs列表也不是WinSxS依赖项的模块。此模式旨在提供可能用作有效载荷的DLL的线索,仅用于为分析人员生成线索。

已加载的模块

标志 -rt 打印提供的可执行映像在作为进程启动时加载到其地址空间中的模块。这是通过Microsoft Detours挂钩 LoadLibrary 和 LoadLibraryEx API来实现的。

运行时加载的模块

反馈

有关此工具的任何反馈,请使用GitHub Issues部分。

下载工具