這種方法,并不能反編譯出所有的小程序源碼,請自知!
具體的局限請看:qwerty472123
大神的md文件
https://github.com/qwerty472123/wxappUnpacker
下面是原文:
于是就想到獲取到小程序地源文件,然后再對其進行反編譯還原為源代碼,來作為學習參考。我百度了各種關于小程序地反編譯教程,但是感覺都不太適合像我這樣地初學小白,踩了挺多坑。在這里把我重新簡化好的,快速地獲取一個微信小程序源碼的方式記錄下來。
xxxxx.wxapkg
先來想想一個很簡單的問題,小程序的源文件存放在哪?
但是在微信服務器上,普通用戶想要獲取到,肯定是十分困難的,有沒有別的辦法呢?
手機本地
找到到已經下載過的小程序文件那么如何才能在手機里找到小程序的源文件包呢?
根目錄/data/data/com.tencent.mm/MicroMsg/{一串16進制字符}/appbrand/pkg/
在這個目錄下,會發現一些 xxxxxxx.wxapkg
類型的文件,這些就是微信小程序的包
微信小程序的格式就是:.wxapkg
!!! PS !!!:
這里重要聲明一下:雖然微信小程序的包后綴是.wxapkg
,但有一些包的依賴后綴也是.wxapkg
,真正的小程序包大小1M
左右,而依賴包大小2、3M
甚至更多。所以一股腦的反編譯.wxapkg
類型的文件可能會報錯:Error: This Package is unrecognizable, please decrypted every type of file by hand.
,遇見這個問題的小伙伴請自知,你可能沒找對包哦!
.wxapkg
是一個二進制文件,有其自己的一套結構。
安卓
或者iPhone
都要要用到第三方的文件管理器,比如:RE文件管理器
,并且安卓需要取得root權限,而蘋果手機肯定是要越獄的,且iphone的越獄難度>>安卓獲取root,不管越獄還是root,這都太費勁,當然有能力的同學可以直接從手機上來操作,但是這里不推薦從真機上獲取
。1.node.js運行環境
2.反編譯的腳本
qwerty472123
大神寫的node.js版本的,當然也有其它版本的,例如python
版本,這里我只是簡單地用node.js版本舉例3.安卓模擬器(要求自帶root權限)
夜神模擬器
,你也可以自選使用安卓模擬器獲取到.wxapkg文件
不用越獄,不用root,使用電腦端的安卓模擬器來獲取是一個非常簡單快捷的獲取方式,具體步驟如下:
1.打開安裝好的安卓模擬器,并在模擬器中安裝QQ
、微信
、RE管理器
QQ
、微信
在模擬器自帶的應用商店里搜索下載安裝即可RE管理器
的下載地址:https://pan.baidu.com/s/1PPBx08rNutXxhlMMJbuTpQ
提示一下:
RE管理器
在模擬器的應用商店一般也能搜到!!可以直接下載
下載好后直接拖拽進打開的模擬器窗口就會自動安裝
2.設置一下模擬器
夜神模擬器
舉例RE管理器
順利的獲取到ROOT權限3.接下來在模擬器里打開微信,然后在微信中運行你想要獲取的下程序(這其實是讓微信把小程序的源文件包從服務器下載到了本地了)
根目錄/data/data/com.tencent.mm/MicroMsg/{一串16進制字符}/appbrand/pkg/
就抵達了目的文件夾
你會看到發現里面的一些.wxapkg后綴的文件,就是它們沒錯啦,可以根據使用的時間來判斷那個是你剛才從服務器下載過來的
壓縮為zip包
,然后再將壓縮好的包通過QQ發送到我的電腦
注:如果不進行壓縮的話,QQ會提示文件不可用
所以QQ的這個功能可以讓我們很方便的拿到源文件,而不必到電腦目錄去找模擬器的文件目錄。
用cd命令進入到你clone或者下載好的反編譯腳本目錄下
圖中的是我的命令行目錄,
注意
:這個路徑最好不要有中文,大家都知道,中文路徑,經常引起一些奇奇怪怪的bug,如果路徑有中文,自行解決
把那幾個反編譯要用到的腳本放在上圖中的目錄下(這個目錄根據自己的實際目錄而定,圖中是我的目錄):
(qwerty472123
大神的腳本里面,后綴.js
、.json
的文件才是有用的文件,其他文件是GitHub上需要的文件,當然也可以全部解壓!在這里我只解壓了后綴.js
.json
的文件)
在node命令窗口中安裝依賴:npm install
安裝好依賴之后,就是最后一步了,反編譯 .wxapkg
文件
在當前目錄下輸入node wuWxapkg.js [-d] <files…>
//files就是你想要反編譯的文件名
例如:我有一個需要反編譯的文件 _163200311_32.wxapkg
已經解壓到了D盤根目錄下,那么就輸出命令node .\wuWxapkg.js D:\_163200311_32.wxapkg
小技巧:注意這里斜桿別打反了,你可以輸入文件名前幾個字符,然后Tab鍵會自動補全文件名
(注意一點: .wxapkg
文件名,不要有空格。有些.wxapkg
文件名中自帶空格,請自行把空格去掉,或者把文件名改成其他的。路徑問題自行修改!!!)
回車運行
反編譯腳本就能一步將.wxapkg 文件還原為微信開發者工具能夠運行的源文件,目錄地址和你反編譯的文件地址是一樣的
看到這些文件結構,是不是非常熟悉!我們在微信開發者工具新增項目即可打開
如果運行出現了點問題:
1、可以試試,點擊開發者工具詳情去掉 es6轉es5的勾,勾上不校驗安全域名
2、 勾選了還是無法運行?那么請在詳情里把基礎版本庫調低至1.5左右,再試試
3、出現找不到某些文件的情況怎么辦?我只能告訴:刪!刪!刪! app.json
里面,提示找不到那個文件,就將pages下注冊的該頁面語句暫時刪除掉。刪
到可以運行為止
4、還是無法運行?那就自己想辦法吧!
至此我們就通過非常簡單的方式獲取到了一個想要的小程序源文件,并對其進行了反編譯還原 以后想要再反編譯其他的小程序,非常快速,只需要兩步
1.使用模擬器找到小程序.wxapkg文件
2.使用nodejs反編譯腳本將.wxapkg文件反編譯
使用此方法,絕大部分的小程序都能正常反編譯出來,但是也會有一些特殊的情況,具體可以查看
qwerty472123
大神的readme.md
文件
早在跳一跳小游戲火的時候,就有人通過小程序的appid和版本號,構造URL直接從服務器端下載該小程序的源碼wxapkg文件。但是這種方法很快就被封了。
上線的源代碼能如此簡單的被獲取到,不得不說小程序的源碼安全存在一些隱患,不過現在的小程序開發框架會用babel這樣的打包工具把js邏輯代碼揉在一個js文件里,轉編譯成看不懂的代碼,這樣,即使被獲取了源碼,也很難窺得蛛絲馬跡。
這里介紹的方法只想提供給像我一樣的小程序新手用來學習和仿寫練手,獲取仿寫素材。
小程序作為微信生態內的新生力量,不僅被官方,也被很多開發者和內容創業者寄予厚望,處于對代碼的安全性的考慮,這里的獲取方式,不確定以后是否還行得通。
深藍互聯成立于2013年,是一家物聯網硬件開發及軟件應用服務商,獲得多次獲得國家高新技術企業資質的企業。深藍互聯專注軟硬件技術開發的專業性技術公司。我們從事軟硬件開發十年,擅長SaaS 平臺開發、APP小程序開發、軟硬件結合開發,在視覺識別處理、數據架構、云計算、多線程高并發和集群、數據安全加密和防護方便有很深的技術積累。
我們擁有專業優秀的設計和技術團隊,以極具創意的 UI 設計、精湛卓越的開發技術,專業的網絡策劃團隊。公司多年來投入打造物聯網SaaS平臺,集成了公司研發的多款智能物聯網終端(智能鮮米機、生鮮售貨機、自助洗車機、小區電瓶車充電系統等)。
公司一直堅持以研發為導向,打造軟硬件結合的物聯網平臺系統。將一直堅持提高開發的技術實力更好的為我們的客戶服務!
文章來自深藍互聯http://www.mingjenhsu.com/webxt/158.html轉載請注明出處!
下一篇:如何做網絡營銷可以留住顧客呢?