反编译微信小程序

更新时间:2018-12-13 15:24:00 点击次数:1618次

前言

最近有一个任务,就是让我试下反编译微信小程序,搞起。事先说明,写这篇博客,只是为了记录过程,不建议大家都去反编译,毕竟都是别人的劳动成果。然后反编译的这个事例,也打了码。如果贵公司的人发现了,希望及早更新处理下,以免接口的泄露。

准备工具

1、node.js环境,https://nodejs.org/en/
2、反编译脚本,https://github.com/qwerty472123/wxappUnpacker
3、夜神模拟器,https://www.yeshen.com/ 主要是用来登录微信,运行小程序,然后再拿到小程序的安装包 wxapkg

1、获取小程序的安装包

1、我试了小米手机是拿不了小程序的安装包的,即使是root了也不行,目录是空的。所以,用夜神模拟器吧。打开夜神模拟器,里面有个应用中心,直接搜索微信下载安装吧。安装好微信后,登录微信,打开你想要反编译的小程序。ok,打开后,回到桌面,打开桌面的“ES文件浏览器”:


打开ES文件浏览器

打开root开关

打开根目录

然后找到这个路径:/data/data/com.tencent.mm/MicroMsg/1bd6b8205e3a41715b8e2cca72bc50f0/appbrand/pkg/
里面有你运行过的小程序安装包,把它复制到主目录,然后再通过微信发到你的电脑吧,然后就拿到了小程序的安装包。


2、下载反编译脚本到本地,并安装相关配置

脚本目录

打开命令窗口,cd到上面这个目录,然后输入以下:

npm install esprima 
npm install css-tree 
npm install cssbeautify 
npm install vm2 
npm install uglify-es 
npm install js-beautify 
npm install escodegen 

完了后,就到最后一步,输入:node wuWxapkg.js +空格+安装包目录,如下图


然后就会自动反编译,在安装包目录生成一个文件夹:


3、打开项目编译

打开微信开发工具,自己在后台创建一个小程序,拿到appid,并填进去。



点击确定后,就能进去页面了,这个时候,会提示以下错误:



这个是因为小程序的请求域名,都需要在后台配置的。所以,你需要把这个域名,在你创建的那个小程序开发设置那里,填上。填上后,重新启动开发者工具,这时,应该就正常了。如下图:

然后,我们可以看到里面的代码,都非常的清晰。



连接口都能看出来,这样别人就能直接调用这个接口了。

总结

局限(包括但可能不限于以下内容)
1、实现中很多功能基于特定的版本(wcc-v0.6vv_20180111_fbi, 且不考虑面向低版本适配)和字符串搜索,所以不能很好的适应各种特殊情况。
2、wxml 文件拥有不同于 xml 和 html 文件的字符转义规则,且尚未公开(并非"没有"),因此未能很好的还原相关内容。
3、js 文件被压缩后会丢失原始变量名等信息内容无法还原;wxss 文件压缩后的注释也会丢失。
4、wxs 文件会将所有的变量如 Math 改为 nv_Math ,这里仅通过字符串替换去除。
5、一些被引用 wxss 文件本身的源文件丢失,因此无法恢复原始目录。
6、有些项目开启了难以复原的es6转es5选项,检验本项目结果是否正确时需要关闭项目中的es6转es5选项。
7、wxml 中一些无法找到相对应 的正向语句的内容无法还原。
8、json 中components项丢失,仅会标注被其他包引用的自定义组件。

最后说两句

大家可以利用这个工具,试试自己的小程序,是否能被反编译出来,然后采取一些混淆措施等等。
尽量别动坏心机,造成商业犯罪就不好了。


本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!