獲取微信小程序源碼(反編譯微信小程序)

此文章轉載的是https://blog.csdn.net/aaron9185/article/details/80576183這裏的 只是把有些步驟詳細修改了  有些繁瑣的刪除了

準備材料

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

詳細步驟:

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

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

  1. 打開安裝好的安卓模擬器,並在模擬器中安裝 QQ 、 微信 、 RE管理器
  • QQ 、 微信 在模擬器自帶的應用商店裏搜索下載安裝即可
  • RE管理器 的下載地址: pan.baidu.com/s/1PPBx08rN…
  • 下載好後直接拖拽進打開的模擬器窗口就會自動安裝
  1. 設置一下模擬器
  • 以我個人認爲比較好用的 夜神模擬器 舉例

 

  • 首先到模擬器內部設置超級用戶權限
    • 這些操作的目的都是爲了能讓 RE管理器 順利的獲取到ROOT權限
    1. 接下來在模擬器裏打開微信,然後在微信中運行你想要獲取的下程序(這其實是讓微信把小程序的源文件包從服務器下載到了本地了)
    • 就以我說的這款青桔單車的小程序舉例(希望滴滴的大神不會想打死我~)

    • 在模擬器微信中運行一下後, 直接切回模擬器桌面運行RE瀏覽器 來到目錄

    • /data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串文件夾}}/appbrand/pkg/

    • 就抵達了目的文件夾

    • 你會看到發現裏面的一些.wxapkg後綴的文件,就是它們沒錯啦,可以根據使用的時間來判斷那個是你剛纔從服務器下載過來的

    • 一般小程序的文件不會太大,可以結合時間來判斷,長按壓縮所選文件(長按,然後點擊右上角的的三個點  然後下滑 有個壓縮),然後再將壓縮好的包通過QQ發送到 我的電腦

    • 如果不進行壓縮的話,是無法將這個文件通過QQ來發送的

    • 所以QQ的這個功能可以讓我們很方便的拿到源文件,而不必到電腦目錄去找模擬器的文件目錄。

    • 解壓。這樣幾步簡單操作,就成功拿到了小程序的源文件了。

    使用反編譯腳本解包 wxapkg

    • 到這裏你應該已經將反編譯腳本從github下載 或者 clone 到本地某個目錄

    • 打開nodejs命令窗口

    • cd 到你clone或者下載好的反編譯腳本目錄下

    • 在node命令窗口中依次安裝如下依賴:

      
       
      1. npm install esprima

      2.  
      3. npm install css-tree

      4.  
      5. npm install cssbeautify

      6.  
      7. npm install vm2

      8.  
      9. npm install uglify-es

    • 安裝好依賴之後,就是最後一步了,反編譯 .wxapkg 文件

    • 在當前目錄下輸入

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

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

      node .\wuWxapkg.js D:\_163200311_32.wxapkg
    • 回車運行

  • 反編譯腳本就能一步將.wxapkg 文件還原爲微信開發者工具能夠運行的源文件, 目錄地址和你反編譯的文件地址是一樣的
  • 然後在微信開發者工具新增項目即可打開
  • 運行成功,源碼獲取完成
  • 只需兩步即可完成

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

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

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

    寫在後面的話

    .apk 之類的文件反編譯非常困難,而小程序竟可以如此輕鬆隨意地被獲取到源碼,根源在於小程序的開發團隊並沒有對小程序的執行文件進行有效的保護,也就是加密,所以我們才能使用別人寫好的腳本直接進行反編譯,其過程類似於解壓。

    實際上,小程序只是很簡單的將圖片、js和json文件壓在一起,而壓制的過程就是Wxml -> Html、 Wxml -> JS、Wxss -> Css,轉換後文件二進制格式跟後綴名爲wx二進制格式完全一致。

    上線的源代碼能如此簡單的被獲取到,不得不說小程序的源碼安全存在很大的隱患,這一點很多開發者應該也知道,所以發現有些小程序會將重要的js邏輯代碼柔在一個js文件中,這樣,即使被獲取了源碼,也不是很容易讀懂,但是任然避免不了被窺視的問題。 小程序作爲微信生態內的新生力量,不僅被官方,也被很多開發者和內容創業者寄予厚望,處於對代碼的安全性的考慮,這個漏洞遲早有一天會被 修復(封掉) 的。

    所以這種這裏介紹的獲取小程序源碼的方法,應該是不會太長久的。

下一篇文章會講報錯的修改方法

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