只需兩步獲取任何微信小程序源碼
時間:2023-05-20 00:32:02 | 來源:網站運營
時間:2023-05-20 00:32:02 來源:網站運營
只需兩步獲取任何微信小程序源碼:最近在學習微信小程序開發(fā),半個月學習下來,很想實戰(zhàn)一下踩踩坑,于是就仿寫了一個滴滴他們家的青桔單車小程序的前端實現,過程一言難盡,差不多兩周時間過去了,發(fā)現小程序的坑遠比想象的要多的多!!在實際練手中,完全是黑盒的,看到人家上線的小程序的效果,純靠推測,部分效果在絞盡腦汁后能做出大致的實現,但是有些細節(jié),費勁全力都沒能做出來。很想一窺源碼,查看究竟,看看大廠的前端大神們是如何規(guī)避了小程序的各種奇葩的坑。
于是就想到獲取到小程序地源文件,然后再對其進行反編譯還原為源代碼,來作為學習參考。我百度了各種關于小程序地反編譯教程,但是感覺都不太適合像我這樣地初學小白,踩了挺多坑。在這里把我重新簡化好的,
快速地獲取一個微信小程序源碼 的方式記錄下來。
簡單聊一下 xxxxx.wxapkg
先來想想一個很簡單的問題,小程序的源文件存放在哪?
但是在微信服務器上,普通用戶想要獲取到,肯定是十分困難的,有沒有別的辦法呢?
- 簡單思考一下我們使用小程序的場景就會明白,當我們點開一個微信小程序的時候,其實是微信已經將它的從服務器上下載到了手機,然后再來運行的。
- 所以,雖然我們沒能力從
服務器
上獲取到,但是我們應該可以從 手機本地
找到到已經下載過的小程序源文件
那么如何才能在手機里找到小程序的源文件包呢?
- 這里只以安卓手機為例,畢竟窮逼不曾擁有過蘋果手機
- 具體目錄位置直接給出:
/data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串文件夾}}/appbrand/pkg/
- 在這個目錄下,會發(fā)現一些
xxxxxxx.wxapkg
類型的文件,這些就是微信小程序的包
準備材料
- node.js運行環(huán)境
- 如果沒有安裝nodejs,請先安裝一下
- 下載地址:http://nodejs.org/en/
- 反編譯的腳本
- 這里提供一個Github上
qwerty472123
大神寫的node.js版本的,當然也有其它版本的,這里我只是簡單地用node.js版本舉例 - 地址: github.com/qwerty47212…
- 安卓模擬器(要求自帶root權限)
- 我使用的是
夜神模擬器
,用來獲取小程序源文件 - 下載地址: www.yeshen.com/cn/download…
詳細步驟:
- 微信小程序的格式就是:
.wxapkg
- .wxapkg是一個二進制文件,有其自己的一套結構。
- 關于.wxapkg的詳細內容可以參考 lrdcq大神的博文:微信小程序源碼閱讀筆記
- 但是這里有個 坑 ,想要進入到上面這個目錄的話,用手機自帶的文件管理器肯定是不行的,
安卓
或者 iPhone
都要要用到第三方的文件管理器,比如: RE文件管理器
,并且安卓需要取得root權限,而蘋果手機肯定是要越獄的,且 iphone的越獄難度>>安卓獲取root ,不管越獄還是root,這都太費勁,當然有能力的同學可以直接從手機上來操作,但是這里 不推薦從真機上獲取
。
使用安卓模擬器獲取到.wxapkg文件
不用越獄,不用root,使用電腦端的
安卓模擬器 來獲取是一個
非常簡單快捷且萬能的 獲取方式,具體步驟如下:
- 打開安裝好的安卓模擬器,并在模擬器中安裝
QQ
、 微信
、 RE管理器
QQ
、 微信
在模擬器自帶的應用商店里搜索下載安裝即可RE管理器
的下載地址: pan.baidu.com/s/1PPBx08rN…- 下載好后直接拖拽進打開的模擬器窗口就會自動安裝
- 設置一下模擬器
- 以我個人認為比較好用的
夜神模擬器
舉例 - 首先到模擬器內部設置超級用戶權限
- 這些操作的目的都是為了能讓
RE管理器
順利的獲取到ROOT權限
- 接下來在模擬器里打開微信,然后在微信中運行你想要獲取的下程序(這其實是讓微信把小程序的源文件包從服務器下載到了本地了)
- 就以我說的這款青桔單車的小程序舉例(希望滴滴的大神不會想打死我~)
- 在模擬器微信中運行一下后, 直接切回模擬器桌面運行RE瀏覽器 來到目錄
/data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串文件夾}}/appbrand/pkg/
- 就抵達了目的文件夾
- 你會看到發(fā)現里面的一些.wxapkg后綴的文件,就是它們沒錯啦,可以根據使用的時間來判斷那個是你剛才從服務器下載過來的
- 一般小程序的文件不會太大,可以結合時間來判斷,長按壓縮所選文件,然后再將壓縮好的包通過QQ發(fā)送到
我的電腦
- 如果不進行壓縮的話,是無法將這個文件通過QQ來發(fā)送的
- 所以QQ的這個功能可以讓我們很方便的拿到源文件,而不必到電腦目錄去找模擬器的文件目錄。
- 解壓。這樣幾步簡單操作,就成功拿到了小程序的源文件了。
使用反編譯腳本解包 wxapkg
- 到這里你應該已經將反編譯腳本從github下載 或者 clone 到本地某個目錄
- 打開nodejs命令窗口
- cd 到你clone或者下載好的反編譯腳本目錄下
- 在node命令窗口中依次安裝如下依賴:
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es - 安裝好依賴之后,就是最后一步了,反編譯 .wxapkg 文件
- 在當前目錄下輸入
node wuWxapkg.js [-d] <files...> //files 就是你想要反編譯的文件名
例如:我有一個需要反編譯的文件 _163200311_32.wxapkg
已經解壓到了D盤根目錄下,那么就輸出命令
node ./wuWxapkg.js D:/_163200311_32.wxapkg - 回車運行
- 反編譯腳本就能一步將.wxapkg 文件還原為微信開發(fā)者工具能夠運行的源文件, 目錄地址和你反編譯的文件地址是一樣的
然后在微信開發(fā)者工具新增項目即可打開
只需兩步即可完成
至此我們就通過非常簡單的方式獲取到了一個想要的小程序源文件,并對齊進行了反編譯還原 以后想要再反編譯其他的小程序,非??焖?,
真的只需要兩步- 使用模擬器找到小程序.wxapkg文件
- 使用nodejs 反編譯腳本將.wxapkg文件反編譯
使用此方法,絕大部分的小程序都能正常反編譯出來,但是也會有一些特殊的情況,具體可以查看
qwerty472123
大神的readme文件
寫在后面的話
.apk 之類的文件反編譯非常困難,而小程序竟可以如此輕松隨意地被獲取到源碼,根源在于小程序的開發(fā)團隊并沒有對小程序的執(zhí)行文件進行有效的保護,也就是加密,所以我們才能使用別人寫好的腳本直接進行反編譯,其過程類似于解壓。
實際上,小程序只是很簡單的將圖片、js和json文件壓在一起,而壓制的過程就是Wxml -> Html、 Wxml -> JS、Wxss -> Css,轉換后文件二進制格式跟后綴名為wx二進制格式完全一致。
上線的源代碼能如此簡單的被獲取到,不得不說小程序的源碼安全存在很大的隱患,這一點很多開發(fā)者應該也知道,所以發(fā)現有些小程序會將重要的js邏輯代碼柔在一個js文件中,這樣,即使被獲取了源碼,也不是很容易讀懂,但是任然避免不了被窺視的問題。 小程序作為微信生態(tài)內的新生力量,不僅被官方,也被很多開發(fā)者和內容創(chuàng)業(yè)者寄予厚望,處于對代碼的安全性的考慮,這個漏洞遲早有一天會被
修復(封掉) 的。
所以這種這里介紹的獲取小程序源碼的方法,應該是不會太長久的。
作者:行無忌
鏈接:只需兩步獲取任何微信小程序源碼-實戰(zhàn)教程-小程序社區(qū)-微信小程序-微信小程序開發(fā)社區(qū)-小程序開發(fā)論壇-微信小程序聯盟
著作權歸作者所有。商業(yè)轉載請聯系作者獲得授權,非商業(yè)轉載請注明出處。