【问题标题】:frida hook native non exported functionsfrida hook 原生非导出函数
【发布时间】:2021-09-20 18:13:11
【问题描述】:

出于学习目的,我正在反转这个 android 应用程序,并且该应用程序在本机层上实现了所有有趣的功能,因此我在 arm android studio 映像上运行该应用程序并反转了共享库。所以该应用程序正在调用, 使用 ghidra 我设法将共享对象反编译为 c,我发现了很多相互调用的函数,我还发现了尊重 jni 命名约定的函数

我可以成功挂接上述任何导出,但是当我尝试挂接以下函数时,我得到一个导出未找到我如何挂接这些本机函数?

【问题讨论】:

  • 请编辑您的问题并添加您使用的 Frida 代码的相关部分。

标签: android reverse-engineering frida ghidra


【解决方案1】:

我假设你正在使用 frida 的方法Module.findExportByName。这种方式仅适用于导出的函数。然而,在您发布的 Ghidra 屏幕截图中可见的方法似乎是一个甚至没有名称的内部函数。

FUN_002d5044 等显示的名称是由 Ghidra 生成的,因为该函数没有名称。它基本上意味着“地址 0x002d5044 处的未命名函数”。

请注意,Ghidra 中显示的地址可能还包括一个固定的基地址(名为 Image Base)。如果 Image base 不为 0,则必须从显示的地址中减去此值以获取可用于挂钩的地址。

你应该能够通过使用它的地址和实现它的模块的基地址直接挂钩一个未命名的函数。

您只需在以下代码中插入正确的moduleName

const moduleName = "insert module name here";
Interceptor.attach(Module.findBaseAddress(moduleName).add(0x002d5044), {
                   onEnter: function(args) {
                       ...
                   }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多