**声明:**本文仅作技术交流,严禁用于任何非法用途(如有冒犯,请联系我删除此文)
我是羊了个羊的游戏设计师,今天我被公司开除了,因为我掌握着第二关的通关密码,所有人都追着我,我现在无处可藏,只能向你求助。今天疯狂星期四,你V我50,我就把羊了个羊第二关的通关秘籍传给你
1.请求分析
先抓个包,发现小黄鸟和Charles都无法抓包,应该是做了证书校验,先不管它
使用jadx打开疯狂星期四App,发现使用了okhttp框架请求
直接hook请求代码,打印请求:
Java.perform(function () {
var Buffer = Java.use("okio.Buffer");
var BufferObj = Buffer.$new();
var chart = Java.use("java.nio.charset.Charset");
// d是最后/g是wtokn/c是压缩/b是中文
var hookintercept = Java.use('okhttp3.internal.connection.ConnectInterceptor');
hookintercept.intercept.implementation = function (a) {
var data = this.intercept(a);
console.log("请求的url值: " + a.request())
console.log("请求的headers值: " + a.request().headers())
var body = a.request().body();
if (body != null) {
body.writeTo(BufferObj);
console.log("请求的参数值: " + BufferObj.readString(chart.forName("UTF-8")))
}
//send("接口返回值: "+data)
console.log("接口返回值: " + data.peekBody(1000000).string())
var names = data.headers().names();
if (names.size() > 0) {
console.log("返回header");
for (var name in names) {
var value = data.header(name);
if (value != null) {
console.log(name + ":" + data.header(name));
}
}
}
return data;
}
});
通过分析接口请求,得到了几个比较关键的字段:kbsv、kbcts、kbck
通过分析代码得知
kbcts是一个时间戳、kbck是一个固定的字符串,kbck是一个字符串组合md5
其它就是一些设备号和初始化的一些东西了
2.结果
最终成功下单V50套餐
整体比较简单,除了抓包有点防护以外,其它都是些业务逻辑的东西