⚡ 不落地 · 不触发 · 多层混淆,一套源码全搞定

🚀 一句话介绍
av-evasion-skills 是一套完整的 Shellcode 免杀方案,包含三层处理(Patch → XOR加密 → IPv4混淆)和一个高度混淆的 Loader,通过 DLL 侧载 + Module Stomping + 白 DLL 注入,实现真正的无文件落地 + 进程内执行。
🔗 项目地址:https://github.com/bluechips-zhao/av-evasion-skills
💡 解决什么问题?
日常攻防场景中,你可能遇到这样的困境:
| 😖 痛点 | 😎 av-evasion-skills 解法 |
|---|---|
| Shellcode 一丢到目标机器就被杀软秒删 | 三层静态混淆,特征码彻底抹除 |
| Cobalt Strike / Metasploit 原始载荷被拦 | 源码可控,自定义加密链路 |
| PowerShell 无文件脚本被杀软行为检测捕获 | Module Stomping + 白 DLL,不走寻常路 |
| 每次手工混淆都要重头来 | 脚本自动化,三行命令搞定 |
🏗️ 核心架构
整个方案分为 Shellcode 处理 和 Loader 执行 两大阶段:
╔═══════════════════════════════════════════════════════════╗
║ 第一阶段:Shellcode 混淆(三层) ║
╠═══════════════════════════════════════════════════════════╣
║ ║
║ ┌─ Step 1 ──────────────────────────────────────────┐ ║
║ │ shellcode-patch.py → 特征码修补(不死免杀) │ ║
║ └───────────────────────────────────────────────────┘ ║
║ ↓ ║
║ ┌─ Step 2 ──────────────────────────────────────────┐ ║
║ │ shellcode-encrypt.py → XOR 循环加密 + 密钥 │ ║
║ └───────────────────────────────────────────────────┘ ║
║ ↓ ║
║ ┌─ Step 3 ──────────────────────────────────────────┐ ║
║ │ shellcode-obfuscate-ipv4.py → IPv4 数字混淆 │ ║
║ │ 字节流转为 IP 数字数组,编译进 payload_dll.c │ ║
║ └───────────────────────────────────────────────────┘ ║
║ ║
║ 输出:helper.dll + shellcode_obfuscated_ipv4.c ║
╚═══════════════════════════════════════════════════════════╝
↓
╔═══════════════════════════════════════════════════════════╗
║ 第二阶段:Loader 执行(十步) ║
╠═══════════════════════════════════════════════════════════╣
║ ║
║ ① LoadLibrary("helper.dll") 加载 Payload DLL ║
║ ② sscanf 解析 IPv4 数据 还原字节流 ║
║ ③ GetEncryptionKey() 获取密钥 XOR 解密 ║
║ ④ FreeLibrary(helper.dll) 卸载 DLL 消除痕迹 ║
║ ⑤ LoadLibrary("msimg32.dll") 加载白 DLL ║
║ ⑥ 定位 msimg32.dll .text 段 Module Stomping 目标 ║
║ ⑦ WriteProcessMemory + VirtualProtect 写入 Shellcode ║
║ ⑧ FlushInstructionCache 刷新 CPU 指令缓存 ║
║ ⑨ SecureZeroMemory + HeapFree 清理内存明文痕迹 ║
║ ⑩ CreateFiber 线程切换执行(无RT注入) ║
║ ║
║ helper.dll(已卸载) · msimg32.dll(.text被占用) ║
╚═══════════════════════════════════════════════════════════╝
🔬 第一层:Shellcode Patch(特征码修补)
# 将原始 Shellcode 复制到 scripts 目录
cp your_shellcode.bin scripts/shellcode_raw.bin
cd scripts/
# 执行第一步:Patch Shellcode
python shellcode-patch.py shellcode_raw.bin
📌 技术要点:针对杀软常见静态特征码进行字节级修补,是免杀链路的第一道防线。
🔐 第二层:XOR 循环加密
# 用自定义密钥加密
python shellcode-encrypt.py shellcode_patched.bin "MySecretKey"
这一层的价值:
- 🔒 原始 Shellcode 从不出现在明文内存中
- 🔑 自定义密钥运行时解密,黑盒化 Payload
- 🔄 循环 XOR,密钥未知则无法还原
🌐 第三层:IPv4 数字混淆
真实运行截图(1388 字节 Shellcode → 347 个 IP 地址):

# 将加密后的 Shellcode 转为 IPv4 数字数组
python shellcode-obfuscate-ipv4.py shellcode_encrypted.bin
生成的 IPv4 数组源码片段:

这一层是灵魂:
原始字节:\x4d\x5a\x90\x00 ...
↓ IPv4 数字混淆
C 源码:char* ipv4_array[] = {
"189.102.115.116", "83.169.175.190",
"37.33.24.51", "46.112.102.114", ...
}
↓ 编译进 helper.dll
磁盘上:100% 纯数字,无任何 Shellcode 特征!
🎯 杀软的静态签名库中不可能存在这种模式——数字数组根本不像恶意代码。
⚙️ Loader 执行流程详解

Loader(loader_v4.c)十步执行,每一步都有精心的反检测设计:
| 步骤 | 操作 | 技术细节 | 反检测效果 |
|---|---|---|---|
| ① | 加载 Payload DLL | LoadLibrary("helper.dll") | 利用正常 DLL 加载机制 |
| ② | 解析 IPv4 数据 | sscanf 还原字节流 | 字符串解析,无可疑函数调用 |
| ③ | 解密 Shellcode | GetEncryptionKey() 获取密钥 | 密钥存在 DLL 中,非硬编码 |
| ④ | 卸载 DLL | FreeLibrary(helper.dll) | 运行时卸载,消除磁盘痕迹 |
| ⑤ | 加载白 DLL | LoadLibrary("msimg32.dll") | 系统白 DLL,签名有效 |
| ⑥ | 定位 .text 段 | 在 msimg32.dll .text 段找空间 | Module Stomping |
| ⑦ | 写入 Shellcode | WriteProcessMemory + VirtualProtect | 改写已有段,不分配新内存 |
| ⑧ | 刷新 CPU 缓存 | FlushInstructionCache | 确保 CPU 执行新指令 |
| ⑨ | 清理内存痕迹 | SecureZeroMemory + HeapFree | 擦除明文 Shellcode |
| ⑩ | 切换线程执行 | CreateFiber(非 CreateRemoteThread) | 无线程创建行为 |
🛡️ 核心免杀技术全景图
这套方案用了 9 层免杀技术,覆盖静态扫描到内存扫描全部环节:

🧪 白 DLL 选择
Loader 支持多个白 DLL 作为 Module Stomping 的目标载体:
✅ msimg32.dll ← 首选(Windows 系统自带图形库)
✅ dcomp.dll ← 备用(DirectComposition 组件)
✅ dwmapi.dll ← 备用(Desktop Window Manager)
💡 这些 DLL 都是微软签名,.text 段写入 Shellcode 后,杀软很难将其判定为恶意。
🔧 编译构建
环境要求
| 依赖 | 版本 | 说明 |
|---|---|---|
| 🖥️ 操作系统 | Windows 10/11 (x64) | 必须是 Pro 版本 |
| 🐍 Python | 3.8+ | 运行混淆脚本 |
| 🔨 GCC | MinGW-w64 | 64位编译器 |
编译命令
# Step 1: 编译 Payload DLL
gcc -shared -o helper.dll payload_dll.c -s
# Step 2: 编译 Loader
gcc -mwindows -o loader.exe loader_v4.c -s
| 参数 | 作用 | 说明 |
|---|---|---|
-shared | 编译为 DLL | 生成 helper.dll |
-mwindows | GUI 模式 | 不弹出黑色控制台窗口 |
-s | 去除符号表 | 减小体积,增加分析难度 |
⚠️ 无需额外链接
-lpsapi,所有依赖均为系统自带,纯净无污染。
最终产物
┌─────────────────────────────────────┐
│ 📦 loader.exe │
│ 主程序,独立可执行文件 │
│ (无控制台,进程名普通) │
├─────────────────────────────────────┤
│ 📦 helper.dll │
│ 携带加密 Shellcode + 密钥 │
│ (运行后即卸载,不留痕迹) │
└─────────────────────────────────────┘
↑ 两者必须放在同一目录
🚀 快速使用流程

# ═══════════════════════════════════════
# 第一步:准备 Shellcode
# ═══════════════════════════════════════
# msfvenom / Cobalt Strike / Metasploit 均可
# 必须是 64 位 Shellcode
# ═══════════════════════════════════════
# 第二步:三层 Shellcode 混淆
# ═══════════════════════════════════════
cp your_shellcode.bin scripts/shellcode_raw.bin
cd scripts/
python shellcode-patch.py shellcode_raw.bin
# 输出:shellcode_patched.bin
python shellcode-encrypt.py shellcode_patched.bin "YourSecretKey"
# 输出:shellcode_encrypted.bin + shellcode_encrypted.c
python shellcode-obfuscate-ipv4.py shellcode_encrypted.bin
# 输出:shellcode_obfuscated_ipv4.c
# ═══════════════════════════════════════
# 第三步:编译 DLL 和 Loader
# ═══════════════════════════════════════
cd ..
gcc -shared -o helper.dll payload_dll.c -s
gcc -mwindows -o loader.exe loader_v4.c -s
# ═══════════════════════════════════════
# ✅ 完成!最终产物
# ═══════════════════════════════════════
# → loader.exe + helper.dll(同一目录)
# → 丢到目标机器执行即可
❓ 常见问题 Q&A
Q1: Shellcode 太短(小于 50 字节)?
检查
payload_dll.c中的ipv4_array[]长度,确保足够容纳你的 Shellcode。IPv4 混淆有最小体积要求。
Q2: 64位 Shellcode 用 32位 GCC 编译?
| Shellcode 位数 | 编译器 | 备注 |
|---|---|---|
| 64位 | MinGW-w64(64位) | ✅ 推荐 |
| 32位 | MinGW32(32位) | 可行,但不推荐 |
Q3: 运行环境不对?
本项目仅支持 Windows 10/11 Pro x64,Home 版或更低版本未测试。
Q4: msimg32.dll 不可用?
备用白 DLL 已内置:
dcomp.dll或dwmapi.dll,Loader 支持自动切换,详见源码注释。
Q5: 如何分发 loader.exe 和 helper.dll?
⚠️ 两者必须放在同一目录,单独拷贝任一文件都会导致执行失败。可使用
IExpress或压缩自解压等方式捆绑分发。
📋 常见应用场景
| 🎯 场景 | 💡 如何使用 |
|---|---|
| CTF 混淆题 | 生成无特征 Shellcode 用于混淆类 CTF 题 |
| 代码混淆题 | 二进制代码混淆场景训练 |
| DLL 注入 | 将 payload.dll / shellcode.dll 注入目标进程 |
| Shellcode 注入 | 绕过杀软直接注入 Shellcode |
| 无文件攻击 | 内存加载,无磁盘落地 |
| 后渗透阶段 | 横向移动落地时的免杀处理 |
| 红蓝对抗 | 攻防演练中的免杀载荷准备 |
📊 与其他免杀方案对比

⚠️ 注意事项
🔴 本工具仅供授权安全研究和合法攻防演练使用。
请勿将其用于任何未经授权的入侵活动,滥用者自行承担全部法律后果。
📌 结语
av-evasion-skills 的核心价值在于 全链路源码可控 + 九层免杀技术叠加:
🔒 静态层 → Patch + XOR + IPv4数字 → 特征码彻底消失
⚙️ 行为层 → DLL侧载 + Module Stomping + 白DLL → 进程行为干净
🧠 内存层 → 无RT注入 + SecureZeroMemory → 内存扫描也过
💾 磁盘层 → 无文件落地 → 杀软文件系统监控失效
六层免杀套娃,源码完全开源,攻防演练必备。
🔗 项目地址:https://github.com/bluechips-zhao/av-evasion-skills
👤 作者:bluechips | 📌 版本:V4.1
本文档由 AI 安全助手自动生成 · 仅供安全研究与学习交流













暂无评论内容