前言
安全部门的大哥又双叒叕报了一个小程序的高危漏洞,他使用逆向工程破解了加密信心,用抓包修改了请求参数。又是头疼的一天…
想成为一名微信小程序的开发者,前端思路的学习和安全意识是非常有必要的,故务必掌握小程序反编译技能。
这里用到了2个工具《解密》与《逆向》(非原创,均来自网上的大佬)。
特别适合新手,而且都是免费的!都是免费的!都是免费的!第一次操作可能会慢一些,熟练了之后,3秒抓取一个小程序源码!
工具准备
下载地址:https://gitee.com/jiangsihan/wechat-applet-reverse-tool
包含:逆向工具、解密工具
逆向工具
目前用的是:wxappUnpacker
这个是一个大神开发的,之前可以在github下载,不过截止今天,大神已经关闭了下载,具体原因……你懂得。不过,开源是趋势,就像这个世界是不会停止开放的,因此我们还是有很多渠道可以获取,你可以通过自己的渠道获取,或者用我为你准备好的。
解密工具
先解密
网上有很多教程,是分苹果和安卓的,还要用到模拟器,其实不用那么麻烦,直接用微信PC客户端就可以了。
1、找到文件管理的位置
Applet 是存放小程序编译包的,
这里面存放的都是打开过的小程序包文件
2、打开小程序
在pc端打开一个小程序,尽可能点开所有的页面,让本地自动生成一个本地包,在刚刚设置好的文件夹里:
不过里面的是加密过的文件:APP.wxapkg就需要用到我们前面的解密软件。
3、解密
选择小程序的加密包,0.1秒解密成功:
加密后会存放在wxpack里面:
再逆向
正式用到大神开发的【wxappUnpacker】了。下面的操作,都是在cmd命令窗口中操作的,需要强调的是,必须在wxappUnpacker路径里才可以,简易方法是,直接在【wxappUnpacker】文件夹的地址栏里输入cmd即可。
1、逆向准备
打开逆向工具文件夹,直接输入cmd打开命令板:
检查是否有node环境啊!!
安装依赖,挨个执行:
npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
2、正式逆向
把刚才wxpack下的解密包直接拖过来:
bingo.bat 主包路径(可以直接拖入)
编译后的文件,会保存在wxpack文件包下:
OK,编译完成,接下来直接使用微信开发工具打开,即可学习前辈们的前端设计了,骚年。
3、可能的错误
如果在执行编译命令时报:
this package is a subPackage which should be unpacked with -s=<MainDir>.
说明这个是分包,打开小程序时生成了两个.wxapkg文件,编译另一个文件即可,编译分包和主包的命令是不一样的:
node ./wuWxapkg.js 分包路径 -s=主包路径
4、如果生成的文件里不包含app.json文件
说明你找的小程序,是大神开发的,已经做了反编译的安全措施,所以解密失败,这也是我发这篇文章的目的。不过这种大神目前还是比较少见的。
还是那句话:有心之人防不住,无心之人不用防。没有绝对,只有相对!