当我使用 Ghidra 反汇编 .so 文件时,啥是未定义函数?

Posted

技术标签:

【中文标题】当我使用 Ghidra 反汇编 .so 文件时,啥是未定义函数?【英文标题】:What is undefined function when I use Ghidra to dissemble a .so file?当我使用 Ghidra 反汇编 .so 文件时,什么是未定义函数? 【发布时间】:2021-08-28 04:42:58 【问题描述】:

我现在正在尝试破解 .so 文件,但发现了一个奇怪的部分:

然后按照FUN_004d9f38 引导我到这里:

谁能帮我理解什么是所谓的undefined __cdecl FUN_004d9f38(void),特别是什么是undefinde 函数。

如上面的代码所示。第一张图片的代码使用跳转指令跳转到FUN_004d9f38,但FUN_004d9f3867的无效指令代码。程序如何才能正常工作?

【问题讨论】:

如果您按下d 并将光标指向67h 会发生什么? 我试过了,什么都没发生,我认为这是一些代码混淆的技巧? 【参考方案1】:

undefined 是一种特殊的数据类型,Ghidra 使用它来标记类型未知/尚未定义的位置。如果您右键单击函数名称和Edit Function,您应该会看到一个类似这样的窗口,使这一点更清晰:

如果您将列表中的数据类型更改为例如qword 你得到的是qword FUN_1000081e0 而不是undefined FUN_1000081e0

【讨论】:

以上是关于当我使用 Ghidra 反汇编 .so 文件时,啥是未定义函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ghridra 反汇编 bin 文件

如何在反汇编的 ELF 可执行文件中查找(区分)库代码?

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编框架 | PyCharm 中导入 Capstone 反汇编框架 )

C++生成的DLL用啥工具反编译

什么软件能将C语言的执行文件反汇编为汇编源代码

dll文件如何反汇编成源码,C++语言编写