BlobRunner 是一款简单工具,用于在恶意软件分析过程中快速调试提取出的 shellcode。
BlobRunner 为目标文件分配内存,然后跳转到所分配内存的基址(或偏移量)。这让分析人员能以最小的开销和努力快速调试提取出的工件。

要使用 BlobRunner,你可以从 releases 页面下载编译好的可执行文件,或按照下面的步骤自行构建。
构建可执行文件的过程直接且相对简单。
需求
构建步骤
cl blobrunner.c
构建 x64 版本的方法基本相同,只是使用 x64 工具集。
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
进行调试:
BlobRunner.exe shellcode.bin
在特定偏移处调试文件。
BlobRunner.exe shellcode.bin --offset 0x0100
调试文件,不在跳转前暂停。警告: 请确保在跳转前已设置断点。
BlobRunner.exe shellcode.bin --nopause
可选参数 --jit 可用于通过配置的实时调试器(JIT)调试 shellcode。要触发调试器,BlobRunner 会移除新分配内存区域的执行权限。这会导致程序在尝试执行加载的 shellcode 时引发 AccessViolation 异常(0xC0000005)。
在 Windows 上配置 JIT 调试器的说明可在此处找到。对于 x64Dbg,请参见 setjit 或 setjitauto。
示例:
BlobRunner.exe shellcode.bin --jit
加载调试器后,授予该区域可执行访问权限。使用 x64Dbg 时,可以使用 BlobRunner 返回的地址执行命令 setpagerights。
setpagerights <region>, ExecuteReadWrite
x64 编译器不支持内联汇编,因此为了支持调试 x64 shellcode,加载器会创建一个挂起的线程,这样你可以在线程恢复之前在线程入口处设置断点。
过程与本地调试 shellcode 几乎相同,唯一区别是需要将 shellcode 文件复制到远程系统。如果将文件复制到运行 win32_remote.exe 的同一路径,则只需使用文件名作为参数。否则,需要指定远程系统上 shellcode 文件的路径。
你可以使用 Metasploit 工具 msfvenom 快速生成 shellcode 示例。
生成一个简单的 Windows 执行载荷:
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin