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

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

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

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

工具目录

分类

查看所有分类
Loading categories
AsmLdr — 具备复杂规避能力的动态 Shellcode 加载器 | Kitploit
工具/GitHubGitHub/0xninjacyclone/asmldr
Payload生成IDS/IPS规避Shellcode后渗透利用红队Payload 开发
GitHub0xninjacyclone/asmldr

AsmLdr

具备复杂规避能力的动态 Shellcode 加载器

查看仓库
34651511个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

AsmLdr:适用于 Windows x64 的动态 Shellcode 加载器

概述

AsmLdr 是一款使用 x64 汇编语言实现的高级 shellcode 加载器,专为 Windows x64 环境设计。其主要目的是执行加密的有效载荷,同时最大限度降低被高级防病毒软件、端点检测与响应(EDR)系统、沙箱和调试器检测到的风险。它通过在运行时动态解析模块、API 和系统调用来实现这一点,从而消除导入表或硬编码地址等静态依赖。这种方法可生成紧凑且检测特征极低的二进制文件。

该加载器使用模块踩踏(module stomping)技术将 shellcode 放入现有 DLL 的可执行节中,在内存中解密有效载荷,并通过带栈欺骗的间接系统调用执行。它包含多项规避功能,例如反调试措施、为模拟正常应用程序模式而进行的时间调整,以及绕过 Windows 事件跟踪(ETW)。这些能力使其成为红队作战和安全研究的工具。 道德免责声明:本项目仅用于教育和研究目的。它演示了 Windows 底层内部机制,包括 PEB 遍历、导出表解析、系统调用解除挂钩(syscall unhooking)和内存保护操作。请在受控环境(例如虚拟机)中使用。将其滥用于恶意活动是非法且不道德的。作者对任何滥用行为不承担任何责任。

主要功能

AsmLdr 提供了一系列用于隐蔽执行有效载荷和规避检测的功能。以下逐项介绍,重点说明其功能与优势:

初始化与引导

  • PEB 与 ntdll 发现:加载器不使用标准访问方式定位 PEB,以避免被检测。
    • 主要方法(栈扫描):它检查栈返回地址,以识别指向 PEB 的有效指针。找到后,从模块列表中获取 ntdll 的基址并设置系统调用处理。
    • 备用方法(PE 头扫描):如果主要方法失败,它会在内存中搜索 PE 文件签名以找到 ntdll.dll,然后使用系统调用确认 PEB 的位置。

动态解析机制

  • 通过 PEB 遍历解析模块:加载器沿 PEB 的模块链枚举正在运行的模块。它通过 Unicode 比较来匹配模块名称,从而找到并返回目标 DLL 的基址。此方法绕过了标准加载函数,降低了被拦截的风险。

  • 从导出表解析 API:加载器检查 DLL 的导出目录以定位函数。它使用哈希匹配 API,或可选择使用带长度校验的直接名称检查,以防止相似函数名之间产生混淆。这样无需依赖预链接的导入即可获得函数地址。

规避技术

  • 反调试保护:加载器通过多重检查检测调试行为,若任何一项检查表明正在被分析,则干净退出。

    • Kernel32 API 检查:它查询调试器是否存在以及是否有远程附加,若检测到则退出。
    • PEB 标志检查:它检查进程标志中是否存在调试迹象,例如已启用的调试模式,若存在则停止。
    • 硬件断点检测:它读取线程的调试寄存器,检查是否设置了断点,若有断点处于活动状态则停止。
    • 调试端口查询:它检查进程是否附加了调试端口,若存在则终止。
    • 检测到即退出:一旦出现任何告警,它会恢复栈并提前返回,以避免暴露行为。
  • 生成垃圾代码以抵抗分析:加载器执行一系列非必要操作,在反汇编中制造令人困惑的模式,使静态分析更加困难,同时不影响运行时效率。

  • 时序与行为正常化:加载器测量系统速度,以运行与正常应用程序模式相匹配的模拟工作负载,帮助其融入合法进程。它还会在关键操作前短暂暂停,以使执行时序正常化。

  • 绕过 ETW 日志记录:加载器在 ETW 日志记录 API 上设置硬件断点,以拦截并跳过事件日志调用,防止在系统日志中留下痕迹。

系统调用处理

  • 多层解除挂钩:加载器通过直接检查函数来动态获取有效的系统调用号(SSN);若函数被挂钩,则扫描附近代码;或统计 ntdll 中的模式以估算编号,并针对已知例外进行调整。

    使用的技术:

    • Hell's Gate
    • (Halo's/Tartarus) Gate
    • Veles' Reek
  • 间接系统调用与栈欺骗:加载器在 ntdll 中查找干净的系统调用代码路径,并链式执行多达 32 个操作,隐藏调用栈以规避跟踪。完成后恢复原始状态。

有效载荷注入与执行

  • DLL 镂空(DLL Hollowing):加载器载入目标 DLL,临时允许写入其代码节,插入加密的 shellcode,对其进行解密,然后将保护重置为仅可执行。

  • 内存中解密:加载器直接在注入的内存中应用循环密钥模式来解密 shellcode。

  • 工具函数:加载器包含用于测量字符串长度、比较字符串(标准或宽字符)、对名称进行哈希以用于查找、验证内存指针,以及读取时间戳以进行时序控制等工具。

更多特性

  • 不使用 RWX 内存权限,仅在 RW 和 RX 之间切换以保持隐蔽。
  • 无 IAT,甚至没有一个静态链接的 API,以避免挂钩和静态分析。
  • AsmLdr 在后台静默运行,不显示控制台或任何可疑内容。
  • 所有必需的 API 调用均使用哈希解析以实现混淆。

Shellcode 准备方法

Python 脚本 generate.py 对原始 shellcode 文件进行加密。它会添加填充以进行对齐,创建或使用一个密钥,并以循环方式将每个字节与密钥进行 XOR 运算。输出文件 shellcode.asm 定义了大小、加密数据和密钥的数组,以及一个在运行时加载数据的例程。加载器的内存解密过程与此流程相匹配。请注意,密钥越长,等待时间越长。

使用方法

准备

准备一个原始 shellcode 二进制文件(例如 payload.bin)。运行 python generate.py payload.bin [optional_key] 以生成 shellcode.asm。

自定义

修改 szDllName(evader.asm 中的 Unicode 十六进制字)以使用其他 DLL,例如 urlmon.dll。使用 str_hash 逻辑为新 API 重新计算 DJB2 哈希。注释掉宏(例如 KILL_DEBUGGERS)以进行调试。

局限性与注意事项

AsmLdr 针对 Windows 10 和 11 x64 进行了优化;内核更新可能会更改偏移量(例如 PEB+0x18)或 NTDLL 模式(例如 0xb8d18b4c),因此需要验证。错误处理依赖 NTSTATUS 返回值(例如 <0 表示失败),没有内置日志。垃圾和虚假操作会消耗 CPU 周期,在资源受限的系统上可能引起资源监视器的警觉。请仅在受控环境中使用。

下载工具