非深究文章。
事由:主要是浏览器内核太旧(非线上,安卓展示屏类),使得原生webview支持h5更多特性,需要升级内核,或者接入框架,但是腾讯的框架文档过于简陋,而且内核需要外网下载,但是实际环境很多是局域网,所以需要查看内核的下载地址(),然后装到局域网内,然后进行修改下载。。。
然后就是查看了。
我想着先要有日志,所以就看日志先了。。。
腾讯,混淆了代码的,只能耐心看。
文档类直接跳过:
主要是QbSdk.initX5Environment,然后里面
TbsDownloader.needDownload
继续跳转:TbsLog.i("TbsDownload", "[TbsDownloader.needDownload] oversea=" + var1 + ",isDownloadForeground=" + var2);
然后就想弄这个日志到底是什么机制
沿着文件找,最终是在com.tencent.smtt.utils.j里的a(混淆) 方法
最终是以文件的方式存在/mnt/sdcard/android/..../tbslog.txt
但是这个文件打开是乱码
然后就找最终的写入
最终找得的结构是,头部:头部长度+以packetname为key的RC4的当前时间,然后是内容:以当前时间为KEY的RC4加密。
很容易得到结论反解密:先取头部长度,取出头部,RC4解密得到当前时间,然后当前时间为KET解密内容。
注:问题点:1. 加密解密时时间用得多的问题,new String().getBytes(),会使byte[]的信息编译,除了iso-8859-1编码,加密解密时需要注意,问题点:2. 还是因为编码问题,如果解密时内容前面带了头部,会导致显示乱码(这个时候解密时成功的),但是头部在后,是可以非乱码的。这两个东西弄了我好长时间,慢慢解析不难。
然而还是失败了,比较伤,因为用的环境是以太网有线(没见过安卓用以太网把),
最终调试是需要一个测试网址http:\\----,进行内核处理,但是这个网站在没有接入X5SDK的webview上是显示不了的,所以最终还是很麻烦。
暂时放弃。
网友评论