如何使用 Ghidra 在 ELF 中反编译 *.so 库的外部函数?

逆向工程 吉德拉 小精灵
2021-06-23 08:59:22

我的 ELF 文件中有一些 *.so 库。
我可以在 Ghidra 工具的“符号树”窗口的“导入”目录中看到 *.so 名称。
我认为 *.so 库中有一些外部函数。
如何使用 Ghidra 反编译 ELF 中 *.so 库的外部函数?

2个回答

最简洁的方法是Options在导入文件时单击

在此处输入图片说明

然后激活 Load External Libraries 在此处输入图片说明

并确保库所在的路径出现在您可以更改的列表中 Edit Paths 在此处输入图片说明

这会将所有必需的库导入 Ghidra:

在此处输入图片说明

并将外部符号解析为提供库:

在此处输入图片说明

您现在可以(自动)分析库,就像分析任何其他二进制文件一样,单击“thunked 函数”在此处输入图片说明将在新选项卡中打开定义函数的库。

如果你想以后做,你仍然可以手动导入库,然后通过上下文菜单操作链接他们Set External ProgramSymbol Tree(为特定库),然后运行FixupELFExternalSymbolsScript.javaGhidraScript

为此,请转到File->Add to Program...并从文件系统中选择此文件。它将被添加到 ghidra。您可能需要重新分析整个程序。之后,您应该在函数列表中找到这些函数,并可以在反编译中查看它们。