11

我正在使用该插件在 Python 中为IDA Pro反汇编程序编写脚本。idapython使用它,我能够填补 IDA 自动分析不足的空白。

让我难过的一个领域是用(为了更好的术语)“漂亮的名字”来命名位置/功能。我的意思的一个例子如下所示:

IDA 漂亮名字示例截图

idapython而 IDA Pro 本身只允许我输入基本的 C-ish 函数名称。如果我输入不允许的符号(例如范围解析运算符),它们将被下划线替换。但是,如果我手动输入一个错误的名称(例如__ZN9IOService15powerChangeDoneEm),IDA Pro为我美化它。

因此我的问题是:我怎样才能生成经过修改的名称idapython?是否有可用的名称修饰库?在 Python 中可用吗?我唯一的希望是摆脱重整功能g++并解决这个问题吗?

4

4 回答 4

6

我终于有时间挖了一点。

不幸的是我找不到工具,但我确实找到了资源。

如果您想要的只是 gcc3 方式中的名称修饰,那么请知道 gcc3 使用 Itanium C++ ABI,它具有标准化的名称修饰方案。我找到了两个文件:

作为参考,两者都来自Name Mangling的 Wikipedia 页面。

于 2011-01-12T12:28:28.427 回答
3

一种简单(alebit hacky)的方法是编译一个包含您想要的符号的 C++ 文件,然后从 .o 文件的符号表中提取必要的符号。通过一些工作,这可能会很好地编写脚本。

于 2011-01-12T10:04:33.487 回答
1

这是一篇文章,解释了 Visual 编译器如何完成重整。对于 gcc 完成的修改,我想你可以在binutils包的源代码中找到信息。

于 2011-01-12T12:37:40.113 回答
0

您可以使用具有 MangleContext 类的 Clang AST 库。

http://clang.llvm.org/doxygen/classclang_1_1CodeGen_1_1MangleContext.html

于 2012-05-12T03:22:54.817 回答