知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
微信小程序解包
發(fā)表時(shí)間:2021-3-31
發(fā)布人:葵宇科技
瀏覽次數(shù):135
此處使用Windows版微信做介紹,但是Windows版和手機(jī)版稍微有點(diǎn)區(qū)別。先去獲取一個(gè)Windows版的微信小程序包。默認(rèn)位置在: C:\Users\user\Documents\WeChat Files\Applet
。移動(dòng)端的包在 /data/data/com.tencent.mm/MicroMsg/{id}/appbrand/pkg
,此處沒有移動(dòng)設(shè)備,不使用移動(dòng)設(shè)備做演示。
目錄下有一堆wx開頭的目錄,這些ID就是對應(yīng)的小程序ID,可以在訪問小程序抓包中獲取到,如果懶得抓包也不知道小程序ID就把這些刪掉,重新訪問會(huì)再次下載,根據(jù)日期來找到對應(yīng)的包即可。
Windows版的小程序包自動(dòng)在外部加了一層的加密,我們看到的包名統(tǒng)一為: __APP__.wxapkg
。我們可以看到這樣的文件頭,V1MMWX標(biāo)識(shí)就是加密后添加的標(biāo)識(shí)。
這個(gè)是需要解密的,借助大佬的go語音項(xiàng)目來解密: https://github.com/BlackTrace/pc_wxapkg_decrypt
,同時(shí)也有編譯后的程序,直接用即可。
那Windows版的小程序的加密流程為:
- 首先pbkdf2生成AES的key。利用微信小程序id字符串為pass,salt為 saltiest 迭代次數(shù)為1000。調(diào)用pbkdf2生成一個(gè)32位的key
- 首先取原始的wxapkg的包得前1023個(gè)字節(jié)通過AES通過1生成的key和iv( the iv: 16 bytes ),進(jìn)行加密
- 接著利用微信小程序id字符串的倒數(shù)第2個(gè)字符為xor key,依次異或1023字節(jié)后的所有數(shù)據(jù),如果微信小程序id小于2位,則xorkey 為 0x66
- 把AES加密后的數(shù)據(jù)(1024字節(jié))和xor后的數(shù)據(jù)一起寫入文件,并在文件頭部添加 V1MMWX 標(biāo)識(shí)
解密后,就能獲得一個(gè)以微信小程序ID命令的包,這個(gè)包就是需要解析來獲取小程序源碼的包。先來看一下小程序的結(jié)構(gòu)。
從十六進(jìn)制中可以看到,旁邊的文件目錄文件。這種包并非一個(gè)壓縮格式的包,而是一個(gè)二進(jìn)制的包,需要特定的方法解包。
小程序解包
使用工具: https://gist.github.com/Integ/bcac5c21de5ea35b63b3db2c725f07ad
執(zhí)行: python3 python.py wxid.wxapkg
,可以看到目錄下生成的微信id的目錄包。
或者使用: https://github.com/xuedingmiaojun/wxappUnpacker ,一個(gè)nodejs的項(xiàng)目。提供Windows的安裝版。
獲取到小程序的源碼格式包的時(shí)候,跟原來的源碼還是稍微有點(diǎn)區(qū)別。在一級目錄下,可以看到有三個(gè)文件,實(shí)際上不同的解包工具看到的不一樣,有時(shí)候是四個(gè)文件。
app-service.js
app-config.json
page-frame.html
//app.js
app-service.js
是所以js的匯總,只是微信把js都壓縮到這個(gè)js內(nèi)。
app-config.json
: 小程序工程 app.json
以及各個(gè)頁面的 JSON 配置文件匯總,可直接查看;
page-frame.html
: 所有頁面的 .wxml
和 app.wxss
樣式文件的匯總;
*.html
: 包含每個(gè)頁面對應(yīng)的 .wxss
信息,可讀性較好;
static
: 各類圖片、音頻等資源文件。
獲取解包后,小程序源碼有什么用?
小程序內(nèi)的信息泄露
有一部分開發(fā)者會(huì)把Appid和Secret放在小程序內(nèi)請求,比如如下的開發(fā)者
如果這個(gè)appid和secret可以使用,就能獲取到seesion_key。借用官方的登陸流程。
所以需要code和appid還有secret,code如何獲取,只需要使用帶有登陸功能的點(diǎn),需要觸發(fā)了wx.login()功能,點(diǎn)擊登陸抓包即可。
一般打開小程序的時(shí)候就有流量交互了。比如,但這個(gè)code只能使用一次
構(gòu)造一個(gè)請求,查看小程序官方文檔: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
curl https://api.weixin.qq.com/sns/jscode2session?appid=wxxxxx&secret=568wdxxx&js_code=041xxxx&grant_type=authorization_code
為了方便,此處使用云函數(shù)功能測試,需要小程序開啟云函數(shù)。使用python的第三方包 python-weixin
。但云函數(shù)功能不一定都開放,需要小程序開放才能查詢。
from os import environ, path
from weixin import WxAppCloudAPI
?
appid = environ.get("WXAPP_APPID", "wx88xxxxx")
secret = environ.get("WXAPP_SECRET", "56xxxxx")
env = "test-id"
?
example_db = path.abspath(path.join(path.dirname(__file__), "./example_db"))
app_cloud = WxAppCloudAPI(
appid=appid, app_secret=secret, grant_type="client_credential"
)
token = app_cloud.client_credential_for_access_token().get("access_token")
print(token)
?
cloud_api = WxAppCloudAPI(access_token=token)
# 獲取庫的集合信息
db_info = cloud_api.db_collection_info(json_body={"env": env, "limit": 10})
print(db_info)
根據(jù)包的wiki來利用云函數(shù)操作小程序,文檔: https://github.com/gusibi/python-weixin/wiki/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BA%91%E5%BC%80%E5%8F%91
利用accesstoken
獲取session_key是用戶數(shù)據(jù)的加密密鑰,那accesstoken就是操作小程序的調(diào)用憑證。
先獲取accesstoken,也可以利用上面提到的代碼來獲取accesstoken。
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
獲取到token后可以利用官方的接口操作小程序來查詢等操作,比如查詢最近一天的訪問
https://api.weixin.qq.com/datacube/getweanalysisappidvisitpage?access_token=ACCESS_TOKEN
data = https://www.wxapp-union.com/{"begin_date" : "20170313","end_date" : "20170313"}
其他查詢接口查看: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)首頁
- 微信分銷系統(tǒng)
- 云南網(wǎng)站建設(shè)招商
- web前端
- 汽車報(bào)廢回收管理軟件
- 云南網(wǎng)站建設(shè)百度
- 支付寶小程序被騙
- 電商網(wǎng)站建設(shè)
- 汽車回收系統(tǒng)
- 網(wǎng)站建設(shè)招商
- Web開發(fā)框架
- 國內(nèi)知名網(wǎng)站建設(shè)公司排名
- 云南微信小程序開發(fā)
- 云南軟件開發(fā)
- 昆明網(wǎng)絡(luò)公司
- 網(wǎng)站建設(shè)公司地址
- 楚雄網(wǎng)站建設(shè)公司
- 云南網(wǎng)站建設(shè)費(fèi)用
- 云南網(wǎng)站建設(shè)服務(wù)
- 網(wǎng)站上首頁
- 網(wǎng)站開發(fā)公司哪家好
- 云南網(wǎng)絡(luò)營銷顧問
- 商標(biāo)注冊
- 云南小程序開發(fā)報(bào)價(jià)
- 專業(yè)網(wǎng)站建設(shè)公司
- flex
- 關(guān)鍵詞快速排名
- 麗江小程序開發(fā)
- 云南做網(wǎng)站
- 全國前十名小程序開發(fā)公司