前言
Win10 WSL2 用 pwntools 进行gdb.attach()
时默认打开竟然是 cmd,不仅界面丑不说,还有很多字符显示有问题......
我记得用win11的时候一直是用 Windows Terminal 打开的啊.....
然而,网上逛了一圈,好像没找到这个教程?什么!我又看了眼丑陋的 CMD 和显示成方框的箭头......这我能忍?你还我的 wt!
于是,就自己折腾了一下......
步骤
WSL打开wt
执行别名不适用于 WSL 分发。 如果要从 WSL 命令行使用 wt.exe,可以运行
cmd.exe
直接从 CMD 生成它。/c
选项指示 CMD 在运行后终止。
WSL不能直接打开wt,但可以通过CMD生成,方法如下:
cmd.exe /c "wt.exe"
/c
选项指示wt生成完成后关闭cmd
wt打开gdb进行attach
pwntools使用gdb.attach
时,会生成一个/tmp/xxxx
的脚本,里面完成了gdb attach的操作:
#!/usr/bin/python3
import os
os.execve('/usr/bin/gdb', ['/usr/bin/gdb', '-q', './stkof', '10090'], os.environ)
只要用wt打开linux终端,然后执行该脚本即可,我们这里用wt打开bash,执行该脚本,命令如下:
wt bash -c /tmp/xxxxx/tmp/tmp7e7lwm5z
效果如下:
Pwntools设置打开终端选项
设置context.terminal选项来修改gdb.attach()
使用的终端:
context.terminal = ['cmd.exe', '/c', 'wt.exe', 'bash', '-c']
样式调整
在当前窗口打开
wt命令选项:
-w 0
分隔窗口
水平分隔
wt命令选项:
sp -V
设置窗口名称
wt命令选项:
sp --title ‘gdb‘
最终效果
完整命令行命令:
cmd.exe /c wt.exe -w 0 sp -V --title 'gdb' bash -c /tmp/xxxx
在Pwntools中设置context.terminal:
context.terminal = ['cmd.exe', '/c', 'wt.exe', '-w', '0','sp', '-V', '--title', 'gdb', 'bash', '-c']
参考
[1] 使用 Windows 终端的命令行参数, https://docs.microsoft.com/zh-cn/windows/terminal/command-line-arguments