反編譯小程序,這一篇就夠了!!!

一、前言

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

反編譯,其實還是簡單的,要想拿到微信小程序源碼,找到源文件在手機存放的位置就行,源文件拿到,用反編譯腳本跑一下,微信小程序代碼包裏的所有文件、所有資源就出來了(除了project.config.json小程序配置文件)。拿到源碼後,跑起來是能跑,但登錄、授權等涉及到appid的功能是不能用的,因爲被反編譯小程序的服務端appid和你本地添加的不一樣,這就是爲啥拉下來的源碼沒有project.config.json文件的原因,項目中appid是配置在這個文件裏,這裏一定程度上保護原小程序。

二、所需工具

1.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

image

2.下載反編譯腳本

最新下載地址:https://github.com/gudqs7/wxappUnpacker

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

3.夜神模擬器

用來找尋微信小程序源文件,真機當然也可以,但麻煩,又是root權限,又是越獄的,夜神模擬器方便,直接在設置裏就可以設置超級用戶權限,超級權限拿到,就可以爲所欲爲了,通過下面這個RE文件管理器看到微信小程序源文件。

image

4.RE文件管理器

(在模擬器內搜索安裝或自動下載後導入到摸擬器安裝)用來找尋微信小程序源文件。

三、編譯流程

1. 安裝RE文件管理器

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

2. 獲取超級用戶權限

打開手機設置->找到超級用戶->右上角三個小點點擊一下,設置->點擊‘超級用戶訪問權限’,選擇‘僅限於應用’,這樣超級用戶權限就拿到了。

或者在首次打開RE文件管理器進入data文件夾時,摸擬器會顯示超級用戶請求,選擇“永久記住選擇”—>點擊“允許”,即可獲取超級用戶權限。

image

3.打開需要反編譯的小程序

打開微信,沒有的在應用市場下載就行,打開想反編譯的微信小程序,小程序打開後,可以切換到RE文件管理器去找源文件了。

這裏有一個機制,當點開一個微信小程序,如果本地這個文件夾下找到即將運行的小程序,會從微信服務器下載到本地,在以後的某個時刻又運行這個小程序,運行時,微信服務器會通知有沒有小程序新版本,如有新版本,會在後臺靜默下載,小程序繼續運行,新版本要到下一次運行纔會啓用,這就是微信小程序的更新機制。

4.獲取源文件

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

image

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

找到源文件後,長按左鍵 -> 點擊右上角三個小點,打開菜單,選擇‘壓縮所選文件’->完成後,點擊查看->長按,還是右上角,將壓縮包從模擬器發送出來到電腦上,方式多種,隨意。下圖是以QQ方式發送。

image

image

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

image

7.反編譯完成

用node wuWxapkg.js filepath執行成功後,查看反編譯成功後的文件夾,源碼中除了project.config.json這個配置文件,其他的都有。導入項目後就可以看到效果了,期間可能會出現一些問題,需要調試一下。下圖是編譯成功後的截圖。

image

四、結語

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

轉載:https://blog.csdn.net/hugengzong/article/details/102541876

想要更多幹貨、技術猛料的孩子,快點拿起手機掃碼關注我,我在這裏等你哦~

林老師帶你學編程https://wolzq.com

發佈了236 篇原創文章 · 獲贊 1343 · 訪問量 202萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章