admin管理员组

文章数量:1662332

实验室最近想要分析下oppo软件商店的协议写爬虫,记录下分析sign加密字段的流程,比较简单。
应用商店的搜索、详情页以及类别请求用的sign的构成与加密方式都相同:

反编译搜索关键字段:

可以看到最后的加密方法为HashUtil.md5Hex,那么参数肯定是加密前的明文了,对md5Hex进行hook:

# -*- coding: utf-8 -*-
import frida, sys
def on_message(message, data):
    if message['type'] == 'send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)
jscode = """

Java.perform(function(){

    var temp = Java.use('com.nearmemon.util.HashUtil');

    temp.md5Hex.implementation = function(arg1) { 
        send("Hook start....");
        var result = this.md5Hex(arg1);
        send("***arg1***:" + arg1);
        send("***result***" + result);
        return result;
    };   
});
"""
process = frida.get_usb_device().attach('com.oppo.market')
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()

得到加密前的明文:

Sign字段构成:标黄部分为固定值,绿色部分为GET请求Header中ocs字段,为设备信息不同设备不一样,蓝色部分为Header中t字段,固定部分。红色部分为Header中id字段,设备IMEI号码。紫色部分为查询的url,keyword为搜索字。之后蓝色字段为前面ocs字段到url的string的length()值。之后为固定字段。

加密方法:先将上述字符串md5加密,再转换为十六进制。加密方法如下:

hook结果:

本文标签: 字段商店协议opposign