兩步快速獲取微信小程序源碼

簡單聊一下xxxxx.wxapkg

先來想想一個很簡單的問題,小程序的源文件存放在哪

  • 在微信的服務器上。

普通用戶想要直接獲取到在微信服務器去獲取,肯定是十分困難的,有沒有別的辦法呢?

  • 簡單思考一下我們使用小程序的場景就會明白,當我們點開一個微信小程序的時候,其實是微信已經將它的從服務器上下載到了手機,然後再來運行的。
  • 所以我們應該可以從手機本地找到到已經下載過的小程序文件

那麼小程序文件存儲在手機的什麼位置呢?

  • 這裏只以安卓手機爲例,畢竟窮逼不曾擁有過蘋果手機
  • 具體目錄位置直接給出:
  • /data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串名文件夾}}/appbrand/pkg/
  • 在這個目錄下,會發現一些 xxxxxxx.wxapkg 類型的文件,這些就是微信小程序的包

微信小程序的格式就是:.wxapkg

  • .wxapkg是一個二進制文件,有其自己的一套結構。

  • 微信小程序源碼閱讀筆記lrdcq大神的這篇博文有對.wxapkg的詳細介紹,當然你也不可以不看

  • 這裏有個小坑,想要進入到上面這個目錄的話,用手機自帶的文件管理器是不行的,需要使用到第三方的文件管理器,比如:RE文件管理器,並且安卓需要取得root權限,蘋果手機要求越獄,且iphone的越獄難度>>安卓獲取root,不管越獄還是root,這都太費勁,當然有能力的同學可以直接從手機上來操作,但是在這裏不推薦從真機上獲取

準備材料

  1. node.js運行環境
  • 如果沒有安裝nodejs,請先安裝一下
  • 下載地址:nodejs.org/en/
  1. 反編譯的腳本
  • 這裏提供一個Github上qwerty472123大神寫的node.js版本的,當然也有其它版本的,例如python版本,這裏我只是簡單地用node.js版本舉例
  • 地址:github.com/qwerty47212…
  1. 安卓模擬器(要求自帶root權限)

詳細步驟:

使用安卓模擬器獲取到.wxapkg文件

不用越獄,不用root,使用電腦端的安卓模擬器來獲取是一個非常簡單快捷的獲取方式,具體步驟如下:

  1. 打開安裝好的安卓模擬器,並在模擬器中安裝QQ微信RE管理器
  • QQ微信在模擬器自帶的應用商店裏搜索下載安裝即可
  • RE管理器的下載地址:pan.baidu.com/s/1PPBx08rN…
  • 下載好後直接拖拽進打開的模擬器窗口就會自動安裝
    /在此我向大家推薦一個前端全棧開發交流圈:582735936 突破技術瓶頸,提升思維能力
  1. 設置一下模擬器
  • 以我個人認爲比較好用的夜神模擬器舉例
  • 首先到模擬器內部設置超級用戶權限


  • 這些操作的目的都是爲了能讓RE管理器順利的獲取到ROOT權限
  1. 接下來在模擬器裏打開微信,然後在微信中運行你想要獲取的小程序(這一步微信就會把目標小程序的源文件包從服務器下載到了本地)
  • 就以我說的這款共享單車的小程序舉例
  • 在模擬器微信中運行一下後,切回模擬器桌面,運行RE瀏覽器 來到目錄
  • /data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串文件夾}}/appbrand/pkg/
  • 就抵達了目的文件夾[圖片上傳中...(image-300d1d-1556616083757-3)]


  • 你會看到發現裏面的一些.wxapkg後綴的文件,就是它們沒錯啦,可以根據時間來判斷那個是你剛纔從服務器下載過來的
  • 一般小程序的文件不會太大,長按,然後點右上角選項將其壓縮爲zip包,然後再將壓縮好的包通過QQ發送到我的電腦
  • 注:如果不進行壓縮的話,QQ會提示文件不可用[圖片上傳中...(image-3dfdb9-1556616083757-2)]

/在此我向大家推薦一個前端全棧開發交流圈:582735936 突破技術瓶頸,提升思維能力

  • 所以QQ的這個功能可以讓我們很方便的拿到源文件,而不必到電腦目錄去找模擬器的文件目錄。
  • 解壓。這樣幾步簡單操作,就成功拿到了小程序的源文件了。

使用反編譯腳本解包 wxapkg

  • 到這裏你應該已經將反編譯腳本從github下載 或者 clone 到本地某個目錄
  • 打開nodejs命令窗口,如果有vscode的直接使用vscode更方便,沒有安裝的,打開如下這個命令行窗口
  • 用cd命令進入到你clone或者下載好的反編譯腳本目錄

  • 在node命令窗口中依次安裝如下依賴(依次把每條安裝命令複製到命令行回車就可以):

    npm install esprima
    
    npm install css-tree
    
    npm install cssbeautify
    
    npm install vm2
    
    npm install uglify-es
    
    npm install js-beautify
    
  • 安裝好依賴之後,就是最後一步了,反編譯 .wxapkg 文件

  • 在當前目錄下輸入

    node wuWxapkg.js [-d] <files...>    //files 就是你想要反編譯的文件名
    

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

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

小技巧:注意這裏斜杆別打反了,你可以輸入文件名前幾個字符,然後Tab鍵會自動補全文件名

  • 回車運行
  • 反編譯腳本就能一步將.wxapkg 文件還原爲微信開發者工具能夠運行的源文件,目錄地址和你反編譯的文件地址是一樣的
  • 看到這些文件結構,是不是非常熟悉!我們在微信開發者工具新增項目即可打開
  • 運行成功,源碼獲取完成

如果運行出現了點問題:可以試試,點擊開發者工具 詳情 去掉 es6轉es5 的勾勾上不校驗安全域名

勾選了還是無法運行?那麼請在詳情裏把基礎版本庫調低至1.8左右,再試試

出現找不到某些文件的情況怎麼辦?我只能告訴:刪!刪!刪!app.json裏面,提示找不到那個文件,就將pages下注冊的該頁面語句暫時刪除掉。刪到可以運行爲止

還是無法運行?那你可以在我的博客裏找到我的聯繫方式,申請加我好友,我會嘗試幫你解決,這是免費的,就當交個朋友

兩步即可完成

至此我們就通過非常簡單的方式獲取到了一個想要的小程序源文件,並對其進行了反編譯還原 以後想要再反編譯其他的小程序,非常快速,只需要兩步

  1. 使用模擬器找到小程序.wxapkg文件
  2. 使用nodejs 反編譯腳本將.wxapkg文件反編譯

使用此方法,絕大部分的小程序都能正常反編譯出來,但是也會有一些特殊的情況,具體可以查看qwerty472123大神Github的readme.md文件

寫在後面的話

早在跳一跳小遊戲火的時候,就有人通過小程序的appid和版本號,構造URL直接從服務器端下載該小程序的源碼wxapkg文件。但是這種方法很快就被封了。

上線的源代碼能如此簡單的被獲取到,不得不說小程序的源碼安全存在一些隱患,不過現在的小程序開發框架會用babel這樣的打包工具把js邏輯代碼揉在一個js文件裏,轉編譯成看不懂的代碼,這樣,即使被獲取了源碼,也很難窺得蛛絲馬跡。

結語

感謝您的觀看,如有不足之處,歡迎批評指正。
獲取資料👈👈👈
本次給大家推薦一個免費的學習羣,裏面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q羣:👉👉👉582735936 👈👈👈,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視頻資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章