很遗憾WSL默认使用64bit的程序,不支持32位的程序,我们在不使用QEMU的情况下只能调试64位的程序。但也可以使用一些手段来达到调试32位程序的目的:
0.安装QEMU,修改pwnlib
安装QEMU
1 | sudo apt update |
这个时候在命令行里面输入
1 | qemu-i386-static |
查看是否安装成功
之后修改文件
/usr/local/lib/python3.6/dist-packages/pwnlib/context/__init__.py
在里面的native()函数中加入以下行:
1 | if arch == 'i386': |

之后调试32位程序的时候记得在脚本里面加上这句话就可以了:
1 | context.arch='i386' |
同时要注意连接函数的写法不能是
1 | sh=process("./pwn") |
而要是:
1 | sh=gdb.debug("./pwn") |
1.设置ubuntu默认root启动
进入目录
1 | cd C:\Users\hp\AppData\Local\Microsoft\WindowsApps |
2.修改ptrace设置
需要把下列文件里面的变量改成0(原来是1)
1 | echo 0 > /proc/sys/kernel/yama/ptrace_scope |
或者
1 | echo kernel.yama.ptrace_scope = 0 > /etc/sysctl.d/10-ptrace.conf #这个是持久化 |
3.下载WSL-terminal
WSL-terminal
向环境变量PATH里面加入WSL-terminal所在目录。
4.按照pwntools和pwndbg
pwntools
1 | apt-get update |
pwndbg
1 | git clone https://github.com/pwndbg/pwndbg |
5.编写pwn脚本
之后的pwn脚本都要添加下面这些话:
1 | from pwn import * |
或者
1 | from pwn import * |
如果open-wsl.exe不太好装可以使用以下脚本:
1 | from pwn import * |
6.动态调试
之后就可以愉快的动态调试了
64位
32位
说些什么吧!