构建
构建可执行文件的过程非常直接,而且相对轻松。
Windows 系统
所需条件
下载并安装 Microsoft Visual C++ Build Tools(微软 Visual C++ 构建工具)或 Visual Studio(Visual Studio 集成开发环境)。
构建步骤
打开 Visual Studio 命令提示符(即 Visual Studio Command Prompt)。 进入包含 BlobRunner 源代码的目录(即切换到存放 BlobRunner 代码的文件夹)。 通过运行以下命令来构建可执行文件:
cl blobrunner.c
构建 BlobRunner x64
构建 x64 版本的过程几乎与上述步骤相同,只是使用了 x64 工具链。
-
打开 x64 版的 Visual Studio 命令提示符(即 x64 Visual Studio Command Prompt)。
-
进入包含 BlobRunner 源代码的目录(即切换到存放 BlobRunner 代码的文件夹)。
-
通过运行以下命令来构建可执行文件:
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
用法
进行调试:
-
在您常用的调试器中打开 BlobRunner。
-
将 Shellcode 文件作为第一个参数传递。
-
在跳转到 Shellcode 之前添加一个断点。
-
步入 Shellcode 进行调试。
BlobRunner.exe shellcode.bin
在特定偏移量处对文件进行调试。
BlobRunner.exe shellcode.bin --offset 0x0100
对文件进行调试且在跳转前不停顿。警告:确保你在跳转之前设置了一个断点。
BlobRunner.exe shellcode.bin --nopause
即时(Just-In-Time,JIT)调试器 可选参数 --jit
可用于通过配置好的即时(JIT)调试器来调试 Shellcode。为了触发调试器,BlobRunner 会取消新分配内存区域的执行权限。这会导致程序在尝试执行加载的 Shellcode 时引发访问违规(0xC0000005)异常。
示例:
BlobRunner.exe shellcode.bin --jit
一旦调试器加载完成,授予该区域可执行权限。使用 x64Dbg 时,你可以使用 setpagerights
命令,并传入 BlobRunner 返回的地址。
setpagerights <region>, ExecuteReadWrite
调试 x64 Shellcode
由于 x64 编译器不支持内联汇编,因此为了支持调试 x64 Shellcode,加载器会创建一个挂起的线程,这允许你在恢复线程之前在线程入口处设置断点。
远程调试 Shellcode(IDAPro)
这一过程几乎与本地调试 Shellcode 完全相同,唯一的区别是你需要将 Shellcode 文件复制到远程系统。如果文件被复制到你运行 win32_remote.exe 的同一路径下,你需要使用文件名作为参数。否则,你需要指定远程系统上 Shellcode 文件的路径。
Shellcode 示例
你可以使用 Metasploit 工具 msfvenom 快速生成 Shellcode 示例。
生成一个简单的 Windows 执行有效载荷(payload)。
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin
项目地址
https://github.com/OALabs/BlobRunner
原文始发于微信公众号(风铃Sec):工具集:BlobRunner【Shellcode 快速调试工具】
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论