1. 程式人生 > 程式設計 >微信小程式反編譯的實現

微信小程式反編譯的實現

首先宣告:本文章僅供學習之用,不可它用。

一、前言

看到人家上線的小程式的效果,純靠推測,部分效果在絞盡腦汁後能做出大致的實現,但是有些細節,費勁全力都沒能做出來。很想一窺原始碼?檢視究竟?看看大廠的前端大神們是如何規避了小程式的各種奇葩的坑?那麼趕緊來試試吧

反編譯,其實還是簡單的,要想拿到微信小程式原始碼,找到原始檔在手機存放的位置就行,原始檔拿到,用反編譯指令碼跑一下,微信小程式程式碼包裡的所有檔案、所有資源就出來了(除了project.config.json小程式配置檔案)。拿到原始碼後,跑起來是能跑,但登入、授權等涉及到appid的功能是不能用的,因為被反編譯小程式的服務端appid和你本地新增的不一樣,這就是為啥拉下來的原始碼沒有project.config.json檔案的原因,專案中appid是配置在這個檔案裡,這裡一定程度上保護原小程式。

二、所需工具

nodejs執行環境,這是反編譯指令碼所需執行環境。

nodejs下載與安裝:

(1)、nodejs下載連結:https://nodejs.org/zh-cn/download/ 或者 http://nodejs.cn/download/。安裝的過程一路next就可以了,安裝後將nodejs設定為環境變數。

(2)、開啟cmd,測試是否安裝成功,在命令列輸入node -v,如下: D:>node -v 結果:v12.11.1

微信小程式反編譯的實現

2.下載反編譯指令碼 最新下載地址:https://github.com/gudqs7/wxappUnpacker

用cd命令進入到你clone或者下載好的反編譯指令碼目錄下,下載好後將wxappUnpacker.zip檔案解壓出來,這是GitHub上一位大神的傑作,找到了這個比較好用的,其他版本也可以。

3.夜神模擬器,地址:夜神模擬器

用來找尋微信小程式原始檔,真機當然也可以,但麻煩,又是root許可權,又是越獄的,夜神模擬器方便,直接在設定裡就可以設定超級使用者許可權,超級許可權拿到,就可以為所欲為了,通過下面這個RE檔案管理器看到微信小程式原始檔。

4.RE檔案管理器(在模擬器內搜尋安裝或自動下載後匯入到摸擬器安裝)用來找尋微信小程式原始檔。

三、編譯流程

1. 安裝RE檔案管理器

在模擬器內安裝好RE檔案管理器(可以在摸擬器上直接搜尋“RE檔案管理器”進行安裝)。

2. 獲取超級使用者許可權

開啟手機設定->找到超級使用者->右上角三個小點點選一下,設定->點選‘超級使用者訪問許可權',選擇‘僅限於應用',這樣超級使用者許可權就拿到了。

或者在首次開啟RE檔案管理器進入data資料夾時,摸擬器會顯示超級使用者請求,選擇“永久記住選擇”—>點選“允許”,即可獲取超級使用者許可權。

微信小程式反編譯的實現

3.開啟需要反編譯的小程式

開啟微信,沒有的在應用市場下載就行,開啟想反編譯的微信小程式,小程式開啟後,可以切換到RE檔案管理器去找原始檔了。

這裡有一個機制,當點開一個微信小程式,如果本地這個資料夾下找到即將執行的小程式,會從微信伺服器下載到本地,在以後的某個時刻又執行這個小程式,執行時,微信伺服器會通知有沒有小程式新版本,如有新版本,會在後臺靜默下載,小程式繼續執行,新版本要到下一次執行才會啟用,這就是微信小程式的更新機制。

4.獲取原始檔

開啟RE檔案管理器,從根目錄開始。/data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/,路徑中有一段...,這裡表示不確定具體一個,一般是很長的數字和字母組成的檔案(如下圖所示)

微信小程式反編譯的實現

反正就在這個MicroMsg下的其中一個資料夾,緊接著會看到appbrand資料夾,如果這樣那就找到位置了。

找到原始檔後,長按左鍵 -> 點選右上角三個小點,開啟選單,選擇‘壓縮所選檔案'->完成後,點選檢視->長按,還是右上角,將壓縮包從模擬器傳送出來到電腦上,方式多種,隨意。下圖是以QQ方式傳送。

微信小程式反編譯的實現

微信小程式反編譯的實現

5. 下載反編譯檔案

從GitHub下載反編譯檔案後,在桌面就有了這樣的資料夾結構nimi-yuan這個資料夾下這裡放的是微信小程式原始檔

lib這個資料夾下放的是反編譯指令碼

6. 安裝依賴包

cmd在終端進入到你剛剛下載下來的指令碼目錄下,依次安裝以下依賴,全部安裝完。

npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify

安裝好依賴之後,就是最後一步了,反編譯 .wxapkg 檔案

例如:我有一個需要反編譯的檔案_163200311_32.wxapkg已經解壓到了D盤根目錄下,那麼就輸出命令

node .\wuWxapkg.js D:\_163200311_32.wxapkg

微信小程式反編譯的實現

7.反編譯完成

用node wuWxapkg.js filepath執行成功後,檢視反編譯成功後的資料夾,原始碼中除了project.config.json這個配置檔案,其他的都有。匯入專案後就可以看到效果了,期間可能會出現一些問題,需要除錯一下。下圖是編譯成功後的截圖。

微信小程式反編譯的實現

四、結語

至此微信小程式的反編譯過程就結束了,僅供學習之用,不可它用。由此可見微信小程式原始碼的安全性不好,過不久估計就不能這麼幹了,漏洞終究會被填補的。

到此這篇關於微信小程式反編譯的實現的文章就介紹到這了,更多相關微信小程式反編譯內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!