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

轉(zhuǎn)載自百家號作者:不忘初心lucy

第一次在掘金這樣高大上的社區(qū)寫文章稍算,忐忑地敲下我獲取小程序源碼過程中的經(jīng)驗分享鸣奔。

最近在學習微信小程序開發(fā)墨技,半個月學習下來,很想實戰(zhàn)一下踩踩坑挎狸,于是就仿寫了一個滴滴他們家的青桔單車小程序的前端實現(xiàn)健提,過程一言難盡,差不多兩周時間過去了伟叛,發(fā)現(xiàn)小程序的坑遠比想象的要多的多K奖浴!在實際練手中统刮,完全是黑盒的紊遵,看到人家上線的小程序的效果,純靠推測侥蒙,部分效果在絞盡腦汁后能做出大致的實現(xiàn)暗膜,但是有些細節(jié),費勁全力都沒能做出來鞭衩。很想一窺源碼学搜,查看究竟,看看大廠的前端大神們是如何規(guī)避了小程序的各種奇葩的坑论衍。

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

簡單聊一下xxxxx.wxapkg

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

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

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

簡單思考一下我們使用小程序的場景就會明白疾嗅,當我們點開一個微信小程序的時候外厂,其實是微信已經(jīng)將它的從服務器上下載到了手機冕象,然后再來運行的代承。所以,雖然我們沒能力從服務器上獲取到渐扮,但是我們應該可以從手機本地找到到已經(jīng)下載過的小程序源文件

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

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

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

.wxapkg是一個二進制文件,有其自己的一套結(jié)構(gòu)耻讽。關于.wxapkg的詳細內(nèi)容可以參考lrdcq大神的博文:微信小程序源碼閱讀筆記但是這里有個坑察纯,想要進入到上面這個目錄的話,用手機自帶的文件管理器肯定是不行的针肥,安卓或者iPhone都要要用到第三方的文件管理器饼记,比如:RE文件管理器,并且安卓需要取得root權(quán)限慰枕,而蘋果手機肯定是要越獄的具则,且iphone的越獄難度>>安卓獲取root,不管越獄還是root具帮,這都太費勁博肋,當然有能力的同學可以直接從手機上來操作,但是這里不推薦從真機上獲取蜂厅。

準備材料

node.js運行環(huán)境如果沒有安裝nodejs匪凡,請先安裝一下下載地址:nodejs.org/en/反編譯的腳本這里提供一個Github上qwerty472123大神寫的node.js版本的,當然也有其它版本的掘猿,這里我只是簡單地用node.js版本舉例地址:github.com/qwerty47212…安卓模擬器(要求自帶root權(quán)限)我使用的是夜神模擬器锹雏,用來獲取小程序源文件下載地址:www.yeshen.com/cn/download

詳細步驟:

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

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

打開安裝好的安卓模擬器轻绞,并在模擬器中安裝QQ、微信佣耐、RE管理器QQ政勃、微信在模擬器自帶的應用商店里搜索下載安裝即可RE管理器的下載地址:pan.baidu.com/s/1PPBx08rN…下載好后直接拖拽進打開的模擬器窗口就會自動安裝設置一下模擬器以我個人認為比較好用的夜神模擬器舉例首先到模擬器內(nèi)部設置超級用戶權(quán)限

image
image

這些操作的目的都是為了能讓RE管理器順利的獲取到ROOT權(quán)限接下來在模擬器里打開微信,然后在微信中運行你想要獲取的下程序(這其實是讓微信把小程序的源文件包從服務器下載到了本地了)就以我說的這款青桔單車的小程序舉例(希望滴滴的大神不會想打死我~)在模擬器微信中運行一下后兼砖,直接切回模擬器桌面運行RE瀏覽器 來到目錄/data/data/com.tencent.mm/MicroMsg/{{一串32位的16進制字符串文件夾}}/appbrand/pkg/就抵達了目的文件夾

image

你會看到發(fā)現(xiàn)里面的一些.wxapkg后綴的文件奸远,就是它們沒錯啦,可以根據(jù)使用的時間來判斷那個是你剛才從服務器下載過來的一般小程序的文件不會太大讽挟,可以結(jié)合時間來判斷懒叛,長按壓縮所選文件,然后再將壓縮好的包通過QQ發(fā)送到我的電腦如果不進行壓縮的話,是無法將這個文件通過QQ來發(fā)送的

image

所以QQ的這個功能可以讓我們很方便的拿到源文件耽梅,而不必到電腦目錄去找模擬器的文件目錄薛窥。解壓。這樣幾步簡單操作眼姐,就成功拿到了小程序的源文件了诅迷。

使用反編譯腳本解包 wxapkg

到這里你應該已經(jīng)將反編譯腳本從github下載 或者 clone 到本地某個目錄打開nodejs命令窗口cd 到你clone或者下載好的反編譯腳本目錄下在node命令窗口中依次安裝如下依賴:npm install esprimanpm install css-treenpm install cssbeautifynpm install vm2npm install uglify-es安裝好依賴之后,就是最后一步了众旗,反編譯 .wxapkg 文件在當前目錄下輸入node wuWxapkg.js [-d] <files...> //files 就是你想要反編譯的文件名例如:我有一個需要反編譯的文件 _163200311_32.wxapkg 已經(jīng)解壓到了D盤根目錄下,那么就輸出命令node .wuWxapkg.js D:_163200311_32.wxapkg回車運行

image

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

image

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

image
image

運行成功,源碼獲取完成

真的只需要兩步

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

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

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

寫在后面的話

.apk 之類的文件反編譯非常困難蜘欲,而小程序竟可以如此輕松隨意地被獲取到源碼,根源在于小程序的開發(fā)團隊并沒有對小程序的執(zhí)行文件進行有效的保護晌柬,也就是加密姥份,所以我們才能使用別人寫好的腳本直接進行反編譯,其過程類似于解壓年碘。

實際上澈歉,小程序只是很簡單的將圖片、js和json文件壓在一起屿衅,而壓制的過程就是Wxml -> Html埃难、 Wxml -> JS、Wxss -> Css,轉(zhuǎn)換后文件二進制格式跟后綴名為wx二進制格式完全一致涡尘。

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啦扬,一起剝皮案震驚了整個濱河市中狂,隨后出現(xiàn)的幾起案子凫碌,更是在濱河造成了極大的恐慌,老刑警劉巖胃榕,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盛险,死亡現(xiàn)場離奇詭異,居然都是意外死亡勋又,警方通過查閱死者的電腦和手機苦掘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來楔壤,“玉大人鹤啡,你說我怎么就攤上這事《紫” “怎么了递瑰?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隙畜。 經(jīng)常有香客問我抖部,道長,這世上最難降的妖魔是什么议惰? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任慎颗,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘俯萎。我一直安慰自己傲宜,他們只是感情好,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布夫啊。 她就那樣靜靜地躺著蛋哭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涮母。 梳的紋絲不亂的頭發(fā)上谆趾,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機與錄音叛本,去河邊找鬼沪蓬。 笑死,一個胖子當著我的面吹牛来候,可吹牛的內(nèi)容都是我干的跷叉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼营搅,長吁一口氣:“原來是場噩夢啊……” “哼云挟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起转质,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤园欣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后休蟹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沸枯,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年赂弓,在試婚紗的時候發(fā)現(xiàn)自己被綠了绑榴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡盈魁,死狀恐怖翔怎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杨耙,我是刑警寧澤赤套,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站按脚,受9級特大地震影響于毙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辅搬,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一唯沮、第九天 我趴在偏房一處隱蔽的房頂上張望脖旱。 院中可真熱鬧,春花似錦介蛉、人聲如沸萌庆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽践险。三九已至,卻和暖如春吹菱,著一層夾襖步出監(jiān)牢的瞬間巍虫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工鳍刷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留占遥,地道東北人。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓输瓜,卻偏偏與公主長得像瓦胎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尤揣,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理搔啊,服務發(fā)現(xiàn),斷路器北戏,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 明知道不會有結(jié)局负芋,干嘛還這么期待 明知道自己是那么的要強,卻還是忍不住想發(fā)信息的沖動 少年最欠,醒醒吧示罗!不要讓自己依賴...
    永遠的hachi閱讀 216評論 0 1
  • 余生性喜靜惩猫≈ビ玻或得暇時,不常與友而伴轧房, 享于徒走拌阴。好惡之喜,獨手繪之器奶镶,常備裹 中迟赃。今斟其二份,尚不可為善厂镇,眾客做...
    勒魚驢閱讀 335評論 2 6
  • 他是世界的人類的生命 戀愛是人類的罪惡之狂風 好人們都是在夢中 里邊被水包藏起來了 融融如乳水的神秘 不絕的角聲飛...
    小范傷閱讀 187評論 0 0