在radare2中使用Demangle C++函数

逆向工程 雷达2
2021-06-30 09:54:44

我正在学习radare2。有没有办法在反汇编过程中对 C++ 函数进行 demangle?例如在 gdb

set print asm-demangle

变化

callq 0x400a30 <_ZNSo3putEc@plt>

callq 0x400a30 <_std::ostream::put(char)@plt>

编辑:我有 Ubuntu 的突触包管理器附带的radare2 0.9.6。我从https://github.com/radare/radare2重新安装了它现在我asm.demangle在输入后看到变量Ve,它被设置为 true,但名称仍然被破坏。

1个回答

检查e asm.demangle,并根据需要将其设置为 true 或 false。

你用的radare2版本是最新的吗?

您应该能够查看所有配置数据e

键入e??应该向您显示配置变量的完整列表及其描述。您可以通过输出所有具有图案瓦尔用grep还原函数

[0x00001d52]> e??~demangle
        asm.demangle: 在 disasm 中显示 demangled 符号
        bin.demangle:从 RBin 中导入 demangled 符号
            bin.lang:bin.demangle 的语言
[0x00001d52]>

需要告诉Radare2在启动时加载demangle信息,所以你可以设置bin.demangletrue,然后重新打开文件:

 e bin.demangle = true
 oo 

最后但并非最不重要的一点是,您可以使用以下命令在逐案基础上以重整形式提供符号名称iD

[0x7c810705]> iD cxx _ZNSo3putEc
std::ostream::put
[0x7c810705]>

顺便说一句,一个提示,而不是在这里问一个问题并永远等待:radare2 是自我记录的,所以你可以先输入?以获得帮助,然后附加?到每个命令,比如a?,或者pd?等等......