繼續上一篇https://blog.csdn.net/u014476720/article/details/83650566的操作
上一篇隻分析出so包裡面的 buildParam2 裡面的加密方式,這一篇來看看buildParam1的加密方式
這裡分析是已使用者首頁的接口
對應在分析buildParam1裡面的加密方式的時候比較坑,可能是工具的原因,又或者是開發者設定的阻礙吧
ida列印的:
frida 列印出來的:
兩個工具 = 後面都是有其他資料,直接拿内容去加密,很郁悶加密的内容和抓包的資料對不上
靜态分析了一下so包,發現了一個可疑的方法傳回
用frida 列印看看
傳回了固定字元串 “&}ad3Y/[email protected],"TB5kKX7UF!;}+kLdM.=”
後來分析了很久,反複列印輸出測試,得出加密的固定格式是:
&}ad3Y/[email protected],\"TB5kKX7UF!;}+kLdM.= + 内容 + &}ad3Y/[email protected],\"TB5kKX7UF!;}+kLdM.=
使用的代碼
#!/usr/bin/env python
# coding=utf-8
from __future__ import print_function
import frida, sys
rdev = frida.get_remote_device()
session = rdev.attach("cn.mama.cityquan")
native_hook_code = """
Interceptor.attach(Module.findExportByName("libframework.so" , "sk_get"), {
onEnter: function(args) {
send("sk_get value: "+Memory.readCString(args[0]));
},
onLeave:function(retval){
send("sk_get return:"+Memory.readCString(retval));
}
});
Interceptor.attach(Module.findExportByName("libframework.so" , "md5sum"), {
onEnter: function(args) {
send("md5sum value0: " + Memory.readCString(args[0]));
send("md5sum value1: " + args[1]);
send("md5sum value2: " + Memory.readCString(args[2]));
},
onLeave:function(retval){
send("return:"+retval);
}
});
"""
def on_message(message, data):
print(message)
script = session.create_script(native_hook_code)
script.on('message', on_message)
script.load()
sys.stdin.read()
糾結了很久,終于搞定了