当我使用 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_004d9f38
是67
的无效指令代码。程序如何才能正常工作?
【问题讨论】:
如果您按下d
并将光标指向67h
会发生什么?
我试过了,什么都没发生,我认为这是一些代码混淆的技巧?
【参考方案1】:
undefined
是一种特殊的数据类型,Ghidra 使用它来标记类型未知/尚未定义的位置。如果您右键单击函数名称和Edit Function
,您应该会看到一个类似这样的窗口,使这一点更清晰:
如果您将列表中的数据类型更改为例如qword
你得到的是qword FUN_1000081e0
而不是undefined FUN_1000081e0
:
【讨论】:
以上是关于当我使用 Ghidra 反汇编 .so 文件时,啥是未定义函数?的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编框架 | PyCharm 中导入 Capstone 反汇编框架 )