小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

兩步快速獲取微信小程序源碼

 風(fēng)聲之家 2018-06-18


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

最近在學(xué)習(xí)微信小程序開發(fā),半個(gè)月學(xué)習(xí)下來,很想實(shí)戰(zhàn)一下踩踩坑,于是就仿寫了一個(gè)共享的單車小程序的前端實(shí)現(xiàn),過程一言難盡,差不多兩周時(shí)間過去了,發(fā)現(xiàn)小程序的坑遠(yuǎn)比想象的要多的多!!在實(shí)際練手中,完全是黑盒的,純靠推測(cè),部分效果在各種嘗試后能能做出大致的實(shí)現(xiàn),但是有些細(xì)節(jié),實(shí)在不知道如何去實(shí)現(xiàn)。這種時(shí)候,真的很想一窺源碼,查看究竟,看看大廠的前端大神們是如何規(guī)避了小程序的一些比較奇葩的坑。

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


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

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

  • 在微信的服務(wù)器上。

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

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

那么小程序文件存儲(chǔ)在手機(jī)的什么位置呢?

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

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

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

  • 微信小程序源碼閱讀筆記lrdcq大神的這篇博文有對(duì).wxapkg的詳細(xì)介紹,當(dāng)然你也不可以不看

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

準(zhǔn)備材料

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

詳細(xì)步驟:

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

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

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

  • 這些操作的目的都是為了能讓RE管理器順利的獲取到ROOT權(quán)限
  1. 接下來在模擬器里打開微信,然后在微信中運(yùn)行你想要獲取的小程序(這一步微信就會(huì)把目標(biāo)小程序的源文件包從服務(wù)器下載到了本地)
  • 就以我說的這款共享單車的小程序舉例
  • 在模擬器微信中運(yùn)行一下后,切回模擬器桌面,運(yùn)行RE瀏覽器 來到目錄
  • /data/data/com.tencent.mm/MicroMsg/{{一串32位的16進(jìn)制字符串文件夾}}/appbrand/pkg/
  • 就抵達(dá)了目的文件夾
  • 你會(huì)看到發(fā)現(xiàn)里面的一些.wxapkg后綴的文件,就是它們沒錯(cuò)啦,可以根據(jù)時(shí)間來判斷那個(gè)是你剛才從服務(wù)器下載過來的
  • 一般小程序的文件不會(huì)太大,長(zhǎng)按,然后點(diǎn)右上角選項(xiàng)將其壓縮為zip包,然后再將壓縮好的包通過QQ發(fā)送到我的電腦
  • 注:如果不進(jìn)行壓縮的話,QQ會(huì)提示文件不可用
  • 所以QQ的這個(gè)功能可以讓我們很方便的拿到源文件,而不必到電腦目錄去找模擬器的文件目錄。
  • 解壓。這樣幾步簡(jiǎn)單操作,就成功拿到了小程序的源文件了。

使用反編譯腳本解包 wxapkg

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

  • 打開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盤根目錄下,那么就輸出命令

    node .\wuWxapkg.js D:\_163200311_32.wxapkg
    

小技巧:注意這里斜桿別打反了,你可以輸入文件名前幾個(gè)字符,然后Tab鍵會(huì)自動(dòng)補(bǔ)全文件名

  • 回車運(yùn)行

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

  • 看到這些文件結(jié)構(gòu),是不是非常熟悉!我們?cè)谖⑿砰_發(fā)者工具新增項(xiàng)目即可打開

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

如果運(yùn)行出現(xiàn)了點(diǎn)問題:可以試試,點(diǎn)擊開發(fā)者工具 詳情 去掉 es6轉(zhuǎn)es5 的勾勾上不校驗(yàn)安全域名

兩步即可完成

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

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

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

寫在后面的話

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

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

這里介紹的方法只想提供給像我一樣的小程序新手用來學(xué)習(xí)和仿寫練手,獲取仿寫素材。 前段時(shí)間有位大哥加我微信請(qǐng)教反編譯,我出于熱心,手把手教他操作,為他解答,之后通過朋友圈發(fā)現(xiàn)他私下經(jīng)營(yíng)小程序源碼超市,將獲取到的源碼用于販賣牟利,買源碼的人只需要做簡(jiǎn)單修改和替換就能做出自己的小程序。。。 這讓我深感罪孽

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多