Frida逆向hook 某题库app

发布于:2023-05-22 ⋅ 阅读:(134) ⋅ 点赞:(0)

接到一个需求, 需要app内部的题库, 通过抓包发现题目和选项返回的全是加密,jadx编译了一下,没有找到具体的解密地址,所以使用frida hook一下可以直接获取解密后数据

jadx寻找数据地址bean

  • 使用jadx反编译找到保存数据的beanList item
  • bean 装填地址
    在这里插入图片描述
  • QuestionBeanList item

进行 frida hook

import frida
import sys
rdev = frida.get_remote_device()
process = rdev.enumerate_processes()#获取手机所有进程
session = rdev.attach("xxxx")
script_js = """
        console.log("start");
        var List = Java.use('java.util.ArrayList');
        Java.perform(function(){
            var k = Java.use("com.lanjiyin.lib_model.util.TransUtils"); //hook 类名
            console.log("Hook start");
            k.onlineQuestionBeanToQuestionBean.implementation = function(a,b,c,d,e){ //onlineQuestionBeanToQuestionBean 方法名
            	var abc = this.onlineQuestionBeanToQuestionBean(a,b,c,d,e)  // 调用onlineQuestionBeanToQuestionBean 返回bean
            	send(abc.getAnswer())
            	send(abc.getTitle())
            	var ArrayList = Java.use('java.util.ArrayList');
            	var ArrayList = ArrayList.$new(abc.getOption());
            	for(var i =0; i<ArrayList.size(); i++){
            		var opt = Java.cast(ArrayList.get(i), Java.use("com.lanjiyin.lib_model.bean.tiku.OptionBean")) //循环每个题目的选项
            		send(opt.getValue())
            	}
            	return abc
            }
        });
        """
def on_message(message, data):
	print(message)
script = session.create_script(script_js)

script.on("message", on_message)
script.load()

sys.stdin.read()

输出结果

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到