10分钟带你学会微信小程序的反编译
以xxxxx小程序為例10分鐘帶你學會微信小程序的反編譯
2019-11-28 12:59:26
以一個簡單的例子介紹下小程序反編譯操作流程
?
- 實驗環境
- 前置準備
- 模擬器內軟件安裝
- 獲取小程序包
- 開始解包
- 導入開發者工具
- 補充注意事項
- 技術交流群
- 有償解包
- uniapp 逆向服務
- 逆向教程小程序
- 分包教程
?
#實驗環境
- 操作系統:MacOS10.13.6
- node:v10.8.0
- 微信開發者工具:Stable v1.02.1910120
#前置準備
- 需要安裝pc端模擬器工具可以選擇網易MuMu,或者其它模擬器
- 模擬器設置中配置共享文件夾
- 下載反編譯工具:鏈接:https://pan.baidu.com/s/1BXwx_iwcELab0HFWw7Gbtg?
提取碼:phsu?
?
#模擬器內軟件安裝
需要安裝以下兩個軟件
- RE文件管理器(查看小程序壓縮包)
- 微信(使用微信打開小程序以下載小程序包)
#獲取小程序包
1.使用自己手機上的微信打開"xxxxxx"小程序,可以添加到"我的小程序"
2.打開模擬器的微信并登錄
3.在模擬器微信的下拉小程序最近使用歷史中打開"xxxxx",如果歷史記錄中沒有就在我的小程序中找一找
4.打開小程序等待加載之后就可以去找源碼包了
5.打開RE文件管理器,進入到以下路徑查找源碼包(可以根據下載時間區分出你想要的源碼包)
6.拷貝小程序包至模擬器共享文件夾,為了方便解包重命名為zyel
獲取完畢。
#開始解包
#解包流程
1.進入克隆下來的反編譯工具根目錄
如果沒有安裝過npm包就先執行安裝
2.解包
node wuWxapkg.js <path/to/zyel.wxapkg>可以看到命令行輸出如下提示
Unpack file zyel2.wxapkg...Header info:firstMark: 0xbeunknownInfo: 0infoListLength: 1547dataLength: 971189lastMark: 0xedFile list info:fileCount: 42 { name: '/components/home/images/home-icon1.png',off: 1561,size: 2969 } { name: '/components/home/images/home-load-btn.png',off: 4530,size: 235 } { name: '/components/key/imgs/back.png', off: 4765, size: 4369 } { name: '/images/arrow-right.png', off: 9134, size: 223 } { name: '/images/detailsCoins-btn1-ac.png',off: 9357,size: 1180 } { name: '/images/detailsCoins-btn1.png', off: 10537, size: 614 } { name: '/images/detailsCoins-btn2-ac.png',off: 11151,size: 936 } { name: '/images/detailsCoins-btn2.png', off: 12087, size: 546 } { name: '/images/home-ac.png', off: 12633, size: 2281 } { name: '/images/home.png', off: 14914, size: 1565 } { name: '/images/mine-ac.png', off: 16479, size: 2324 } { name: '/images/mine-icon1.png', off: 18803, size: 1115 } { name: '/images/mine-icon3.png', off: 19918, size: 852 } { name: '/images/mine-icon4.png', off: 20770, size: 1038 } { name: '/images/mine-icon5.png', off: 21808, size: 1039 } { name: '/images/mine-icon6.png', off: 22847, size: 9137 } { name: '/images/mine-icon7.png', off: 31984, size: 1796 } { name: '/images/mine.png', off: 33780, size: 1682 } { name: '/images/ranking-one.png', off: 35462, size: 4883 } { name: '/images/ranking-three.png', off: 40345, size: 4993 } { name: '/images/ranking-two.png', off: 45338, size: 4928 } { name: '/images/shop-ac.png', off: 50266, size: 2393 } { name: '/images/shop.png', off: 52659, size: 1807 } { name: '/app-config.json', off: 54466, size: 18010 } { name: '/app-service.js', off: 72476, size: 728734 } { name: '/pages/CSR/CSR.html', off: 801210, size: 3759 } { name: '/pages/card/card.html', off: 804969, size: 5518 } { name: '/pages/coinRecord/coinRecord.html',off: 810487,size: 3832 } { name: '/pages/coinShop/coinShop.html', off: 814319, size: 469 } { name: '/pages/detailsCoins/detailsCoins.html',off: 814788,size: 4498 } { name: '/pages/home/home.html', off: 819286, size: 5043 } { name: '/pages/integralDec/integralDec.html',off: 824329,size: 3153 } { name: '/pages/integralTask/integralTask.html',off: 827482,size: 5007 } { name: '/pages/login/login.html', off: 832489, size: 1649 } { name: '/pages/mine/mine.html', off: 834138, size: 2429 } { name: '/pages/orderList/orderList.html',off: 836567,size: 5701 } { name: '/pages/ranking/ranking.html', off: 842268, size: 4388 } { name: '/pages/share/share.html', off: 846656, size: 5327 } { name: '/pages/shop/creditBuy.html', off: 851983, size: 2730 } { name: '/pages/shop/shop.html', off: 854713, size: 3175 } { name: '/pages/welfare/welfare.html', off: 857888, size: 751 } { name: '/page-frame.html', off: 858639, size: 114111 } Saving files... Unpack done. Split app-service.js and make up configs & wxss & wxml & wxs... Decompile ./pages/CSR/CSR.wxml... Decompile success! Decompile ./pages/card/card.wxml... Decompile success! Decompile ./pages/coinRecord/coinRecord.wxml... Decompile success! Decompile ./pages/coinShop/coinShop.wxml... Decompile success! Decompile ./pages/detailsCoins/detailsCoins.wxml... Decompile success! Decompile ./pages/home/home.wxml... Decompile success! Decompile ./pages/integralDec/integralDec.wxml... Decompile success! Decompile ./pages/integralTask/integralTask.wxml... Decompile success! Decompile ./pages/login/login.wxml... Decompile success! Decompile ./pages/mine/mine.wxml... Decompile success! Decompile ./pages/orderList/orderList.wxml... Decompile success! Decompile ./pages/ranking/ranking.wxml... Decompile success! Decompile ./pages/share/share.wxml... Decompile success! Decompile ./pages/shop/creditBuy.wxml... Decompile success! Decompile ./pages/shop/shop.wxml... Decompile success! Decompile ./pages/welfare/welfare.wxml... Decompile success! Guess wxss(first turn)... Splitting "/Users/gangxue/demo/wxappUnpacker/zyel/app-service.js" done. Import count info: {} Guess wxss(first turn) done. Generate wxss(second turn)... Generate wxss(second turn) done. Save wxss... Split and make up done. Delete files... Deleted.File done. Total use: 3148.983ms3.如果想單獨執行config、js、wxml、wxss的反編譯可以在解包時加-o參數不做后續操作
#工具用法
- node wuConfig.js <files...>?將 app-config.json 中的內容拆分到各個文件對應的 .json 和 app.json , 并通過搜索 app-config.json 所在文件夾下的所有文件嘗試將 iconData 還原為 iconPath 。
- node wuJs.js <files...>?將 app-service.js (或小游戲中的 game.js ) 拆分成一系列原先獨立的 javascript 文件,并使用 Uglify-ES 美化,從而盡可能還原編譯前的情況。
- node wuWxml.js [-m] <files...>?將編譯/混合到 page-frame.html ( 或 app-wxss.js ) 中的 wxml 和 wxs 文件還原為獨立的、未編譯的文件。如果加上-m指令,就會阻止block塊自動省略,可能幫助解決一些相關過程的 bug 。
- node wuWxss.js <dirs...>?通過獲取文件夾下的 page-frame.html ( 或 app-wxss.js ) 和其他 html 文件的內容,還原出編譯前 wxss 文件的內容。
- node wuWxapkg.js [-o] [-d] [-s=<Main Dir>] <files...>?將 wxapkg 文件解包,并將包中上述命令中所提的被編譯/混合的文件自動地恢復原狀。如果加上-o指令,表示僅解包,不做后續操作。如果加上-d指令,就會保留編譯/混合后所生成的新文件,否則會自動刪去這些文件。同時,前面命令中的指令也可直接加在這一命令上。而如果需要解壓分包,請先解壓主包,然后執行node wuWxapkg.js [-d] -s=<Main Dir> <subPackages...>,其中Main Dir為主包解壓地址。除-d與-s外,這些指令兩兩共存的后果是未定義的(當然,是不會有危險的)。
#導入開發者工具
打開微信開發者工具,導入項目即可
注意在xxxxxxx解包后的項目設置中
- 注意勾選不校驗合法域名
- 勾掉e6轉es5(這個小程序貌似并沒有使用es6語法)
解包其它小程序可能項目配置略有不同。
#補充注意事項
有網友聯系反饋說了體驗版的解包問題,這里備注說明下。
體驗版的需要找到debug開頭的文件(形如:debug_xxx 是沒有后綴的),然后拿到文件后手動添加wxapkg后綴再執行以上操作,即可完成解包。
#技術交流群
請掃碼閱讀說明后入群:
#有償解包
博主提供有償解包服務,有興趣的可以加w私聊。
#uniapp 逆向服務
提供原生開發的小程序及基于uniapp開發的小程序的解包源碼轉換為vue源碼的付費服務
有定制服務需求的可以添加逆向助手微信拉你進群。
#逆向教程小程序
為小程序逆向而生的小程序
#分包教程
- 微信小程序分包反編譯教程
本文鏈接:?http://xuedingmiao.com/blog/xcx_unpack.html
版權聲明:本博客所有文章除特別聲明外,均采用?CC BY-NC-ND 3.0?許可協議??勺杂赊D載、引用,但需署名作者且注明文章出處。如轉載至微信公眾號,請在文末添加作者公眾號二維碼。
總結
以上是生活随笔為你收集整理的10分钟带你学会微信小程序的反编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在maven本地仓库导入jar包
- 下一篇: android.support.v7 f