商城系統(tǒng) 注冊(cè)

獲取微信小程序源碼的教程

2018-06-06|HiShop
導(dǎo)讀:小程序源碼是小程序開(kāi)發(fā)中很重要的元素,那么如何獲取用戶的小程序源碼作為參考呢,下面為大家介紹...

小程序源碼是小程序開(kāi)發(fā)中很重要的元素,那么如何獲取用戶的小程序源碼作為參考呢,下面為大家介紹

獲取微信小程序源碼的教程

簡(jiǎn)單聊一下 xxxxx.wxapkg

先來(lái)想想一個(gè)很簡(jiǎn)單的問(wèn)題,小程序的源文件存放在哪?

  • 當(dāng)然是在微信的服務(wù)器上。

但是在微信服務(wù)器上,普通用戶想要獲取到,肯定是十分困難的,有沒(méi)有別的辦法呢?

  • 簡(jiǎn)單思考一下我們使用小程序的場(chǎng)景就會(huì)明白,當(dāng)我們點(diǎn)開(kāi)一個(gè)微信小程序的時(shí)候,其實(shí)是微信已經(jīng)將它的從服務(wù)器上下載到了手機(jī),然后再來(lái)運(yùn)行的。
  • 所以,雖然我們沒(méi)能力從 服務(wù)器 上獲取到,但是我們應(yīng)該可以從 手機(jī)本地 找到到已經(jīng)下載過(guò)的小程序源文件

那么如何才能在手機(jī)里找到小程序的源文件包呢?

  • 這里只以安卓手機(jī)為例,畢竟窮逼不曾擁有過(guò)蘋(píng)果手機(jī)
  • 具體目錄位置直接給出:
    • /data/data/com.tencent.mm/MicroMsg/{{一串32位的16進(jìn)制字符串文件夾}}/appbrand/pkg/
  • 在這個(gè)目錄下,會(huì)發(fā)現(xiàn)一些 xxxxxxx.wxapkg 類型的文件,這些就是微信小程序的包

準(zhǔn)備材料

  1. node.js運(yùn)行環(huán)境
  • 如果沒(méi)有安裝nodejs,請(qǐng)先安裝一下
  • 下載地址:nodejs.org/en/
  1. 反編譯的腳本
  • 這里提供一個(gè)Github上 qwerty472123 大神寫(xiě)的node.js版本的,當(dāng)然也有其它版本的,這里我只是簡(jiǎn)單地用node.js版本舉例
  • 地址: github.com/qwerty47212…
  1. 安卓模擬器(要求自帶root權(quán)限)
  • 我使用的是 夜神模擬器 ,用來(lái)獲取小程序源文件
  • 下載地址: www.yeshen.com/cn/download…

詳細(xì)步驟:

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

  • .wxapkg是一個(gè)二進(jìn)制文件,有其自己的一套結(jié)構(gòu)。

  • 但是這里有個(gè) 坑 ,想要進(jìn)入到上面這個(gè)目錄的話,用手機(jī)自帶的文件管理器肯定是不行的, 安卓 或者 iPhone 都要要用到第三方的文件管理器,比如: RE文件管理器 ,并且安卓需要取得root權(quán)限,而蘋(píng)果手機(jī)肯定是要越獄的,且 iphone的越獄難度>>安卓獲取root ,不管越獄還是root,這都太費(fèi)勁,當(dāng)然有能力的同學(xué)可以直接從手機(jī)上來(lái)操作,但是這里 不推薦從真機(jī)上獲取 。

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

不用越獄,不用root,使用電腦端的 安卓模擬器 來(lái)獲取是一個(gè) 非常簡(jiǎn)單快捷且萬(wàn)能的 獲取方式,具體步驟如下:

  1. 打開(kāi)安裝好的安卓模擬器,并在模擬器中安裝 QQ 、 微信 、 RE管理器
  • QQ 、 微信 在模擬器自帶的應(yīng)用商店里搜索下載安裝即可
  • RE管理器 的下載地址: pan.baidu.com/s/1PPBx08rN…
  • 下載好后直接拖拽進(jìn)打開(kāi)的模擬器窗口就會(huì)自動(dòng)安裝
  1. 設(shè)置一下模擬器
  • 以我個(gè)人認(rèn)為比較好用的 夜神模擬器 舉例
  • 首先到模擬器內(nèi)部設(shè)置超級(jí)用戶權(quán)限
  • 這些操作的目的都是為了能讓 RE管理器 順利的獲取到ROOT權(quán)限
  1. 接下來(lái)在模擬器里打開(kāi)微信,然后在微信中運(yùn)行你想要獲取的下程序(這其實(shí)是讓微信把小程序的源文件包從服務(wù)器下載到了本地了)
  • 就以我說(shuō)的這款青桔單車的小程序舉例(希望滴滴的大神不會(huì)想打死我~)

  • 在模擬器微信中運(yùn)行一下后, 直接切回模擬器桌面運(yùn)行RE瀏覽器 來(lái)到目錄

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

  • 就抵達(dá)了目的文件夾

  • 你會(huì)看到發(fā)現(xiàn)里面的一些.wxapkg后綴的文件,就是它們沒(méi)錯(cuò)啦,可以根據(jù)使用的時(shí)間來(lái)判斷那個(gè)是你剛才從服務(wù)器下載過(guò)來(lái)的

  • 一般小程序的文件不會(huì)太大,可以結(jié)合時(shí)間來(lái)判斷,長(zhǎng)按壓縮所選文件,然后再將壓縮好的包通過(guò)QQ發(fā)送到 我的電腦

  • 如果不進(jìn)行壓縮的話,是無(wú)法將這個(gè)文件通過(guò)QQ來(lái)發(fā)送的

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

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

使用反編譯腳本解包 wxapkg

  • 到這里你應(yīng)該已經(jīng)將反編譯腳本從github下載 或者 clone 到本地某個(gè)目錄

  • 打開(kāi)nodejs命令窗口

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

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

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

  • 在當(dāng)前目錄下輸入

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

    例如:我有一個(gè)需要反編譯的文件 _163200311_32.wxapkg 已經(jīng)解壓到了D盤(pán)根目錄下,那么就輸出命令

    node .\wuWxapkg.js D:\_163200311_32.wxapkg
  • 回車運(yùn)行

  • 反編譯腳本就能一步將.wxapkg 文件還原為微信開(kāi)發(fā)者工具能夠運(yùn)行的源文件, 目錄地址和你反編譯的文件地址是一樣的

    然后在微信開(kāi)發(fā)者工具新增項(xiàng)目即可打開(kāi)

  • 運(yùn)行成功,源碼獲取完成

只需兩步即可完成

至此我們就通過(guò)非常簡(jiǎn)單的方式獲取到了一個(gè)想要的小程序源文件,并對(duì)齊進(jìn)行了反編譯還原 以后想要再反編譯其他的小程序,非常快速, 真的只需要兩步

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

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

寫(xiě)在后面的話

.apk 之類的文件反編譯非常困難,而小程序竟可以如此輕松隨意地被獲取到源碼,根源在于小程序的開(kāi)發(fā)團(tuán)隊(duì)并沒(méi)有對(duì)小程序的執(zhí)行文件進(jìn)行有效的保護(hù),也就是加密,所以我們才能使用別人寫(xiě)好的腳本直接進(jìn)行反編譯,其過(guò)程類似于解壓。

實(shí)際上,小程序只是很簡(jiǎn)單的將圖片、js和json文件壓在一起,而壓制的過(guò)程就是Wxml -> Html、 Wxml -> JS、Wxss -> Css,轉(zhuǎn)換后文件二進(jìn)制格式跟后綴名為wx二進(jìn)制格式完全一致。

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

所以這種這里介紹的獲取小程序源碼的方法,應(yīng)該是不會(huì)太長(zhǎng)久的。

電話咨詢 預(yù)約演示 0元開(kāi)店