雷电模拟器安装frida-server教程

本篇教程使用的是雷电3模拟器。雷电4以及真机的操作是完全一样的
为了更好的展示,创建一台新的安卓模拟器
雷电模拟器安装frida-server教程_第1张图片
并且在设置中确认开启了ROOT权限
雷电模拟器安装frida-server教程_第2张图片
然后安装待HOOK的app,这里我使用猿人学第十一题的APP作为展示
雷电模拟器安装frida-server教程_第3张图片
安装完成后正常打开就可以了,接下来去下载frida-server服务端,下载网址https://github.com/frida/frida/releases,因为我是用的是python3.7的版本,所以下载下载最新版本frida-server-14.2.2-android-x86.xz

雷电模拟器安装frida-server教程_第4张图片

下载后解压得到frida-server-14.2.2-android-x86,并重命名为fs,然后用adb指令发送到模拟器/data/local/tmp目录里面

adb push fs的路径 目标路径

adb push C:\Users\59276\Desktop\fs /data/local/tmp

发送完成后,进入安卓模拟器

adb shell

获取root权限

su

进入/data/local/tmp目录

cd /data/local/tmp

给fs权限

chmod 777 fs

开启fs服务端

./fs

然后还需要开启端口转发,新开启一个cmd窗口

adb forward tcp:27042 tcp:27042

雷电模拟器安装frida-server教程_第5张图片
这时fs服务端已经成功开启,然后可以编写py脚本进行hook了,app的分析就跳过了,与本篇无关。
安装frida前需要先安装frida-tools,执行pip install frida-tools安装。安装过程可能会发生报错,科学上网后重试。

然后安装frida,安装与frida-serve版本相同的frida模块,最新版可以直接pip install frida安装。
安装完成后可以编写一个简单的脚本进行HOOK

import sys
import frida

jscode = """Java.perform(function () {
    var OnlineJudgeApp = Java.use('com.yuanrenxue.onlinejudge2020.OnlineJudgeApp');
    OnlineJudgeApp.getSign.implementation = function (j) {
        send("参数: j");
        send(j);
        var sign = this.getSign(j);
        send("结果: sign");
        send(sign);
        return sign;
    }
});"""

# 等待绑定的回调函数
def message(message, data):
    if message["type"] == 'send':
        print(message['payload'])
    else:
        print(message)

process = frida.get_remote_device().attach('com.yuanrenxue.onlinejudge2020')  # 按包名的方式附加js脚本
script = process.create_script(jscode)  # 加载已有的js代码
script.on("message", message)  # 绑定发送时接收的回调函数
script.load()  # 载入js脚本
sys.stdin.read()  # 等待系统输入

运行后,在app内输入任意数字,然后点击查询,就会打印如下内容

参数: j
12
结果: sign
X+lUrtCOyoCzrGmT6rWEhzLoQJ#TpWJap+OjyrYQEOYldr#k+qFGqru45T9wkiEMXr#g56yICvMzo02JCtFYxlY5GTNk9oxAov3cA0ZW8b+s5vBUdI==

此时成功hook到函数的参数和返回值

你可能感兴趣的:(python,python)