反编译小程序指南手册

发表于 干货, 技术原理, 计算机安全 2019-03-17 阅读数: 57

最近经常需要接触到小程序的相关知识,前段时间正好有时间进行了一次反编译小程序的尝试,效果还不错,可以获得我想要的所有小程序的源代码,写成手册以供大家交流学习。

1. 准备环境

开始之前,我们需要一个能够root的安卓环境,其实任意一款手机模拟器都可以,我这里使用的是网易MUMU. 在网易MUMU上安装微信并登陆使用你想要反编译的小程序。只要其出现在你的小程序列表中即可(比如这款封面下载助手)

1.png

然后进入MUMU自带的应用商城,下载RE文件管理器,打开后会让你给予它超级权限,选择一直允许即可。在其他浏览器上可能操作不一样,你也许需要先进入设置—超级权限,自动相应设为允许即可。

2. 提取wxapkg包

使用RE文件管理器打开文件夹:

/data/data/com.tencent.mm/MicroMsg/{一串16进制}/appbrand/pkg

你会看到许多wxapkg包,这些便是小程序的源代码文件。我们将其下载下来(下载方法可以自己选择,你可以使用共享文件夹,也可以使用发送到微信文件助手的方式)。

2.png

放到本地电脑上,准备下一步。

3.安装Node及我们需要的工具

下面我们需要对包进行反编译,需要的工具有:

Node

wxappUnpacker

Node 安装方法见下面这个教程:

http://www.runoob.com/nodejs/nodejs-install-setup.html

wxappUnpacker在这里下载:

https://github.com/qwerty472123/wxappUnpacker.git

安装配置完毕后,需要安装wxappUnpacker的依赖,你需要在命令行( Windows下为Cmd )中运行以下指令:

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

4. 反编译

然后将我们刚拉下来的包放置到下载解压完成的wxappUnpacker的文件夹下,运行以下指令:

node wuWxapkg.js _656745603_14.wxapkg

运行成功后会产生一个以该wxapkg为名字的文件夹。

若你产生了$gwx is not defined的错误,请按照一下方法修复:

将源代码:

3.png

4. 反编译

然后将我们刚拉下来的包放置到下载解压完成的wxappUnpacker的文件夹下,运行以下指令:

node wuWxapkg.js _656745603_14.wxapkg

运行成功后会产生一个以该wxapkg为名字的文件夹。

若你产生了$gwx is not defined的错误,请按照一下方法修复:

将源代码:

3.png

修改为:

4.png

5.查看反编译生成的小程序文件

其实产生的那个文件夹就是小程序的源代码了,使用微信开发者工具打开,由于我们没有不是该小程序注册人,所以我们只能选择体验小程序,不过你依然可以看到它的所有源代码。

5.png

如图所示,使用这个办法我们能看到小程序所调用的api,是个非常方便的技巧。

6.png

这其实是小程序的一个致命弱点,毕竟其始终脱离不了将前端代码下载到客户端的过程。所以开发者在开发小程序的时候,应当避免将敏感信息放在小程序中,这是很多开发者在无意间会犯的错误。

本教程仅供交流和学习,题图来自网络。

Add comment