2|0一、前言
大家都知道編寫一個微信小程序是非常漫長的,但是由於現階段微信小程序存在反編譯的可能,於是我去github上找到一個反編譯工具(跳轉)這個工具其實很早就出來了,但是這個工具需要提取微信小程序的wxapkg文件,就是微信小程序編譯后的文件。最近發現電腦版微信可以打開微信小程序了,於是我去找了微信打開小程序后生成的wxapkg文件,沒想到輕而易舉的就拿到了wxapkg文件。下面為簡單介紹下教程。
2|0二、簡單介紹下wxapkg
微信小程序一般是存在哪的?——毫無疑問當然是在雲端。
微信如何運行小程序?——首先需要在雲端下載xxx.wxapkg文件到本地,再利用本地的一套機制運行起來。
那么如何才能在手機里找到小程序的源文件包呢?
- 安卓具體目錄位置直接給出:
- /data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/
- 在這個目錄下,會發現一些 xxxxxxx.wxapkg 類型的文件,這些就是微信小程序的包
- 此目錄是需要用戶root后從根目錄找出。
電腦運行小程序后具體目錄:
C:\Users\{{電腦用戶名}}\Documents\WeChat Files\Applet\{{小程序AppID}}\{{隨機產生的數字}}\__APP__.wxapkg
注:微信電腦版需是可運行小程序的版本。
微信小程序的格式就是:xxx.wxapkg
- xxx.wxapkg是一個二進制文件,有着其自己的一套結構。
- 關於.wxapkg的詳細內容可以參考lrdcq大神的博文:微信小程序源碼閱讀筆記
3|0三、環境搭建
1. node.js運行環境 下載地址 如果沒有安裝nodejs,請先安裝一下
2. 反編譯的腳本。 下載地址這里提供一個Github
上qwerty472123
大神寫的node.js版本
的
3. 安卓模擬器(也可用真機需root)獲取wxapkg請看4-5步, 新pc版微信(推薦此步驟),請看6步。
4. 安卓模擬器(要求自帶root權限)下載地址自行百度,可以使用的是夜神模擬器,雷電等模擬器(自帶root)
,用來獲取小程序源文件
5. RE管理器、MT管理器或者x-plore 賦予root權限下載地址自行百度 到時候要拖到模擬器中的,進入"/data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/"目錄根據小程序第一次打開時間找到對應wxapkg
6. 我用的是微信2.7內測版,手機分享小程序給電腦版打開小程序,找到"C:\Users\{{電腦用戶名}}\Documents\WeChat Files\Applet\{{小程序AppID}}\{{隨機產生的數字}}\__APP__.wxapkg" 一般小程序和分包都會在。
4|0四、詳細過程(以pc版微信為例)
分享給電腦版微信小程序
點擊打開
導出wxapkg
獲取到wxapkg后
將其拷貝到某一路徑下,在此路徑下按住Shift鍵,同時鼠標點擊右鍵選擇在此處打開Powershell窗口如圖
在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
安裝完成之后會出現node_modules文件夾這是運行wxapkg反編譯腳本的必備環境
下面輸入命令node wuWxapkg.js <wxapkg目錄>如下
運行后,如果不出現錯誤,基本就可以在微信開發者工具打開
反編譯腳本就能一步將.wxapkg 文件還原為微信開發者工具能夠運行的源文件,目錄地址和你反編譯的文件地址是一樣的 然后在微信開發者工具新增導入項目即可打開
運行成功,源碼獲取完成
5|0五、結束語
現階段的wxapkg,即微信編譯后的可執行文件,在我個人眼里,加密力度是不夠的,雖然在對我們學生黨來說是學習的交流的好手段,但是在社會上運作,還是存在着巨大的安全隱患,隨着科技的發展,相信不久,這一方法將會失效,所以趁現在還有學習的機會,可以去搞。
上線的源代碼能如此簡單的被獲取到,不得不說小程序的源碼安全存在很大的隱患,這一點很多開發者應該也知道,所以發現有些小程序會將重要的js邏輯代碼柔在一個js文件中,這樣,即使被獲取了源碼,也不是很容易讀懂,但是任然避免不了被窺視的問題。
實際上,小程序只是很簡單的將圖片、js和json文件壓在一起,而壓制的過程就是Wxml -> Html、 Wxml -> JS、Wxss -> Css,轉換后文件二進制格式跟后綴名為wx二進制格式完全一致。