在Ida pro中拆解c函数

时间:2014-06-13 03:44:37

标签: c function

我是一名中级“C”学习者。我在c中编写了一个简单的函数,编译(发布)成功。 我了解到在函数中添加extern“C”会禁止编译器修改它的名称。所以,我在我的函数中添加了extern“C”,但在将它放到ida pro之后为什么我找不到我的函数名?

它包含很少的功能,但有一些子前缀,其他是编译器特定的,我找不到我编译的功能。

如果我的反汇编功能是错误的那么请建议,我知道它可以在构建时在Visual编辑器中完成,但我想以其他方式。

1 个答案:

答案 0 :(得分:2)

听起来你正在构建一个可执行文件。在构建库时,仅为导出的项目保留名称。当你构建一个可执行文件时,名称(被破坏或不被破坏)可以被丢弃(由编译器和链接器)因为它们不再需要 - 对可执行文件中的函数和变量的引用都是用数字完成的。

如果您将代码构建为库(.dll / .so / .dylib,具体取决于平台)并将您的函数标记为已导出,则会看到名称。

如果使用IDA查看中间对象文件(.o / .obj),也可以看到名称。那些仍然包含名称,因为链接器需要它们在链接过程中按名称查找函数。

最后,有一种方法可以让函数名称显示在IDA中 - 在启用符号的情况下构建可执行文件(例如,如果您正在使用MS工具,则生成.pdb文件)。 IDA将注意并提供加载符号,这些符号将名称与功能相关联。