获取小程序前端源码

一、使用安卓模拟器获取到.wxapkg文件 

1、电脑端安装安卓模拟器(要求自带root权限)

        我使用的是夜神模拟器,下载地址:https://www.yeshen.com/cn/download/fullPackage

2、打开安装好的安卓模拟器,并在模拟器中安装QQ、微信、RE管理器

        QQ、微信在模拟器自带的应用商店里搜索下载安装即可

        RE管理器的下载地址:https://pan.baidu.com/s/1PPBx08rNutXxhlMMJbuTpQ,下载好后直接拖拽进打开的模拟器窗口就会自动安装

3、在模拟器里打开微信,然后在微信中运行你想要获取的小程序

4、下载.wxapkg文件 

        直接切回模拟器桌面,运行RE浏览器,来到目录 /data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/

        下载该目录下的.wxapkg后缀的文件:一般小程序的文件不会太大,可以结合时间来判断,长按压缩所选文件,然后再将压缩好的包通过QQ发送到我的电脑

二、使用反编译脚本解包 wxapkg

1、安装nodejs

        如果没有安装nodejs,请先安装一下,下载地址:https://nodejs.org/en/

2、下载反编译的脚本

        这里提供一个Github上qwerty472123大神写的node.js版本的,地址:https://github.com/qwerty472123/wxappUnpacker

3、将反编译脚本复制到node命令行目录

        打开nodejs命令窗口(Node.js command prompt)

        打开node命令行之后,可以看到此时命令行所在的目录,把那几个反编译要用到的脚本放在该目录下(后缀.js .json的文件才是有用的文件)

4、在node命令窗口中依次安装如下依赖

        npm install esprima 

        npm install css-tree 

        npm install cssbeautify 

        npm install vm2 

        npm install uglify-es 

        npm install js-beautify 

        npm install escodegen 

5、解包

        node wuWxapkg.js [-d]  //files就是你想要反编译的文件名 

        例如:node wuWxapkg.js D:\wxapp\_-1465904499_11.wxapkg

6、获取源码

        反编译之后的文件目录地址和反编译的文件地址是一样的,可在微信开发者工具中运行源文件

重点:

    反编译过程中出现错误: $gwx is not defined和__vd_version_info__ is not defined

    修改wxappUnpacker文件中的wuWxss.js

function runVM(name, code) {

// let wxAppCode = {}, handle = {cssFile: name};

// let vm = new VM({

//    sandbox: Object.assign(new GwxCfg(), {

//      __wxAppCode__: wxAppCode,

//      setCssToHead: cssRebuild.bind(handle)

//    })

// });

// vm.run(code);

// for (let name in wxAppCode) if (name.endsWith(".wxss")) {

//    handle.cssFile = path.resolve(frameName, "..", name);

//    wxAppCode[name]();

// }

    let wxAppCode = {};

    let handle = {cssFile: name};

    let gg =new GwxCfg();

    let tsandbox = {

$gwx: GwxCfg.prototype["$gwx"],

        __mainPageFrameReady__: GwxCfg.prototype["$gwx"],  //解决$gwx is not defined

        __vd_version_info__: GwxCfg.prototype["$gwx"],  //解决__vd_version_info__ is not defined

        __wxAppCode__: wxAppCode,

        setCssToHead: cssRebuild.bind(handle)

};

    let vm =new VM({sandbox: tsandbox});

    vm.run(code);

    for (let namein wxAppCode) {

if (name.endsWith(".wxss")) {

handle.cssFile = path.resolve(frameName, "..", name);

            wxAppCode[name]();

        }

}

}


你可能感兴趣的:(获取小程序前端源码)