本文案例是酷狗app的signature分析,
文章目錄
- 引數分析
- Frida hook
- 生成示例
引數分析
所用環境:夜神模擬器7.0.0.6 ,系統版本安卓5,酷狗版本10.6.5 (模擬器推薦版本)

用Ak反編譯后,在工程搜索中檢索關鍵詞 signature

發現檢索出了很多的結果,根據經驗判斷signature和md5相關,所以更換檢索詞,檢索 “md5” , 又是一大堆結果

此時快速定位引數位置的話,可以使用objection從記憶體中定位,或者通過frida輸出當前所有使用md5的方法
在記憶體中所有已加載的方法中搜索包含特定關鍵詞的方法:android hooking search methods [search_name]
經過一番人工操作,簽名在 com.kugou.common.utils.ba 的b方法中生成
Frida hook
啟動frida,查看應用名 com.kugou.android

撰寫hook代碼
這里類中有很多同名b方法,所以需要overload多載,另外確定型別是String,所以引數型別為 ‘java.lang.String’
多載是指在同一個類內定義了多個相同的方法名稱,但是每個方法的引數型別和引數的個數都不同,
在呼叫方法多載的函式編譯器會根據所填入的引數的個數以及型別來匹配具體呼叫對應的函式,
import frida, sys
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
jscode_hook = """
Java.perform(
function(){
console.log("1. start hook");
var ba = Java.use("com.kugou.common.utils.ba");
if (ba != undefined) {
console.log("2. find class");
ba.b.overload('java.lang.String').implementation = function (a) {
console.log("計算引數a: " + a);
var res = ba.b(a);
console.log("計算result:" + res);
return res;
}
}
}
)
"""
process = frida.get_usb_device().attach('com.kugou.android')
script = process.create_script(jscode_hook)
script.on('message', on_message)
print('[*] Hook Start Running')
script.load()
sys.stdin.read()
運行hook代碼

把輸出的引數通過md5加密一下,和result進行驗證

驗證結果相同,signature即是引數進行拼接處理后的md5結果,
引數的開頭和結尾加上了都OIlwieks引數,
生成示例
import time
clienttime = round(time.time())
dfid='10wxeO4AE9lK0Ek13L1LrvgC'
mid='304291870705239990160554795323375833919'
extdata='8616f71390c954c3f52bf53841fa4518'
uuid='cc133b26f7e7c93a89a4f7309002ddb2'
appid='1005'
schash='0930c43952c442a194129d20f48182fc'
code='fc4be23b4e972707f36b8a828a93ba8a'
clientver='10659'
mixsongid='274337675'
clienttoken='5841e1d4296732bd0015f52838bdae21bbfe0ded81d1960f0db7edae4d11f4fb'
ver='10'
kugouid='1887484938'
childrenid = '82117948'
p = '2'
pagesize = '20'
OIlwieks = '28dk2k092lksi2UIkp'
sign_params = f'OIlwieks{OIlwieks}appid={appid}childrenid={childrenid}clienttime={clienttime}clienttoken={clienttoken}clientver={clientver}code={code}dfid={dfid}extdata={extdata}kugouid={kugouid}mid={mid}mixsongid={mixsongid}p={p}pagesize={pagesize}uuid={uuid}ver={ver}OIlwieks{OIlwieks}'
import hashlib
m = hashlib.md5()
m.update(sign_params.encode(encoding='UTF-8'))
sign = m.hexdigest()
print(sign)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/325629.html
標籤:其他
