微信小程序反编译步骤

我们在学习一项新技能时,除了认真学习官方的规范、标准和技术文档之外,还需要借鉴和参考其他优秀的产品。新手或独立学习者看到做得好的产品就想学,而往往没有好的学习渠道,因此反编译成为了一个“不太好”但有效的学习方法。闲话少说,以下是从网上搜集加自身成功实践得来的操作步骤,供大家借鉴。

一、环境准备

1、nodejs

2、安卓模拟器:夜神模拟器

3、反编译工具脚本:wxappUnpacker,具体的微信小程序打包规则和反编译原理可以从这个github上查看

二、获取小程序包

1、在模拟器中安装微信,按正常操作方式打开小程序

2、在模拟器的文件浏览器上,找到类似以下路径:/data/data/com.tencent.mm/MicroMsg/1bd6bxxxxxxxxxxxxcca72bc50f0/appbrand/pkg/

1bd6bxxxxxxxxxxxxcca72bc50f0 这一串实际上是微信用户的某种唯一id

3、根据文件更新时间,或者凭感觉:)找到你要反编译的小程序对应的wxapkg程序包

4、利用模拟器右侧一个“电脑”图标工具,将该程序包移动到共享的文件夹,并且打开电脑文件夹,此时就从模拟器转移到电脑上了

三、安装反编译依赖

1、先安装nodejs

2、从github上clone wxappUnpacker后,从命令行进入到该文件夹

3、在命令行中执行以下安装依赖包的命令:(有些教程里带了-g参数,在实操时发现还是不带好用,就在unpacker的本地加载依赖项而不是全局)

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

四、开始反编译

1、继续在命令行中,执行以下命令:(该示例将要反编的包放在unpacker的上一级目录中)

node ./wuWxapkg.js ../_xxxxx_36.wxapkg

此时会类似以下报错:

D:\wxunpack\wxappUnpacker\node_modules\vm2\lib\main.js:225
                        throw this._internal.Decontextify.value(e);
                        ^
ReferenceError: __mainPageFrameReady__ is not defined
    at vm.js:3:5
    at Script.runInContext (vm.js:107:20)
    at VM.run (D:\wxunpack\wxappUnpacker\node_modules\vm2\lib\main.js:219:62)
    at runVM (D:\wxunpack\wxappUnpacker\wuWxss.js:69:6)
    at runOnce (D:\wxunpack\wxappUnpacker\wuWxss.js:86:27)
    at Array.preRun (D:\wxunpack\wxappUnpacker\wuWxss.js:166:5)
    at CntEvent.decount (D:\wxunpack\wxappUnpacker\wuLib.js:17:43)
    at ioLimit.runWithCb (D:\wxunpack\wxappUnpacker\wuLib.js:81:11)
    at agent (D:\wxunpack\wxappUnpacker\wuLib.js:54:14)
    at FSReqWrap.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:53:3)

结合网友的智慧,此时其实已经反编了js等代码,但wxss等还没成功,所以进入已反编出的文件夹中,找到page-frame.html文件,并用文本编辑器删除_mainPageFrameReady__()后保存

2、再次继续反编,此时执行以下命令即可:(没看代码,猜测是执行了好几个步骤的代码的最后一步,参数就是已反编出的文件夹路径)

node wuWxss.js ..\_xxxxx_36

到此,反编译就完成了,提示:

Guess wxss(first turn)...
Import count info: {}
Guess wxss(first turn) done.
Generate wxss(second turn)...
Generate wxss(second turn) done.
Save wxss...
Total use: 161.683ms

 

最后,再次强调,此大法只作为学习参考用,切勿妄而为之,切记切记!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值