3分钟从零构建BlobRunner:Windows下编译Shellcode调试加载器的分步指南
【免费下载链接】BlobRunnerQuickly debug shellcode extracted during malware analysis项目地址: https://gitcode.com/gh_mirrors/bl/BlobRunner
BlobRunner 是一款开源的 Shellcode 调试加载器,专为恶意软件分析场景设计:它把你提取出的 shellcode 文件读入内存、分配可执行内存区域,然后直接跳转到 shellcode 入口,让分析人员在调试器中"零配置"地进入目标代码。下面这份 Windows 编译教程将带你用 Visual C++ 命令行在 3 分钟内从零构建 BlobRunner 调试加载器,并快速上手调试你的第一段 shellcode。
一、认识 BlobRunner:Shellcode 调试加载器解决什么痛点?
调试从恶意样本中提取的 shellcode,通常要手动建内存、写跳板代码,繁琐易错。BlobRunner 用约 200 行的 blobrunner.c 把这些步骤全做了:
- 📥读取文件:把你提供的 shellcode 二进制文件读入缓冲区
- 🧠分配内存:通过
VirtualAlloc申请 RWX(可读写可执行)内存并复制数据 - 🚀跳转入口:32 位版本直接
jmp到 shellcode 入口;64 位版本创建一个挂起线程供你先下断点
整个工具只有一个 C 源文件,无第三方依赖,编译即得。
二、环境准备:安装 Visual C++ 编译工具(最快方法)
在 Windows 上编译 BlobRunner 只需要 Microsoft 的 C 编译器cl,准备步骤如下:
- 下载并安装Microsoft Visual C++ Build Tools(或直接安装 Visual Studio,勾选"C++ 桌面开发"工作负载)
- 从开始菜单打开Visual Studio Command Prompt(x86 与 x64 两个版本都可用)
- 输入
cl验证编译器可用
💡 小技巧:不要使用普通 cmd 窗口,"Developer Command Prompt" 已自动配置好编译器环境变量,省去 PATH 折腾。
三、克隆仓库并查看源码
git clone https://gitcode.com/gh_mirrors/bl/BlobRunner cd BlobRunner项目结构非常精简,核心就两个文件:
blobrunner.c—— 全部逻辑:文件读取、内存分配、参数解析、跳转/建线程changelog.txt—— 版本记录,当前版本 0.0.5,新增了--jitJIT 调试支持并修复了--offset默认按十六进制解析的问题
四、一键编译:最快编译 BlobRunner 的步骤
编译 32 位版本(推荐新手先跑通这个)
在x86 版本的 Visual Studio Command Prompt中依次执行:
cl blobrunner.c完成后当前目录会生成blobrunner.exe,全程不到 10 秒。
编译 64 位版本(x64)
x64 版本用的是x64 Native Tools Command Prompt,命令只多两个输出参数:
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c/Fe指定生成的 exe 名为blobrunner64.exe。由于 x64 编译器不支持内联汇编,64 位版本改用CreateThread创建挂起线程的方式进入 shellcode,方便你在恢复线程前于线程入口下断点。
五、快速上手:调试你的第一段 Shellcode
拿到编译好的blobrunner.exe后,用法只有一个核心形式——把 shellcode 文件作为第一个参数:
BlobRunner.exe shellcode.bin标准调试流程:
- 用你喜欢的调试器(x64dbg、WinDbg、IDA Pro 等)打开
blobrunner.exe - 以
shellcode.bin为参数运行 - 在跳转到 shellcode 之前下断点
- 单步进入,开始分析
常用参数速查表
| 参数 | 作用 | 示例 |
|---|---|---|
--offset <偏移> | 从指定偏移处进入 shellcode(支持0x十六进制) | BlobRunner.exe shellcode.bin --offset 0x0100 |
--nopause | 跳转前不暂停(⚠️ 务必提前下好断点) | BlobRunner.exe shellcode.bin --nopause |
--jit | 移除执行权限触发 AccessViolation,交由系统配置的 JIT 调试器接管 | BlobRunner.exe shellcode.bin --jit |
--debug | 输出详细调试日志 | — |
--version | 查看版本并退出 | — |
没有参数时会打印帮助信息,说明缺少必需的文件参数。
六、进阶玩法:JIT 调试与 x64 Shellcode
用 --jit 让 JIT 调试器自动接管
加--jit后,BlobRunner 会把 shellcode 入口处的页保护改为不可执行(VirtualProtect),程序执行到该处时触发0xC0000005访问违例异常,Windows 随即拉起你预先配置的 JIT 调试器。调试器附加后,把该区域权限改回可读写可执行即可继续单步,例如在 x64dbg 中使用setpagerights <region>, ExecuteReadWrite。
调试 x64 Shellcode 的原理
x64 版本会在跳转前提示你"到线程入口下断点,按任意键恢复线程"。挂起线程 + 入口断点的组合,正是绕过 x64 无内联汇编限制的经典做法,也是changelog.txt中 0.0.2 版本引入的重要能力。
七、常见问题速答
- 找不到 cl 命令?请确认是在 "Visual Studio Command Prompt" 中执行,而不是普通终端。
- x64 编译产物名不对?加上
/Feblobrunner64.exe参数显式指定输出名。 - 哪里找测试用的 shellcode?可用 Metasploit 的 msfvenom 快速生成,例如生成一个 x86 的
windows/exec计算器载荷存为test2.bin即可拿来练手。 - 远程调试怎么办?流程与本地一致,只需把 shellcode 文件拷到远程机器,并把远程路径作为参数传入。
八、总结
你现在已经掌握了 BlobRunner 从源码到可执行文件的完整链路:安装 Visual C++ Build Tools → 克隆仓库 → 一条cl命令完成 32 位或 64 位编译 → 配合--offset、--jit等参数进入调试实战。作为一个单文件、零依赖的 Shellcode 调试加载器,BlobRunner 值得放进每一位恶意软件分析人员的工具箱里 🛠️
【免费下载链接】BlobRunnerQuickly debug shellcode extracted during malware analysis项目地址: https://gitcode.com/gh_mirrors/bl/BlobRunner
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考