Minhal's Blog

Back

记录frida学习的一些东西。

环境#

  • kali2020
  • 小米6已ROOT刷入android10原生系统
  • python版本3.8

安装#

安装库#

pip install frida
pip install frida-tools
shell

也可以直接安装对应版本

pip install frida==x.x.x
pip install frida-tools==x.x.x
shell

安装server#

下载server#

直接进入 frida rlease 页面下载,这里要与安装的frida库版本对应,同时与手机架构对应。

安装server#

  • adb push frida-server /data/local/tmp # 把serverpush到手机中
  • adb shell # 进入手机控制台
  • su # 获取控制权限
  • cd /data/local/tmp #进入目录
  • chmod 777 frida-server #添加权限
  • ./frida-server & #添加到后台运行

可以通过命令frida-ps -R 检查是否成功。

frida 基础#

基础样例#

hook参数、修改结果(重载、隐藏函数的处理)#

demo样例源代码。

把这段代码编译成apk后安装在测试机,连接到主机通过 可以查看系统日志。

1

然后接下来是js代码

执行脚本

3

查看日志变化

2

远程调用#

这个实力主要是实现在py脚本中也可以调用secret函数。这里主要是使用的frida提供的RPC功能(Remote Procedure Call)

apk文件还是上一个样例的文件。

现在修改下js脚本。

然后修改对应的py代码

运行python脚本得到下面内容:

4

动态修改#

这里主要实现的功能不仅仅是可以用python调用app的函数。还要做到把数据从app传到python程序中,通过python代码修改传回到app里。 app代码:

app界面

5

接下来操作是python代码获取输入内容,并修改输入内容然后传输到app,通过验证。(包括admin) js代码主要实现是先截到输入内容,传输到python代码,然后等python传入新数据继续执行。 js代码

python代码

直接运行python代码,然后输入新的用户名和密码,我们原程序是本来不可以输入admin的,我们本代码就是通过输入其他内容,通过frida更改他的用户名参数,使得输入内容用户名为admin。 执行结果如下:

6

然后就实现了动态内容的修改。

参考链接#

Android Application Security Study [https://github.com/r0ysue/AndroidSecurityStudy] Frida Android hook[https://eternalsakura13.com/2020/07/04/frida/]

frida学习[持续更……]
https://minhal.me/blog/frida
Author Minhal
Published at 2021年4月6日
Comment seems to stuck. Try to refresh?✨