PC版微信小程序反编译

2,909 阅读3分钟

工具准备

网上大部分资料可参考,资料做技术分享,简单做个整理。

首先你需要2个工具《解密》与《逆向》

UnpackMiniApp +wxappUnpacker 

www.aliyundrive.com/s/y7LbrRvgH…  (解密工具)

www.aliyundrive.com/s/6YRjqatfS… (逆向工具)

如果没有安装nodejs,请先安装。

nodejs.org/en/

输入node -v检查是否已安装nodejs

网上有很多教程,是分苹果和安卓的,还要用到模拟器,其实不用那么麻烦,直接用微信PC客户端就可以了。

解密小程序

1.找到微信PC端的小程序包位置

选择打开文件夹按钮,进入文件夹。

2.打开你需要的小程序,然后把尽量小程序所有页面都点一遍,让本地自动生成一个本地包。

找到Applet文件夹,里面wx开头的文件夹都是小程序。也为了方便找到自己的需要的小程序,你可以先选择全部删掉。

在PC版的微信左下角点击小程序进入,把页面都点击一遍。会重新生成wx开头的文件夹。

3.解密小程序包

找到刚刚下载《小程序包解密UnpackMiniApp》文件,选择加密小程序。

选择加密的小程序包 ,比如:xxxxx\Applet\wxf2cbce9781d76e34  ,搜索到 ‘__APP__.wxapkg’  文件

解密成功如图

会存放在wxpack文件夹

逆向小程序

这里开始使用wxappUnpacker,在下载好的wxappUnpacker文件夹使用cmd命令窗口操作。

直接在【wxappUnpacker】文件夹的地址栏里输入cmd即可。

1.安装依赖

依次输入下面7个npm install,分别一个一个安装

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文件夹的 wx开头的xxxxxxx.wxapkg解密文件用bingo.bat 命令运行

bingo.bat 主包路径(可以直接拖入)

编译后的文件,保存在和【wxf2cbce9781d76e34.wxapkg】同一个文件夹中,自动以wxf2cbce9781d76e34命名。 编译完成,接下来直接使用微信开发工具打开。

可能出行的错误

1.如果在执行编译命令时报

this package is a subPackage which should be unpacked with -s=<MainDir>.

说明这个是分包,打开小程序时生成了两个.wxapkg文件,编译另一个文件即可,编译分包和主包的命令是不一样的:

node ./wuWxapkg.js 分包路径 -s=主包路径

2.如果在执行编译命令时报

TypeError: subPackage.pages is not iterable

找到wxappUnpacker\wuConfig.js  第50行,对subPackage.pages 判断下

  if(subPackage.pages){     for (let page of subPackage.pages) {        let items = page.replace(root, '');        newPages.push(items);        let subIndex = pages.indexOf(root + items);        if (subIndex !== -1) {          pages.splice(subIndex, 1);        }    } }

3.如果生成的文件里不包含app.json文件

说明你找的小程序,是大神开发的,已经做了反编译的安全措施,所以解密失败。

4.用微信开发工具运行时报

_typeof3 is not a function

这个错误主要由于babel问题导致的
点击详情,本地设置,将JS编译成Es5取消选中

5.用微信开发工具运行时报

VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL is not defined

这个问题主要是错误处理导致的,我们直接无视掉,全局搜索然后删掉,注意再次编译需要清空缓存,不然可能出现代码没有了,但是编译依然存在的情况。

6.网络错误,无法发包

选择详情,本地设置,不校验合法域名,然后就可以正常调试了

7.编译后app.json中subPackages分包问题

在逆向工作中子包都打包进了主包,需自行挪到subPackages

附参考资料:

www.52pojie.cn/thread-1708…

bbs.tampermonkey.net.cn/thread-3794…