主要思路:
小程序運行時,會先下載資源再運行,拿到小程序的資源包后,通過反編譯程序,對微信壓縮后的包進行反編譯,即可還原大部分代碼。
截至記錄當天,此方法未被微信修復。
1. 抓取源碼包 wxapkg
點開小程序圖標的過程,微信就已經從遠端服務器下載其源文件到手機上了,原則上,手機本地已經有這個源文件了,只要有root權限或者越獄,能訪問到。沒有root權限的話,可以使用安卓模擬器。推薦使用 夜神,自帶root,附上地址:下載地址
開啟模擬器后,安裝微信、RE管理器( 用於訪問源文件 )。然后從設置里開啟: 超級用戶 => 右上角菜單設置 => 自動響應 => 允許
隨后進入微信,點開小程序,運行一會兒后,用 RE管理器,找到一下位置文件
根目錄/data/data/com.tencent.mm/MicroMsg/{ User
}/appbrand/pkg/
{ User } 為一串16進制字符
將這些文件壓縮后,通過發送給微信好友 等方式分享出來,不走壓縮步驟的話,會提示獲取資源失敗。
微信在壓縮打包的時候會按照一定規則來,分包基本是單獨的一個 wxapkg 文件,包括一些 依賴。wxapkg 是微信自己的二進制文件,戳這里看大神解析
2. 反編譯
拿到 wxapkg 文件后,接下來就可以進行反編譯了。
前提是 node 環境,clone 這個 git 資源 https://github.com/qwerty472123/wxappUnpacker ,在其目錄內安裝依賴 npm install
或
npm install esprima npm install css-tree npm install cssbeautify npm install vm2 npm install uglify-es npm install js-beautify
安裝完成后,執行命令行, node wuWxapkg.js [-d] <files…>
[-d] <files…> 為 wxapkg 的資源位置,如:
node wuWxapkg.js d:\wxapp\resource\_1123949441_304.wxapkg
執行后即可反編譯出程序源碼,編譯后的文件地址同 wxapkg 資源地址目錄
參考:兩步快速獲取小程序源碼
或 使用TBS爬取已經上線的微信小程序頁面 (未測)