免责声明
文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业和非法用途,否则由此产生的一切后果与作者无关。若有侵权,请在公众号【爬虫逆向小林哥】联系作者
01
—
逆向目标
aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzY4MTI1NDQ=
02
—
抓包分析
x-sign x-sgext x-mini-wua
03
—
逆向过程
因为加密是在请求头里面,本来想hook addHeader,但是阿里系用的mtopsdk协议 hook不到的
Java.perform(function () {
var Builder = Java.use('okhttp3.Request$Builder');
Builder.addHeader.overload('java.lang.String', 'java.lang.String').implementation = function (key, value) {
if (key != null && key === 'x-sign') {
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()))
console.log('Header added: ' + key + ': ' + value);
}
var original = this.addHeader(key, value);
return original;
};
});
搜索大法
排除了几个目标最后定位在BuildParam这里 感觉跟okhttp类似
这里了 需要注意的点是,因为函数下面指令混淆太多,需要对jadx选项设置下
ok分析代码,一眼看见需要注意的点
进入这个getUnifiedSign hook看看
就是这里了
这里直接返回了需要的加密结果,直接xposed-rpc了
先把xposed基本hook该函数写好
ok没问题
接着让deepdrink给我们一份xposed-NanoHTTPD 的rpc代码
注意点一:
确保rpc-server只启动一次
注意点二:
我们分析的目标函数不是一个static 函数,因此在调用前需要获取类的初始化实例
获取类实例化对象,deepdrink告诉我可以先hook类的构造函数,然后传给RpcServer去使用
两个注意点之后就是构造请求参数的事情了,就不赘述了,直接看效果
04
—
算法还原
05
—
归纳总结
添加好友回复:交流群
原文始发于微信公众号(爬虫逆向小林哥):【安卓逆向】某鲜生平台Xposed-rpc方案
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论