百度出來一堆收費(fèi)教程糙臼,全是簡書上的,真優(yōu)秀啊恩商。秉承知識有價(jià)变逃,分享無價(jià)的精神,我終于用谷歌找到了眾多免費(fèi)教程怠堪,感謝無私分享的各位大佬們揽乱。分享有你,春暖花開粟矿。
下面是正事:
由于微信小程序升級的原因凰棉, github 上的 wxappUnpacker-master 小程序反編譯工具已部分失效,運(yùn)行 node wuWxapkg.js 命令時(shí)會報(bào) $gwx is not defined 或vd_version_info is not defined錯(cuò)誤
導(dǎo)致 page-frame.html 文件無法反編譯陌粹,無法解開 wxss 格式文件撒犀,wxss 文件缺失。
首先是$gwx is not defined掏秩,這種報(bào)錯(cuò)是最多的一種或舞,如圖所示:
那么解決辦法就是:
修改反編譯腳本wuWxss.js代碼
將原代碼:
functionrunVM(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]();
}
}
修改為:
functionrunVM(name,code){
let wxAppCode={},handle={cssFile:name};
let gg = new GwxCfg();
let tsandbox ={$gwx:GwxCfg.prototype["$gwx"],__mainPageFrameReady__:GwxCfg.prototype["$gwx"],__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)};
let vm = new VM({sandbox:tsandbox});
vm.run(code);
for(let name in wxAppCode)if(name.endsWith(".wxss")){
handle.cssFile=path.resolve(frameName,"..",name);
wxAppCode[name]();
}
}
第二種就是vd_version_info is not defined錯(cuò)誤
解決方法如下:
找到
function runOnce() {。哗讥。嚷那。。杆煞。魏宽。。决乎。队询。。构诚。蚌斩。。范嘱。送膳。。}
這個(gè)函數(shù)丑蛤,替換成如下代碼叠聋。
function runOnce() {
for (let name in runList) {
// console.log(name, runList[name]);
var start = `var window = window || {}; var __pageFrameStartTime__ = Date.now(); var __webviewId__; var __wxAppCode__={}; var __mainPageFrameReady__ = function(){}; var __WXML_GLOBAL__={entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0}; var __vd_version_info__=__vd_version_info__||{};
$gwx=function(path,global){
if(typeof global === 'undefined') global={};if(typeof __WXML_GLOBAL__ === 'undefined') {__WXML_GLOBAL__={};
}__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};
}`;
runVM(name, start + " \r\n" + runList[name]);
}
}
解決不了這兩個(gè)報(bào)錯(cuò)你來砍我,另外受裹,谷歌真香碌补!