gl0bal01/pwndocker-reverse
GitHub: gl0bal01/pwndocker-reverse
该项目提供集成了 45+ 个 Pwn 和逆向工程工具的 Docker 镜像,预装多款反汇编器并支持 GDB 插件一键切换。
Stars: 1 | Forks: 0
# pwndocker-reverse
[](https://github.com/gl0bal01/pwndocker-reverse/actions)
[](https://ghcr.io/gl0bal01/pwndocker-reverse)
[](https://github.com/gl0bal01/pwndocker-reverse/blob/master/LICENSE)
一个将 45+ 个 CTF pwn 和逆向工程工具打包进单个 Ubuntu 24.04 镜像的 Dockerfile。包含 7 款反汇编器和反编译器(Ghidra、IDA Free、Binary Ninja Free、Cutter、radare2、rizin、retdec),3 个支持一键切换的 GDB 插件,以及预填充的命令历史。
IDA Free 和 Binary Ninja Free 是从其供应商的免费版本下载安装的。用户需自行确保遵守各供应商的许可条款。
## 为什么?
如果宿主机已安装 Docker,该镜像将 45+ 个工具——否则需要分别安装 Python 包、基于 Java 的反汇编器、GDB 插件和 Ruby gems——打包进一个 Dockerfile 中。
## 快速开始
```
# 从 GHCR 拉取(最快)
docker pull ghcr.io/gl0bal01/pwndocker-reverse:latest
docker run -it --rm --cap-add=SYS_PTRACE -v $(pwd):/ctf ghcr.io/gl0bal01/pwndocker-reverse
# 或在本地构建
docker build -t pwndocker-reverse .
docker run -it --rm --cap-add=SYS_PTRACE -v $(pwd):/ctf pwndocker-reverse
# 使用 X11 转发(需要在宿主机上安装 X11 server —— 参见 GUI tools 部分)
docker run -it --rm --cap-add=SYS_PTRACE \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $(pwd):/ctf pwndocker-reverse
# 自定义 UID/GID(如果你的宿主机 UID 不是 1000)
docker build --build-arg CTF_UID=$(id -u) --build-arg CTF_GID=$(id -g) -t pwndocker-reverse .
```
您将以用户 `ctf` 身份进入 `/ctf` 目录,拥有 sudo 权限、oh-my-zsh 以及 97 条可通过 Ctrl+R 搜索的预加载历史命令。
## 可复现性 & 验证
该镜像 **每周一从 `master` 分支重新构建**,确保 `latest` 标签随上游工具版本保持最新。三种使用方式:
```
# Rolling(每周更新)—— 方便,但不可复现
docker pull ghcr.io/gl0bal01/pwndocker-reverse:latest
# 按周快照日期—— 较新但固定,适合 CTF 周末
docker pull ghcr.io/gl0bal01/pwndocker-reverse:weekly-20260406
# Immutable digest —— 完全可复现,在团队环境 / 脚本中固定此版本
docker pull ghcr.io/gl0bal01/pwndocker-reverse@sha256:
```
每个推送的镜像均使用 [cosign](https://github.com/sigstore/cosign) 签名(无密钥,通过 GitHub OIDC),并附带 SBOM 和 SLSA 溯源证明。在敏感环境中运行前请进行验证:
```
cosign verify ghcr.io/gl0bal01/pwndocker-reverse:latest \
--certificate-identity-regexp 'https://github.com/gl0bal01/pwndocker-reverse/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
# 检查 SBOM
docker buildx imagetools inspect ghcr.io/gl0bal01/pwndocker-reverse:latest --format '{{ json .SBOM }}'
```
## 工具列表
| 类别 | 工具 |
|---|---|
| **漏洞利用开发** | pwntools, angr, ROPgadget, ropper, one_gadget, seccomp-tools, qiling, pwninit |
| **库** | capstone, keystone, unicorn, z3, yara, r2pipe *(位于 pwntools venv 中)* |
| **反汇编器 / 反编译器** | Ghidra, IDA Free, Binary Ninja Free, Cutter (rizin), retdec, radare2, rizin, pycdc, jd-gui |
| **GDB** | pwndbg, GEF, PEDA + 切换脚本 |
| **十六进制编辑器** | ImHex, hexedit |
| **Fuzzing** | AFL++ |
| **动态分析** | frida, strace, ltrace, villoc |
| **工作流** | libc-database, pwninit, patchelf, binwalk, unblob, upx |
| **分析** | binary-refinery, opengrep, hash-identifier |
| **网络** | socat, ncat, tcpdump, tshark, nmap |
| **编辑器** | vim, neovim |
| **系统** | QEMU user-mode, wabt, gdb-multiarch, p7zip, oh-my-zsh |
## 使用方法
### 典型 CTF 工作流
```
# 启动容器并挂载你的挑战目录
docker run -it --rm --cap-add=SYS_PTRACE -v $(pwd):/ctf pwndocker-reverse
# 分析 binary
checksec --file=./challenge
file ./challenge
strings -n 8 ./challenge
r2 -A ./challenge
# 查找 gadgets
ROPgadget --binary ./challenge --ropchain
ropper --file ./challenge --search "pop rdi"
one_gadget ./libc.so.6
# 修补 binary 以使用提供的 libc
pwninit --bin ./challenge --libc ./libc.so.6
patchelf --set-interpreter ./ld-linux-x86-64.so.2 --set-rpath . ./challenge
# 编写并运行你的 exploit
python3 exploit.py
```
### GDB 插件切换
已安装三个插件,可即时切换:
```
gdb-pwndbg ./binary # launch with pwndbg
gdb-gef ./binary # launch with GEF
gdb-peda ./binary # launch with PEDA
gdb-switch pwndbg # set default for plain `gdb`
```
### GUI 工具(Ghidra、IDA、Cutter、Binary Ninja、jd-gui)
需要 X11 转发。在 Linux 上原生支持;在 macOS 上安装 [XQuartz](https://www.xquartz.org/),在 Windows 上安装 [VcXsrv](https://sourceforge.net/projects/vcxsrv/) 或使用 WSLg。
```
docker run -it --rm --cap-add=SYS_PTRACE \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $(pwd):/ctf pwndocker-reverse
# 在 container 内部
ghidra # launch Ghidra
ida64 ./binary # launch IDA Free
binaryninja ./binary # launch Binary Ninja Free
start-cutter.sh ./binary # launch Cutter (checks $DISPLAY)
jd-gui ./app.jar # launch Java decompiler
```
### 反汇编器(CLI)
```
r2 -A ./binary # radare2 with analysis
rizin -A ./binary # rizin with analysis
retdec-decompiler ./binary # decompile to C
pycdc ./script.pyc # decompile Python bytecode
```
### Fuzzing
```
afl-fuzz -i input/ -o output/ -- ./binary @@
afl-cmin -i input/ -o input_min/ -- ./binary @@
```
### 动态分析
```
frida -f ./binary -l script.js # hook functions at runtime
frida-trace -f ./binary -i "malloc" # trace calls
strace -f ./binary # system call trace
ltrace ./binary # library call trace
villoc /tmp/ltrace.out > heap.html # heap visualization
```
### Libc 识别
仅安装了 libc-database 的脚本。按需下载 libc:
```
# 首次使用:下载 libc database(运行一次)
cd /opt/libc-database && sudo PATH=/usr/bin:$PATH ./get ubuntu debian
# 然后使用它
libc-find d8 e9 31 60
libc-identify ./libc.so.6
libc-dump ./libc.so.6 system __free_hook
```
### 仿真
```
qemu-user -L /usr/arm-linux-gnueabihf ./arm_binary
qemu-user -g 1234 ./binary # start with GDB server on port 1234
```
### 网络
```
socat TCP-LISTEN:1337,reuseaddr,fork EXEC:./binary # host a binary
ncat -lvp 1337 # listen
tcpdump -i any -w capture.pcap # capture traffic
tshark -r capture.pcap # analyze pcap
```
## 预填充历史记录
按 Ctrl+R 并搜索。历史记录中已包含 97 条覆盖所有已安装工具的命令——无需记忆语法。
## 项目结构
```
Dockerfile # Single-file image definition (13 layers)
config/
gdb-pwndbg # GDB launcher (pwndbg)
gdb-gef # GDB launcher (GEF)
gdb-peda # GDB launcher (PEDA)
gdb-switch # Set default GDB plugin
jd-gui # java -jar wrapper
start-cutter.sh # GUI launcher with $DISPLAY check
start-ghidra.sh # GUI launcher with $DISPLAY check
zsh_history # Pre-populated command history
.dockerignore
```
## 许可证
[MIT](https://github.com/gl0bal01/pwndocker-reverse/blob/master/LICENSE)
标签:AD攻击面, Amass, Binary Ninja, Docker, Findomain, GDB, Ghidra, IDA, PWN, URL提取, Wayback Machine, 二进制安全, 云资产清单, 反汇编, 反编译, 安全工具集, 安全防御评估, 容器, 开发环境, 网络安全, 自定义密码套件, 请求拦截, 调试, 逆向工具, 逆向工程, 隐私保护