一、前言
在日常開(kāi)展?jié)B透測(cè)試的工作中,經(jīng)常會(huì)遇到各種各樣的小程序,為了方便滲透測(cè)試人員及開(kāi)發(fā)人員分析小程序的前端源代碼,了解小程序的運(yùn)行邏輯和頁(yè)面上隱藏的信息,本文分享了利用解密和逆向工具,從本地緩存文件中反編譯小程序前端源代碼的方法,希望對(duì)大家日常開(kāi)展工作有幫助。
二、準(zhǔn)備工作
(一)安裝Nodejs
Node.js是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境,通常是運(yùn)行在服務(wù)端的 JavaScript。本文需要nodejs的環(huán)境提供npm工具來(lái)安裝相關(guān)依賴,因此需要首先安裝nodejs。
Node.js 官方下載地址:
https://nodejs.org/zh-cn/download/
之后根據(jù)自己使用的操作系統(tǒng)選擇相應(yīng)的版本即可,這里我選擇windows版:
設(shè)置好安裝路徑后一路點(diǎn)擊next即可。
之后在cmd中輸入:
node -v
出現(xiàn)版本信息即表示安裝成功。
注意:在執(zhí)行例如npm install xxx -g等命令全局安裝的時(shí)候,默認(rèn)會(huì)將模塊安裝在C:\Users\用戶名\AppData\Roaming路徑下的npm和npm_cache中,不方便管理且占用C盤空間,所以這里我參考了別人的配置,自定義的全局模塊安裝目錄,在node.js安裝目錄下新建兩個(gè)文件夾 node_global和node_cache。
然后在cmd中執(zhí)行以下命令(注意前兩條命令改成你們自己的路徑):
# 設(shè)置全局模塊安裝路徑
npm config set prefix "D:\nodejs\node_global"
# 設(shè)置緩存目錄
npm config set cache "D:\nodejs\node_cache"
# 設(shè)置鏡像源為淘寶npm鏡像,可提高下載速度
npm config set registry=https://registry.npm.taobao.org
本文只是為了使用npm來(lái)安裝東西,實(shí)際上到這里就可以結(jié)束了。如果需要更多的功能,則后續(xù)還需要配置環(huán)境變量,請(qǐng)參考其他文章,本文不過(guò)多涉及。
這里順便提一下,如果需要進(jìn)行版本相關(guān)的操作,請(qǐng)參考以下命令:
命令 說(shuō)明
nvm install 14.15.5 安裝指定的版本的nodejs
nvm use 10.5.0 使用指定版本的nodejs
nvm list 查看已經(jīng)安裝的版本
nvm list installed 查看已經(jīng)安裝的版本
nvm list available 查看網(wǎng)絡(luò)可以安裝的版本
nvm arch 查看當(dāng)前系統(tǒng)的位數(shù)和當(dāng)前nodejs的位數(shù)
nvm install [arch] 安裝制定版本的node 并且可以指定平臺(tái) version 版本號(hào) arch 平臺(tái)
nvm on 打開(kāi)nodejs版本控制
nvm off 關(guān)閉nodejs版本控制
nvm proxy [url] 查看和設(shè)置代理
nvm node_mirror [url] 設(shè)置或者查看setting.txt中的node_mirror,如果不設(shè)置的默認(rèn)是 https://nodejs.org/dist/
nvm npm_mirror [url] 設(shè)置或者查看setting.txt中的npm_mirror,如果不設(shè)置的話默認(rèn)的是:https://github.com/npm/npm/archive/.
nvm uninstall 卸載制定的版本
nvm use [version] [arch] 切換制定的node版本和位數(shù)
nvm root [path] 設(shè)置和查看root路徑
nvm version 查看當(dāng)前的版本
(二)解密和逆向工具
在獲得小程序的緩存文件之后,需要先使用解密工具進(jìn)行一輪解密,之后才能進(jìn)行逆向。
解密工具下載地址:https://share.weiyun.com/uMqNGOXv
逆向工具下載地址:https://pan.baidu.com/s/1FigJmOKs76LBOZDQq5nOnA
提取碼:1234
逆向工具備用下載地址:
https://pan.baidu.com/s/12WPychwfjMfzgSgIi9aUGA?pwd=fpni取碼: fpni
注:以上地址若失效,可及時(shí)私信我。
三、小程序緩存文件解密
(一)定位小程序緩存路徑
首先確定小程序的緩存目錄,在微信上打開(kāi)設(shè)置,然后找到文件管理:
點(diǎn)擊打開(kāi)文件夾,打開(kāi)Applet文件夾:
這里面即存儲(chǔ)了小程序的本地緩存文件:
(二)源碼解密
接著打開(kāi)一個(gè)小程序,這里不便透露具體用的是哪個(gè)小程序,大家可以自行去尋找感興趣的小程序玩一下。
首先打開(kāi)目標(biāo)小程序,然后多點(diǎn)一些頁(yè)面,讓小程序在本地產(chǎn)生緩存文件,之后查看本地文件夾,會(huì)看到產(chǎn)生了一個(gè)文件夾,通過(guò)文件夾創(chuàng)建的時(shí)間可以判斷出哪個(gè)文件夾里的數(shù)據(jù)是屬于剛訪問(wèn)小程序的緩存目錄:
那么之后,我們需要先對(duì)這些緩存數(shù)據(jù)進(jìn)行一次解密,方法很簡(jiǎn)單,打開(kāi)解密工具:
然后點(diǎn)擊’選擇加密小程序包’,并選中自己剛才定位出來(lái)的小程序的緩存目錄。如圖所示,已經(jīng)解密成功:
解密后的文件在解密程序同目錄下的wxpack文件夾中:
(三)源碼反編譯
首先解壓已下載好的wxappUnpacker,然后進(jìn)入該文件夾,復(fù)制該文件夾的地址,然后以管理員身份打開(kāi)cmd窗口(直接按win+R打開(kāi)運(yùn)行窗口,然后輸入cmd,按ctrl+shift+enter),然后跳轉(zhuǎn)到wxappUnpacker內(nèi),如下所示:
注意一定要管理員身份運(yùn)行cmd窗口,否則后面可能造成命令執(zhí)行出錯(cuò)。
然后開(kāi)始安裝依賴,按順序執(zhí)行以下命令:
npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
我這里因?yàn)橐呀?jīng)有安裝過(guò)了,所以和你們的會(huì)不太一樣。執(zhí)行以后不要出現(xiàn)error的報(bào)錯(cuò)信息即可。
然后根據(jù)前面解密的文件構(gòu)造命令如下:
node ./wuWxapkg.js E:\all_tools\WeiXinXiaoChengXu\小程序包解密\wxpack\wx3b25611579a1b7ec.wxapkg
這條命令的格式是:
node ./wuWxapkg.js 主包路徑
還有一種格式:
node ./wuWxapkg.js 分包路徑 -s=主包路徑
有時(shí)候我們解密后得到的是主包后的分包(具體為什么我也不清楚,看情況),那么這時(shí)候就可以很方便的用到-s參數(shù)來(lái)指定存放的路徑。
現(xiàn)在我們將根據(jù)第一種命令格式構(gòu)造的命令在cmd中執(zhí)行:
此時(shí)可以看到已經(jīng)生成了一個(gè)文件夾,當(dāng)前內(nèi)容如下:
此時(shí)用vscode打開(kāi)這個(gè)文件夾:
此時(shí)就可以自由查看小程序的前端源碼和各種圖片了:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-780345.html
四、小結(jié)
本文分享了從微信小程序本地緩存文件中反編譯獲得源碼的方法,其中安裝依賴時(shí)需要用到npm,而npm不需要單獨(dú)安裝,因?yàn)樵诎惭b Node 的時(shí)候,會(huì)連帶一起安裝 npm。因此我們需要安裝一個(gè)nodejs,之后使用解密和反編譯工具按照先解密后反編譯的步驟即可獲得小程序的源碼,不足之處敬請(qǐng)諒解。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-780345.html
到了這里,關(guān)于微信小程序反編譯方法分享的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!