站点图标 p0ise

WSL Pwntools通过wt打开gdb

前言

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

退出移动版