使用decomp2dbg调试程序
使用
decomp2dbg工具,统筹使用IDA和gdb调试程序。截至到目前(2022-02-07),测试出工具的缺陷在于:函数较多时,会陷入卡顿状态;打开vmlinux,插件启动报错。
IDA和gdb的交互,很多gdb的插件都实现了一些,但是实现得最好的,还得是mahaloz/decomp2dbg: A plugin to introduce interactive symbols into your debugger from your decompiler (github.com)。这个项目很早之前就关注了,但是最开始其主要是基于pwndbg和gef实现的二次开发。
今天又逛到了这个仓,发现作者重新实现了一遍,不再依赖这两个插件,使得原生的gdb也能直接使用。目前,工具已经实现了很多实用的功能,因此,本篇博客简要记录一下该工具的使用步骤。
1-安装
对于windows上使用IDA的场景,选择手动安装会更好。苹果可以选择自动安装。手动安装的步骤如下:
首先,去官网clone仓库,拷贝decompilers/d2d_ida/*到IDA/plugins目录下面。
然后,在linux系统(WSL或者虚拟机均可)里面执行:
pip3 install . && \
cp d2d.py ~/.d2d.py && echo "source ~/.d2d.py" >> ~/.gdbinit
最后,在windows机器的防火墙中添加一个入站规则,选择端口为tcp/3662,只对私有域放行端口。
2-使用
第一步,使用IDA打开一个程序,然后在edit/plugins中选择Decomp2DBG,选择监听0.0.0.0和3662端口。
第二步,使用gdb调试同一个程序,启动之后,直接键入decompiler connect ida --host 192.168.xxx.xxx(LAN IP) --port 3662。就可以同步更新IDA的反编译代码了。

之后在IDA重命名了函数或者变量,也会在gdb中更新,并可以直接打印。还支持打印结构体,同步栈变量,断点等等,功能非常强大。

这样在gdb调试的时候,就知道程序运行到哪个函数了。
使用pwncli的话,可以使用命令pwncli de ./pwn -t -s "decompiler connect ida --host 192.168.xxx.xxx --port 3662" -b func,这个时候,func可以指定为IDA中重命名的函数,示例如下。
IDA里面是这样的:

以下为操作示例。

目前该工具已经支持调试so,其开发的功能概览如下:

总的来看,这个工具适合调试一些虚拟机或者分支很多的程序,或者结构体很复杂的程序。期待新的功能~
本文来自博客园,作者:LynneHuan,转载请注明原文链接:https://www.cnblogs.com/LynneHuan/p/17822206.html

浙公网安备 33010602011771号