一 准備工具
1 node.js 運行環境
2 反編譯的腳本
鏈接:https://pan.baidu.com/s/1InxRoozDDb-C-g2rKGi1Cw
提取碼:i50k
3 夜神模擬器
下載地址:https://www.yeshen.com/cn/download/fullPackage
二 開始反編譯
1 獲取小程序pkg包:
在模擬器中登錄微信,隨便打開一個小程序A
打開文件管理器,找到/data/data/com.tencent.mm/MicroMsg 目錄 ,然后找到一個很長的
用戶隨機碼,繼續找到/appbrand/pkg/xxx,接下來會出現小程序A的wxapkg包(右鍵選擇復制)
找到安卓共享路徑
黏貼按鈕一直在上面,把小程序pkg包復制到安卓共享路徑,這樣就可以在電腦訪問小程序pkg包
2 安裝腳本依賴
利用cmd cd到你剛剛下載下來的腳本目錄下,執行npm install
安裝依賴
3執行腳本命令
復制小程序pkg的路徑 執行
node wuWxapkg.js C:\Users\pc-03\Nox_share\ImageShare\xx.wxapkg
C:\Users\pc-03\Nox_share\ImageShare\xx.wxapkg 是我的小程序路徑,你要復制自己的小程序路徑
三 編譯成功
四 異常情況
1、Module build failed: Error: Cannot find module ‘escodegen’ (我遇到的)
npm i --save-dev escodegen
2、 Error: Cannot find module ‘cheerio’(我遇到的)
npm install uglify-es --save
npm install esprima --save
npm install css-tree --save
npm install cssbeautify --save
npm install vm2 --save
npm install uglify-es --save
npm install js-beautify --save
npm install escodegen --save
npm install cheerio --save
3 未識別的包
說明拿到的兩個.wxapkg文件里,當前反編譯的包不是工程文件夾,再去RE文件管理器看下,是不是還有另一個文件呢!這個.wxapkg里面都是微信的基礎包,是無需還原的!!! 很多博客都沒說明這塊,害我以為沒反編譯成功!
4 SyntaxError: Unexpected end of input 解決wxss缺失問題
修改wxappUnpacker中wuWxss.js部分代碼,具體如下:
function runVM(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]();
}
/*
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]();
}*/
}
再次反編譯小程序,OK,wxss出來了
如果有遇到問題的小伙伴可以加我qq392716797幫你反編譯獲取小程序源碼