1,frida入门

安装

参考

Frida - 在Android上使用Frida

frida的安装需要在windows安装frida客户端和在安卓安装frida服务端。

windows安装客户端

安装frida

pip3 install frida

安装frida-tools

pip3 install frida-tools

查看是否安装成功

frida --version

> 14.1.2

手机端安装服务端

首先adb连接上手机, 查看手机的cpu

getprop ro.product.cpu.abi

> x86

然后根据型号 去github官方frida/releases](https://github.com/frida/frida/releases) 去下载对应的frida-server-XXX-XXX-XXX.xz, 注意第一个XXX为版本号, 和上面安装的服务器保持一致, 第二个XXX为设备类型, , 第三个XXX为cpu型号

不了解手机cpu型号的参考: Android 设备的CPU类

由于我们的客户端版本为14.1.2, 我们下载了frida-server-14.1.2-android-x86, 下载后解压

# 上传到手机中
adb push frida-server-14.1.2-android-x86  /data/local/tmp/

另开一个窗口,去操作运行

# 进入到手机shell
adb shell

# 重命名为 frida-server,方便后续运行
cd /data/local/tmp
mv frida-server-14.1.2-android-x86  frida-server

# 开启权限
chmod 777 frida-server

# 运行
./frida-server

手上的魅蓝note2, 不知道为啥一运行frida-server , 手机就重启, 只能使用模拟器去测试

夜神模拟器: 安卓5.1.1 7.0 , frida正常运行(5.1.1虽然上面看起来没问题, 但是到下面hook的时候就出现问题了, 一直在报timeout的错误)

判断frida是否正常运行

frida-ps -U

这个命令就能看到手机上的进程列表

rlF1jH.jpg

入门案例

参考

frida入门总结

下面示例的apk及代码(原文有链接, 防原文失效)

Android逆向之hook框架frida篇

hook java方法

1. 安装apk

安装上面参考中大神的fridajava.apk

2. 按照上面启动frida-server

新安装的app, 需要frida重启,否者获取不到

3. 添加端口映射

这样本地frida就能和手机上的frida-server进行通信

adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042

4. 编写hook脚本

import frida
import sys

jscode = """
Java.perform(function(){
    var MainActivity = Java.use('com.example.testfrida.MainActivity');
    MainActivity.testFrida.implementation = function(){
        send('Statr! Hook!');
        return 'Change String!'
    }
});
"""

def printMessage(message,data):
    if message['type'] == 'send':
        print('[*] {0}'.format(message['payload']))
    else:
        print(message)

process = frida.get_remote_device().attach('com.example.testfrida')
script = process.create_script(jscode)
script.on('message',printMessage)
script.load()
sys.stdin.read()

5. 运行

python fridajava.py