我们来分析某生活服务App的返回数据加密问题,先打开首页的一篇文章,抓包结果:
getfeedcontent.bin 这个接口就是我们要的数据,不过很明显,加密的比较彻底,全部都是密文。
返回数据加密和sign定位不一样,没有很明显的sign字符串可以去查,只能从http请求入手
var OkHttpClient = Java.use("okhttp3.OkHttpClient");wCall.implementation = function (request) {var result = wCall(request);console.String());var stack = threadinstance.currentThread().getStackTrace();console.log("http >>> Full call stack:" + Where(stack));return result;
};
跑一下,没有 getfeedcontent.bin 相关的数据。
var URL = Java.use('java.URL');
URL.openConnection.overload().implementation = function() {var retval = this.openConnection();console.log('URL openConnection' + retval);var stack = threadinstance.currentThread().getStackTrace();console.log(">>> openConnection Full call stack:" + Where(stack));return retval;
};
这次运气不错,找到了 getfeedcontent.bin 的请求,不过堆栈却没有什么参考价值。
堆栈唯一告诉我们的也就是App在网络访问这块用了RxJava,我们会看到一堆onNext和onComplete
怎么办?正在一筹莫展之际,突然想起 Android Device Monitor,
Note:
Android Device Monitor是android自带工具,在sdktoolsmonitor,可以查看特定行程中正在运行的线程以及堆栈信息。
比较有嫌疑的是 onRequestFinish 之后调用了 resolveDate ,并且返回值还是个 String 。 Hook它看一眼。
var MapiModuleCls = Java.use(picassomonbridge.MapiModule');
solveData.overload(archive.DPObject', 'boolean', 'int').implementation = function(a,b,c){var result = solveData(a,b,c);console.log("resolveData rc=" + result);return result;
}
跑一下结果出来了,收工。
三、总结
善用sdk自带的工具,往往事半功倍。
有问题可以加我wx: fenfei331
本文发布于:2024-02-02 17:58:21,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170686792145482.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |