先來皮一下
- 微信小程序的源代碼在哪里妓雾?
開發(fā)者電腦里(不是人造革,是真的皮) - 微信小程序的源代碼到底在哪里?
那肯定是騰訊加的服務器上顷锰,不過是編譯過的執(zhí)行包。 - 那怎么在手機上執(zhí)行亡问?
當然是先下載到手機上官紫。 - 下載到手機上的執(zhí)行包文件能獲取到嗎?
iOS沒試過州藕,Android那是輕而易舉束世。可以獲取root權(quán)限的手機或者模擬器都可以床玻。 - 有了執(zhí)行包文件怎么辦毁涉?
參考大神對于.wxapkg文件結(jié)構(gòu)的分析,就有思路了
使用到的工具
- Android模擬器(root權(quán)限)
夜神模擬器 - nodejs
- 解包還原工具(nodejs版)
wxappUnpacker
獲取微信小程序源碼實例
以下是獲取某微信小程序“ABC”的源碼的實例步驟锈死。
1贫堰,使用Android模擬器獲取.wxapkg文件
打開夜神模擬器安裝微信(自帶市場),RE文件管理器
- 在模擬器上打開微信并登陸馅精,搜索小程序ABC
- 打開小程序ABC严嗜,玩耍一下
- 在如下目錄找到相應的.wxapkg,可以根據(jù)時間戳來判斷
/data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串文件夾}}/appbrand/pkg/
示例如下:
-
選中_126431493_6.wxapkg洲敢,壓縮所選文件->查看
- 選擇“發(fā)送”漫玄,將壓縮文件通過微信發(fā)送到電腦版微信
- 電腦版微信接收到壓縮文件解壓縮以備下一步使用
2,使用解包工具還原小程序源碼
- 安裝nodejs
- 下載wxappUnpacker压彭,并使用npm安裝它的依賴包睦优,依賴包說明
-
進入wxappUnpacker目錄,調(diào)用node wuWxapkg.js file.wxapkg
-
解包完成
-
源碼包結(jié)果
- 開發(fā)過小程序的對這個源碼包應該是一目了然了
例外
- 現(xiàn)在好多小程序都是框架編譯壮不,所以解包完了也是很多壓縮汗盘,混淆,很難讀懂询一。
- 對于分包小程序處理來說隐孽,由于分包下載依賴于分包觸發(fā)機制癌椿,所以對于此類小程序需要額外的步驟來確保分包下載完成。另外遺憾的是wxappUnpacker分包功能沒有完成菱阵。
參考
總結(jié)
小程序源代碼(雖然不是100%源代碼)能如此簡單的被獲取踢俄,原因在于微信團隊沒有對編譯完的執(zhí)行包進行加密保護。如果使用一些對稱加密的手段晴及,只有微信客戶端才可以解密得到執(zhí)行包都办,并且執(zhí)行包只保存于內(nèi)存不緩存于磁盤,這樣的話會對開發(fā)者有較好的保護虑稼。
此內(nèi)容僅供學習參考琳钉。