导读: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文件。

frida hook ios 配置 frida hook原理_android hook 第三方app

二、环境搭建

    1.下载FRIDA

Python -m pip install frida

Python -m pip install frida-tools

    下载完后,会在python的scripts目录下生成这几个文件:

frida hook ios 配置 frida hook原理_frida hook ios 配置_02

2、下载服务端

    在https://github.com/frida/frida/releases下载对应平台的服务端;

frida hook ios 配置 frida hook原理_android hook 第三方app_03

3、配置服务端

我是在模拟器中运行,以下都是以MuMu模拟器为说明。

frida hook ios 配置 frida hook原理_python_04

这是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 hook ios 配置 frida hook原理_python_05

这时,就设置好了。

三、帮助信息

    为什么在这里列出帮助信息,是因为我在这上面吃了不少苦头;刚开始我对帮助信息是不看的,因为是自信满满,以为很快就能搞定,等到折腾时才回过头来看帮助,发觉人家写得清清楚楚,我非要撞得头破血流,才回头;为了让你少走弯路,这里列出来:

frida hook ios 配置 frida hook原理_python_06

frida hook ios 配置 frida hook原理_frida hook ios 配置_07

至于其他的,自己看吧,不列了。

四、查看是否连接正常

 Frida-ps -R

//查看

frida hook ios 配置 frida hook原理_frida hook ios 配置_08

出现这样的,就说明连接上了。

五、执行 python + java

我当时对怎么执行python非常的困惑,费了不少劲,在网上也找了很久,后来知道了,特简单就是python name.py。

frida hook ios 配置 frida hook原理_android hook 第三方app_09

1)py的例子:列出进程。

frida hook ios 配置 frida hook原理_服务端_10

2)python+java:

frida hook ios 配置 frida hook原理_frida hook ios 配置_11

Py+java的例子,查看app中信息。