继续上一篇https://blog.csdn.net/u014476720/article/details/83650566的操作
上一篇只分析出so包里面的 buildParam2 里面的加密方式,这一篇来看看buildParam1的加密方式
这里分析是已用户主页的接口
对应在分析buildParam1里面的加密方式的时候比较坑,可能是工具的原因,又或者是开发者设置的阻碍吧
ida打印的:
frida 打印出来的:
两个工具 = 后面都是有其他数据,直接拿内容去加密,很郁闷加密的内容和抓包的数据对不上
静态分析了一下so包,发现了一个可疑的方法返回
用frida 打印看看
返回了固定字符串 “&}ad3Y/=@Lt,"TB5kKX7UF!;}+kLdM.=”
后来分析了很久,反复打印输出测试,得出加密的固定格式是:
&}ad3Y/=@Lt,\"TB5kKX7UF!;}+kLdM.= + 内容 + &}ad3Y/=@Lt,\"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()
纠结了很久,终于搞定了