导读:Frida就是一个很常用的Hook工具,只需要编写一段Javascript代码就能轻松地对指定的函数进行Hook,而且它基本上可以算是全平台的(主流平台全覆盖),除了Android以外,iOS和PC端的APP也可以用它来进行Hook,非常方便。
楔子:张老师推荐了一篇Frida的文章,觉得很有意思,就试了下,没想到因为不熟悉,让我好是一番折腾,确实值得记下来。
网上关于Frida的入门教程很多,回过头来看,觉得他们写得都对,那我怎么还是走了弯路了呢?思考原因,还是在于那些作者们不懂我的心,将每个我想要的答案都藏在不同的角落里,其他人就是满世界的复制粘贴,很难找到正解。而我就是将它们拾起来,串成珍珠。
一 、简介
(简介部分引用了网上原文:版权声明:本文为CSDN博主「qingemengyue」的原创文章)
Frida是一款基于python + javascript 的hook框架,适用于android/ios/linux/win/osx等平台。Frida的动态代码执行功能,主要是在它的核心引擎Gum中用C语言来实现的。
注入模式:大部分情况下,我们都是附加到一个已经运行到进程,或者是在程序启动到时候进行劫持,然后再在目标进程中运行我们的代码逻辑。这种方式是Frida最常用的使用方式。注入模式的大致实现思路是这样的,带有GumJS的Frida核心引擎被打包成一个动态连接库,然后把这个动态连接库注入到目标进程中,同时提供了一个双向通信通道,这样控制端就可以和注入的模块进行通信了,在不需要的时候,还可以在目标进程中把这个注入的模块给卸载掉。
嵌入模式:针对没root过的设备Frida提供了一个动态连接库组件 frida-gadget, 可以把这个动态库集成到程序里面来使用Frida的动态执行功能。一旦集成了gadget,就可以和程序使用Frida进行交互。
预加载模式:自动加载Js文件。
二、环境搭建
1.下载FRIDA
Python -m pip install frida
Python -m pip install frida-tools
下载完后,会在python的scripts目录下生成这几个文件:
2、下载服务端
在https://github.com/frida/frida/releases下载对应平台的服务端;
3、配置服务端
我是在模拟器中运行,以下都是以MuMu模拟器为说明。
这是mumu的服务端;
Adb connect 127.0.0.1:7555
//连接到MuMu模拟器
Adb push frida-server-12.8.14-android-x86_64 /data/local/tmp/frida-server64
//上传服务端程序到MuMu模拟器
Adb forward tcp:27042 tcp:27042
Adb forward tcp:27043 tcp:27043
//将模拟器端口转发到PC端口
Adb shell
//进入模拟器
Cd /data/local/tmp
Chmod +x frida-server64
//赋予执行权限
./frida-server64
//服务端监听
这时,就设置好了。
三、帮助信息
为什么在这里列出帮助信息,是因为我在这上面吃了不少苦头;刚开始我对帮助信息是不看的,因为是自信满满,以为很快就能搞定,等到折腾时才回过头来看帮助,发觉人家写得清清楚楚,我非要撞得头破血流,才回头;为了让你少走弯路,这里列出来:
至于其他的,自己看吧,不列了。
四、查看是否连接正常
Frida-ps -R
//查看
出现这样的,就说明连接上了。
五、执行 python + java
我当时对怎么执行python非常的困惑,费了不少劲,在网上也找了很久,后来知道了,特简单就是python name.py。
1)py的例子:列出进程。
2)python+java:
Py+java的例子,查看app中信息。