小程序爆破之旅---分析微信源码来解析微信小程序文件格式

一、前言

WX小程序已经出来很久了,发展其实一般般,就我个人来说从来没用过小程序,但是最近几款小程序的出现,就带上高潮了,跳一跳游戏,包你拼,包你听等小程序,很有意思的抢红包方式。而就在这时候,突然感觉小程序的前景还是很明朗的,但是我们不会介绍小程序怎么开发,而是考虑小程序的安全问题,我们从网上大致了解了小程序的开发流程和架构,主要依赖于网页开发,以及一个企业绑定的Appid,然后生成小程序包发布,WX用户在使用小程序功能的时候,就去网络下载到本地,解压运行,基于WX的内置WebView进行解析运行。


二、分析突破口

那么如果把小程序看成一个程序包,那么他肯定也有相对应的格式,类似于apk,dex等文件。而我们之前在原生app逆向的时候都知道,必须了解这些文件的格式。所以今天我们就先来看看微信小程序包的文件格式,这一篇也是开启小程序爆破之路的开端!下面我们先来看看WX小程序包的格式解析是什么?其实在想这个问题之前,我们需要找到突破口,因为我们知道WX本地肯定也是需要解析这个包然后运行,也就是我们需要从WX的源码中找到解析格式功能。这个突破点在哪呢?第一步肯定需要知道微信小程序包的格式是什么?我们用WX的6.6.1版本,玩了一个跳一跳游戏,会发现这个游戏包不是从服务器下发的,而是就在本地,我们也知道程序包原始项目结构大致如下:


所以说,这些文件编译之后打包成固定格式,放在WX应用的某个地方,而这个地方我们最能想到的就是assets目录了,所以就解压WX应用,去assets目录下查看:


从assets目录下,可以通过分析就这几个文件目录最有可能,依次排查查看之后发现,在whatsnew_embed目录中看到类似于这个文件:


我们如果去WX后台申请过的都知道:Appid格式是wx开头,后面是一串字符格式,所以这里肯定这个文件和小程序包有非常大的关系。


三、逆向分析

为了确定是否的确是这个文件格式,我们用Jadx打开WX的dex文件,这里要注意:WX的这个版本的包已经非常庞大了,所以最好不要直接用Jadx打开apk,不然电脑会卡死的,我们依次打开5个dex文件即可,就这样我的电脑已经卡的不行了,但是没办法为了分析必须打开5个dex,才能搜索全!

通过搜索发现,在classes4.dex中找到了,点击进入查看保存到本地的目录:


看看a.field_pkgPath字段值如何获取:


通过ad.ae方法获取,不过这里发现点击这个类是无法跳转的,而在Jadx中这种情况一般就是这个类或者方法在其他dex中实现的,所以我们需要去其他dex中查找:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值