微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

frida 钩子本地非导出函数

如何解决frida 钩子本地非导出函数

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

我可以成功挂钩上述任何导出,但当我尝试挂钩以下函数时,我找不到导出,我该如何挂钩这些本机函数

解决方法

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

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

您应该能够使用未命名函数的地址和实现它的模块的基址直接挂钩未命名函数。您只需在以下代码中插入正确的 moduleName

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。