frida native层 hook的思路技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了frida native层 hook的思路技巧相关的知识,希望对你有一定的参考价值。

参考技术A frida的native层

记录一下学到的技巧

对于hook native层时,静态分析so后发现有些方法字段啥的,跟踪链太长,进程跳转太过于导致无法向上,有时直接不知道从何处分析。

首先日志打开,这个是必须的,大部分的日志都是由一个字段来控制,找到这个字段修改它,在打印的日志的中,你会发现惊喜。

有的关键日志在并没有被打印出来,思路又陷入的僵局。

可以尝试hook libart.so   拿到jni的一些函数的值

比如findclass, getcharutf8String等等。

打印这个的函数值时,顺便打印下调用栈。

图片来自大佬的GitHub

https://github.com/lasting-yang/frida_hook_libart

frida inlineHook 中,有时候hook一些寄存器,会报错,这是因为他的指令又长又短,在32位中会常见,64位中都是长指令比较稳定不会报错。

如果你的是32位还报错,你可以向上或者向下的地址hook,观察你要hook的寄存器是否在其他的地址也能拿到值。

有的时候hook一些so时,so还未加载,到时地址是null的,在低版本中你可以hook dlopen, Module.findExportByName(null, 'dlopen');

在这个so被加载后再进行hook。dlopen,是底层用来加载so的函数;在高版本中hook android_dlopen_ext,;

有的时候修改参数的type 为JNIEnv* 时,修改失败(目前我没碰见,看到就记录下),可以导入jni.h来解决这个问题,还有一个简单方法是

shift+f11 打开loaded type libraries

然后右键 选择load type libaray,打开下面的窗口,选择Android arm就可以了

pass-----待记录

以上是关于frida native层 hook的思路技巧的主要内容,如果未能解决你的问题,请参考以下文章

App静态逆向分析思路浅析(过检测)

基于frida框架Hook native中的函数

Android安全Frida Native hook汇总

自搭的基于Frida一体化采集框架

一个Xposed免重启的思路

初识Frida--Android逆向之Java层hook