Frida 通过 C 语言将 QuickJS 注入到目标进程中,获取完整的内存操作权限,达到在程序运行时实时地插入额外代码和数据的目的。官方将调用代码封装为 python 库,当然你也可以直接通过其他的语言调用 Frida 中的 C 语言代码进行操作。
Frida安装和启动
电脑端 Frida 安装
-
Frida 支持 python2 和 python3 版本,演示所使用的版本为 python3.8
pip install frida-tools
-
如果在安装中卡住,需要在 Frida 的 pypi 页面下载对应系统的 egg 文件,对应页面地址为:frida · PyPI ,并将该文件放置到个人文件夹路径下,例如
C:\Users\当前用户名,再重新使用命令安装。 -
安装完毕后可以通过命令
frida --version来查看安装的版本,确认是否安装成功。
手机端 Frida-server 安装
-
本次示例使用 Android App 作为目标程序,所以需要电脑端安装 SDK 环境,以便能够连接手机进行调试操作,还需在手机端准备一个 Frida-server,下载地址为:https://github.com/frida/frida/releases,下载匹配手机 CPU 架构和本地 Frida 版本的包。
-
下载之后解压文件,使用
adb push命令将文件推送到手机端,建议放置在/data/local/tmp文件夹中,并修改该文件的权限为 755,以便之后进行启动。
确认环境运行正常
-
通过 Frida 提供的一些小工具,对 Frida 的安装运行环境做简单的确认。
-
首先准备一个 Android 模拟器或者真机,将上一步中提到的 Frida-server 推送到手机端中,在本示例中将放置在手机的
/data/local/tmp文件夹内,并将文件命名为frida-server。 -
通过
adb shell命令连接手机,运行/data/local/tmp/frida-server &,将 Frida-server 放在系统后台自动运行。 -
在本地电脑终端中运行
frida-ps -U,结果如下展示手机中的进程信息,说明环境已经准备完毕。
PID Name ----- -------------------------------------------------- 1313 adbd 12621 android.process.acore 18037 android.process.media 14455 com.android.defcontainer 11656 com.android.deskclock...
示例
目标应用介绍
-
因为 Hook 需要通过分析源码中的逻辑来实现,所以先展示一下目标应用的源码部分,方便分析其中的逻辑,找到 Hook 时要修改的方法和变量。
-
代码是简单的猜黑白游戏,通过按下黑或白按钮,与电脑结果进行对比,结果相同加 1 分,结果不同分数清零,当满 100 分时打出胜利提示语。具体代码如下:
Frida Hook技术实战:改变Android应用行为

本文介绍了如何使用Frida在Android设备上实现Hook功能,通过Frida-server安装、环境配置及示例代码展示了如何修改应用程序内部变量值,以达到控制程序逻辑的目的。Frida的强大能力使得动态修改应用行为变得简单。
最低0.47元/天 解锁文章
5829

被折叠的 条评论
为什么被折叠?



