只需兩步獲取任何小程序源碼

前言:這個博文的轉載挺多的,不過原文在更新,qwerty472123大神的腳本也在更新,好多文章轉載后就不再更新了,看以前的步驟操作,可能會引起奇怪的bug

這種方法,并不能反編譯出所有的小程序源碼,請自知!

具體的局限請看:qwerty472123大神的md文件

https://github.com/qwerty472123/wxappUnpacker

下面是原文:?

最近在學習微信小程序開發,半個月學習下來,很想實戰一下踩踩坑,于是就仿寫了一個滴滴他們家的青桔單車小程序的前端實現,過程一言難盡,差不多兩周時間過去了,發現小程序的坑遠比想象的要多的多!!在實際練手中,完全是黑盒的,看到人家上線的小程序的效果,純靠推測,部分效果在絞盡腦汁后能做出大致的實現,但是有些細節,費勁全力都沒能做出來。很想一窺源碼,查看究竟,看看大廠的前端大神們是如何規避了小程序的各種奇葩的坑。


??于是就想到獲取到小程序地源文件,然后再對其進行反編譯還原為源代碼,來作為學習參考。我百度了各種關于小程序地反編譯教程,但是感覺都不太適合像我這樣地初學小白,踩了挺多坑。在這里把我重新簡化好的,快速地獲取一個微信小程序源碼的方式記錄下來。

一、簡單聊一下xxxxx.wxapkg

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

當然是在微信的服務器上。

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

簡單思考一下我們使用小程序的場景就會明白,當我們點開一個微信小程序的時候,其實是微信已經將它的從服務器上下載到了手機,然后再來運行的。

所以,雖然我們沒能力從服務器上獲取到,但是我們應該可以從手機本地找到到已經下載過的小程序源文件

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

這里只以安卓手機為例,畢竟窮逼不曾擁有過蘋果手機

具體目錄位置直接給出:/data/data/com.tencent.mm/MicroMsg/{一串16進制字符}/appbrand/pkg/

在這個目錄下,會發現一些xxxxxxx.wxapkg類型的文件,這些就是微信小程序的包

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

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

關于.wxapkg的詳細內容可以參考lrdcq大神的博文:微信小程序源碼閱讀筆記

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

二、準備材料

1.node.js運行環境

如果沒有安裝nodejs,請先安裝一下

下載地址:https://nodejs.org/en/

2.反編譯的腳本

這里提供一個Github上qwerty472123大神寫的node.js版本的,當然也有其它版本的,這里我只是簡單地用node.js版本舉例

地址:https://github.com/qwerty472123/wxappUnpacker

3.安卓模擬器(要求自帶root權限)

我使用的是夜神模擬器,用來獲取小程序源文件

下載地址:https://www.yeshen.com/cn/download/fullPackage

三、詳細步驟

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

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

1.打開安裝好的安卓模擬器,并在模擬器中安裝QQ、微信、RE管理器

QQ、微信在模擬器自帶的應用商店里搜索下載安裝即可

RE管理器的下載地址:https://pan.baidu.com/s/1PPBx08rNutXxhlMMJbuTpQ

下載好后直接拖拽進打開的模擬器窗口就會自動安裝

2.設置一下模擬器

以我個人認為比較好用的夜神模擬器舉例

首先到模擬器內部設置超級用戶權限

這些操作的目的都是為了能讓RE管理器順利的獲取到ROOT權限

3.接下來在模擬器里打開微信,然后在微信中運行你想要獲取的下程序(這其實是讓微信把小程序的源文件包從服務器下載到了本地了)

就以我說的這款青桔單車的小程序舉例(希望滴滴的大神不會想打死我~)

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

/data/data/com.tencent.mm/MicroMsg//appbrand/pkg/

就抵達了目的文件夾

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

一般小程序的文件不會太大,可以結合時間來判斷,長按壓縮所選文件,然后再將壓縮好的包通過QQ發送到我的電腦

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

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

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

四、使用反編譯腳本解包 wxapkg

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

打開nodejs命令窗口

(node命令行如圖)

(不是上面那個綠色圖標的Node.js)

打開node命令行之后,可以看到此時命令行所在的目錄

(圖中的是我的命令行目錄,注意:這個路徑最好不要有中文,大家都知道,中文路徑,經常引起一些奇奇怪怪的bug,如果路徑有中文,自行解決)

把那幾個反編譯要用到的腳本放在上圖中的目錄下(這個目錄根據自己的實際目錄而定,圖中是我的目錄)

(qwerty472123大神的腳本里面,后綴.js.json的文件才是有用的文件,其他文件是GitHub上需要的文件,當然也可以全部解壓!在這里我只解壓了后綴.js.json的文件)

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

注意一點:.wxapkg文件名,不要有空格。有些.wxapkg文件名中自帶空格,請自行把空格去掉,或者把文件名改成其他的)

回車運行

反編譯腳本就能一步將.wxapkg 文件還原為微信開發者工具能夠運行的源文件,目錄地址和你反編譯的文件地址是一樣的

然后在微信開發者工具新增項目即可打開

如果運行出現了點問題:

1、可以試試,點擊開發者工具詳情去掉 es6轉es5的勾,勾上不校驗安全域名

2、 勾選了還是無法運行?那么請在詳情里把基礎版本庫調低至1.5左右,再試試

3、出現找不到某些文件的情況怎么辦?我只能告訴:刪!刪!刪!app.json

里面,提示找不到那個文件,就將pages下注冊的該頁面語句暫時刪除掉。刪

到可以運行為止

4、還是無法運行?那就自己想辦法吧!

五、兩步即可完成

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

1.使用模擬器找到小程序.wxapkg文件

2.使用nodejs反編譯腳本將.wxapkg文件反編譯

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

六、寫在后面的話

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

上線的源代碼能如此簡單的被獲取到,不得不說小程序的源碼安全存在一些隱患,有些小程序會將重要的js邏輯代碼揉在一個js文件里,這樣,即使被獲取了源碼,也很難讀懂,不過現在越來越多的小程序使用mpvue wepy之類的框架來開發,使得代碼的安全性又提高不少。

這里介紹的方法只想提供給像我一樣的小程序新手用來學習和仿寫練手,獲

取仿寫素材。 前段時間有位大哥加我微信請教反編譯,我出于熱心,手把手

教他操作,為他解答,之后通過朋友圈發現他私下經營小程序源碼超市,將

獲取到的源碼用于販賣牟利,買源碼的人只需要做簡單修改和替換就能做出

自己的小程序。。。 這讓我深感罪孽

小程序作為微信生態內的新生力量,不僅被官方,也被很多開發者和內容創業者寄予厚望,處于對代碼的安全性的考慮,這里的獲取方式,不確定以后是否還行得通。?

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容