Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
decomp2dbg — 一款将交互式符号从反编译器引入调试器的插件 | Kitploit
工具/GitHubGitHub/mahaloz/decomp2dbg
静态分析动态分析 (沙盒)逆向工程调试器二进制分析二进制利用
GitHubmahaloz/decomp2dbg

decomp2dbg

一款将交互式符号从反编译器引入调试器的插件

查看仓库
812481个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

decomp2dbg

逆向工程涉及静态(反编译器)和动态(调试器)分析,然而我们经常使用这些分析却没有在两者之间共享知识。在对静态二进制文件进行逆向时,在调试器汇编和你在反编译中还原的符号之间进行上下文切换可能效率低下。

decomp2dbg旨在通过引入一个通用的API用于反编译器到调试器的符号同步,缩短反编译器和调试器之间的上下文切换差距。实际上,它赋予了逆向工程师使用调试器的能力,同时拥有他们在反编译器中恢复的符号和反编译行。

decomp2dbg

想看看decomp2dbg实际应用的样子?请观看在CactusCon 2023上录制的演讲,其中演示了使用Ghidra符号从x64机器调试远程arm32二进制文件。

如需实时帮助,请加入下方的BinSync Discord,我们在那里回答decomp2dbg问题:

Discord

支持的平台

反编译器

  • IDA Pro (>= 9.0): Demo w/ GEF
  • Binary Ninja (>= 2.4): Demo w/ GEF
  • Ghidra (>= 12): Demo w/ GEF
  • angr-management (>= 9.0)

调试器

  • gdb
    • GEF
    • pwndbg
    • vanilla

安装

通过pip安装,然后使用内置安装器安装反编译器插件:

root@kitploit:~
pip3 install decomp2dbg && decomp2dbg --install 

这将打开一个提示,要求你输入所选反编译器和调试器的路径。对于Ghidra,你需要以PyGhidra模式启动,并启用插件(d2d_client.py),如这里所示。如果你在Binja插件管理器中安装了反编译器端,你仍然需要按上述方法安装调试器端。注意:你必须将decomp2dbg安装到与反编译器和调试器相同的Python环境中。

注意:你可能需要允许端口3662(或你使用的端口)上的入站连接,以便decomp2dbg连接到反编译器。如果你在安装decomp2dbg时使用GEF或pwndbg,那么在~/.gdbinit中,d2d.py文件必须在GEF或pwndbg之后被source。

手动安装

如果你能毫无错误地使用上述安装,请跳过此部分。如果你无法使用上述内置脚本(非WSL Windows安装反编译器),请按照以下步骤操作:

如果你只需要反编译器端,将相关的反编译器插件复制到反编译器的插件文件夹中。以下是在IDA中的操作步骤:

首先,克隆仓库:

root@kitploit:~
git clone https://github.com/mahaloz/decomp2dbg.git

安装:

root@kitploit:~
pip install .

复制所有服务器文件:

root@kitploit:~
cp ./decomp2dbg/d2d_server.py /path/to/ida/plugins/

如果你还需要安装gdb端,请使用以下命令:

root@kitploit:~
cp ./decomp2dbg/d2d_client.py ~/.d2d.py && echo "source ~/.d2d.py" >> ~/.gdbinit

使用方法

首先,在你的反编译器上启动反编译服务器。你可能希望等待反编译器完成正常分析后再启动。正常分析后,可以使用快捷键Ctrl-Shift-D,或选择关联插件选项卡中的decomp2dbg: configure选项卡来完成。启动服务器后,你应该会在反编译器中看到一条消息:

root@kitploit:~
[+] Starting XMLRPC server: localhost:3662
[+] Registered decompilation server!

接着,在你的调试器中运行:

root@kitploit:~
decompiler connect <decompiler_name>

如果你在虚拟机或另一台机器上运行反编译器,可以选择提供连接的主机和端口。例如:

root@kitploit:~
decompiler connect ida --host 10.211.55.2 --port 3662

通过运行带有--help标志的反编译器命令,你可以了解如何使用所有命令。

首次连接可能需要最多30秒来注册,取决于二进制文件中全局变量的数量。如果一切正常,你应该会看到:

root@kitploit:~
[+] Connected to decompiler!

如果你正在将decomp2dbg用于库文件,即调试器附加的主二进制文件并不是你想要源码的二进制文件,那么你应该阅读README中的高级用法 - 共享库部分。

反编译视图

在每个断点事件上,你现在会看到反编译输出,以及你当前所在行与断点地址的关联。

函数和全局变量

来自反编译的函数和全局变量现在像普通的源级符号一样映射到GDB中。这意味着像打印和检查这样的普通GDB命令是原生的:

root@kitploit:~
b sub_46340
x/10i sub_46340
root@kitploit:~
p dword_267A2C 
x dword_267A2C

栈变量、寄存器变量、函数参数

函数中局部存储的一些变量是栈变量。对于可以映射到栈或寄存器的变量,我们将其作为便利变量导入。你可以像普通GDB便利变量一样查看其内容:

root@kitploit:~
p $v4

栈变量总是将其地址存储在栈上。要查看该栈变量实际的值,只需解引用该变量:

root@kitploit:~
x $v4

这也适用于函数参数(效果可能有所不同):

root@kitploit:~
p $a1

注意:在这种情况下,$v4只在你在同一函数中时被映射。一旦离开该函数,它可能被取消映射或重新映射为另一个值。

高级用法

共享库

当你希望为不是主二进制文件的内存区域显示反编译(和符号)时,例如调试共享库,你需要进行一些额外步骤。目前,d2d一次只支持连接一个反编译器,这意味着如果你当前连接了任何不是该库的反编译器,你需要断开连接。

在按照正常设置让你的反编译器为共享库运行d2d服务器后,你需要手动设置该库的基地址和结束地址:

root@kitploit:~
decompiler connect ida --base-addr-start 0x00007ffff7452000 --base-addr-end 0x00007ffff766d000

要查找库在内存中加载的基地址,建议你使用类似GEF的vmmap命令在内存空间中查找库名称。使用手动设置的地址连接后,符号工作方式与普通d2d相同。只有当你处于该地址空间范围内时,反编译才会显示在屏幕上。

功能

  • 自动更新反编译上下文视图
  • 自动同步函数名称
  • 可设置断点/检查的符号
  • 自动同步栈变量名称
  • 自动同步结构体
  • 在线DWARF创建
  • 函数类型同步
  • lldb支持
  • windbg支持
下载工具