二进制漏洞利用工具集参考,核心原则为:根据目标场景选择工具组合 → 调试定位漏洞 → 利用框架开发 exploit → 反编译辅助逆向分析。资料以决策树形式给出场景到工具的映射,并分阶段整理各工具的安装、命令与使用技巧。
一、工具选择决策树 需要调试二进制时:Linux ELF 选 GDB + GEF 或 pwndbg;Windows PE 选 x64dbg / WinDbg / Immunity Debugger;远程或嵌入式选 gdbserver + gdb-multiarch。需要反编译或逆向分析时:免费且功能强大选 Ghidra;商业标准选 IDA Pro;轻量命令行选 radare2(r2);快速查看汇编选 objdump。需要开发利用代码时:Python exploit 框架选 pwntools;ROP gadget 搜索选 ROPgadget / ropper;libc one-shot shell 选 one_gadget;Shellcode 生成选 msfvenom。需要动态追踪时:系统调用追踪选 strace;库函数调用追踪选 ltrace;内存错误检测选 valgrind;动态插桩选 Frida。需要编译测试二进制选 GCC(控制保护选项编译)。需要偏移量计算选 pwntools cyclic 或 Metasploit pattern_create / pattern_offset。
二、调试工具 GDB 基础:安装命令为 sudo apt-get install gdb;启动选项包括 gdb -q ./target_binary(安静模式)、gdb -q -x commands.gdb ./binary(自动执行命令文件)、gdb -q -p <pid>(attach 到运行中的进程)。核心命令涵盖执行控制(run、start、n/next/ni、s/step/si、c/continue、finish)、断点(br main、br *0x401234、br *main+23、del、watch)、查看信息(info functions、info registers、bt、bt full、print、p system)、反汇编(disassemble main、set disassembly-flavor intel)、内存查看(x/20gx $rsp、x/s、x/i $rip、x/10i $rip)、修改(set $rip、set follow-fork-mode child)。调试技巧包括让 GDB 地址与实际运行一致(unset env LINES/COLUMNS、set env _)、静态链接二进制定位输入函数(运行等待输入后 Ctrl+C 再 bt)、远程调试(目标 gdbserver --multi 0.0.0.0:23947,主机 gdb 后 target remote <ip>:23947)。 GEF(GDB Enhanced Features):安装命令为 bash -c "$(curl -fsSL https://gef.blah.cat/sh)";核心命令包括 checksec、canary、vmmap、xinfo、search-pattern、got、memory watch;漏洞检测包括 format-string-helper、heap-analysis-helper;Pattern 偏移计算包括 pattern create 200、pattern search $rsp;Shellcode 包括 shellcode search x86、shellcode get 61;内存 dump 使用 dump binary memory。 pwndbg:安装为 git clone https://github.com/pwndbg/pwndbg 后 cd pwndbg && ./setup.sh;特色为自动显示寄存器/栈/反汇编/源码,命令与 GEF 类似但界面不同。
三、利用开发框架 pwntools:提供上下文设置(context.binary、context.log_level)、连接方式(process、remote、gdb.debug)、IO 操作(sendline、send、recv、recvline、recvuntil、interactive)、地址与偏移(elf.symbols、elf.got、elf.plt、elf.search)、Packing(p64、p32、u64)、Cyclic pattern(cyclic、cyclic_find)、ROP(ROP(elf)、rop.call、rop.dump)。 ROPgadget:搜索所有 gadgets、特定 gadget(--only "pop|ret"、grep "pop rdi ; ret"、grep "pop rsi"、grep "syscall"),也可在 libc 中搜索。 ropper:搜索 gadget(--search "pop rdi"、--search "jmp esp")、生成 ROP chain(--chain execve)。 one_gadget:在 libc 中查找一键 shell gadget,输出包含地址与 constraints(如 rsp & 0xf == 0、rcx == NULL)。 Metasploit 工具:msf-pattern_create / msf-pattern_offset 计算偏移;msf-nasm_shell 查 opcode;msfelfscan 在 ELF 中搜索 gadget;msfvenom 生成 shellcode(示例含 linux/x64/shell_reverse_tcp 与 windows/shell_reverse_tcp,可指定编码器与坏字符)。
四、反编译与逆向工具 Ghidra:免费反编译,C 伪代码输出质量高;可用于查找栈溢出偏移(通过局部变量位置信息,如 local_bc 表示缓冲区偏移 0xbc,local_10 若为 canary 则偏移 0xac)、交叉引用分析、字符串搜索与引用追踪、脚本自动化分析(Java/Python API)。 IDA Pro:商业级反编译(Hex-Rays 反编译器);可远程调试 Linux 二进制(目标 ./linux_server64 -Ppass,IDA 中 Debugger → Process options 配置远程 IP);插件生态丰富;支持类型恢复、结构体重建等高级分析。 radare2(r2):分析二进制使用 r2 -A ./binary,命令包括 afl(列出函数)、pdf @main(反汇编 main)、iz(列出字符串)、axt @sym.system(交叉引用);rabin2 -i ./binary 查看导入函数及地址。 objdump:反汇编可执行段(-d -Mintel)、符号表(-t)、全部反汇编(-D)、查看特定段(-s -j .got、-s -j .plt)、查找函数地址(-t --dynamic-relo、-D | grep)、查看重定位(-TR)。
五、动态分析工具 strace / ltrace:strace 追踪系统调用(-f 跟踪子进程、-e trace=read,write 只追踪特定调用);ltrace 追踪库函数调用(-e strcmp 只追踪 strcmp)。 库地址与偏移查找:ldd ./binary | grep libc.so.6 查看 libc 加载地址;多次运行观察 ASLR 影响;readelf -s 查找 libc 中函数偏移;strings -a -t x 查找 "/bin/sh" 字符串偏移。 Core Dump 分析:启用 core dump(ulimit -c unlimited、sysctl -w kernel.core_pattern);使用 gdb --core=... --quiet ./binary 分析。 qltool(Qiling 框架):反汇编追踪,记录每条执行的指令(qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./binary)。 Immunity Debugger(Windows):Mona 插件命令如 !mona modules、!mona find -s "\xff\xe4" -m module.dll。
六、编译与环境配置 GCC 编译选项(测试用):关闭所有保护编译示例 gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack -o vuln vuln.c;各选项含义为 -fno-stack-protector 禁用 Stack Canary、-D_FORTIFY_SOURCE=0 禁用 Fortify Source、-z norelro 禁用 RELRO、-z execstack 栈可执行(禁用 NX)、-no-pie 禁用 PIE、-g 包含调试信息。编译 shellcode 使用 nasm -f elf64 shellcode.asm 与 ld shellcode.o -o shellcode。关闭系统 ASLR(测试环境)使用 echo 0 | sudo tee /proc/sys/kernel/randomize_va_space。
七、工具速查 调试类:GDB + GEF(Linux 标准调试器 + 增强插件)、pwndbg(GDB 另一款增强插件)、gdb-multiarch(跨架构远程调试)、x64dbg(Windows 调试器)。利用框架类:pwntools(Python exploit 开发)、ROPgadget(ROP gadget 搜索)、ropper(gadget 搜索 + chain 生成)、one_gadget(libc one-shot shell)、msfvenom(shellcode 生成)。逆向类:Ghidra(免费反编译器)、IDA Pro(商业反编译器)、radare2(命令行逆向框架)、objdump(快速反汇编)。动态分析类:strace(系统调用追踪)、ltrace(库函数追踪)、Frida(动态插桩)。编译类:GCC / nasm(测试二进制编译)。
适用场景:CTF 竞赛、漏洞研究、exploit 开发、逆向分析与二进制安全学习。限制:资料未提供各工具的具体版本要求、平台兼容性细节、收费与授权信息,部分工具(如 IDA Pro、Binary Ninja)仅提及名称或用途,未展开说明;实际使用需结合目标环境与合法授权。