內(nèi)容來(lái)自52破解,原文地址
前言
最近在調(diào)試一個(gè)前后端分離的網(wǎng)站,接口被加密了,原先都是未加密的。就是這個(gè)結(jié)果json中的message。一堆亂碼??隙ㄊ切枰饷躩s的。

瀏覽器打開需要微信授權(quán)登錄的網(wǎng)頁(yè)
第一步就是卡住了。這個(gè)網(wǎng)頁(yè)是需要在微信里面才能打開。怎么才能在chrome瀏覽器中打開呢。收集了一些資料。發(fā)帖的時(shí)候忘了資料來(lái)源了,這里說(shuō)說(shuō)我自己做的詳細(xì)的步驟吧,很簡(jiǎn)單的。
這里測(cè)試一下某個(gè)鏈接,隨便百度的:
http://www.weijuju.com/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430
直接用PC瀏覽器打開會(huì)被攔截識(shí)別

點(diǎn)擊同意,然后查看fiddler,如圖所示操作。(把第一個(gè)open.weixin開頭的網(wǎng)頁(yè)直接在PC瀏覽器打開貌似也可以。)這種方法可能導(dǎo)致某些功能無(wú)法使用或者瀏覽器控制臺(tái)報(bào)錯(cuò)。

接下來(lái)在PC默認(rèn)的瀏覽器就可以看到了授權(quán)提示,點(diǎn)擊授權(quán)過(guò)后就可以自由的在瀏覽器調(diào)試微信網(wǎng)頁(yè)了。

簡(jiǎn)單的js調(diào)試
首先我沒(méi)有看過(guò)系統(tǒng)的教程,只看過(guò)一些簡(jiǎn)單的文章之類的。只用了一點(diǎn)chrome控制臺(tái)調(diào)試打斷點(diǎn)的功能,不是很復(fù)雜。
最開頭的圖片那個(gè)接口是訪問(wèn)一個(gè)頁(yè)面渲染數(shù)據(jù)的接口。json數(shù)據(jù)中的message的鍵值肯定是需要解密的東西,這就要查看js代碼哪里動(dòng)了那個(gè)message。進(jìn)入目標(biāo)頁(yè)面就會(huì)加載一個(gè)單獨(dú)的js.名為126.js
接下來(lái)。找下這個(gè)js文件里面哪里動(dòng)了這個(gè)message,接下來(lái)看圖操作

這時(shí)候斷點(diǎn)打好了,瀏覽器里面返回再進(jìn)入這個(gè)頁(yè)面,這個(gè)js就會(huì)在這里中斷。鼠標(biāo)懸浮在斷點(diǎn)的地方會(huì)有提示。點(diǎn)擊提示,進(jìn)入斷點(diǎn)調(diào)用的相關(guān)的代碼。

這時(shí)候如下圖所示點(diǎn)擊懸浮出來(lái)的地方,wybzd這個(gè)地方??凑{(diào)用了哪里的代碼怎么處理這個(gè)message。



處理message的js代碼到這里就差不多出來(lái)了。采用AES加解密,一種對(duì)稱加解密,加解密都用一個(gè)密碼。
t就是密碼了,this.BVDCVojLpQEGLytM 就是調(diào)用這個(gè)函數(shù)傳進(jìn)來(lái)的參數(shù)。找到這個(gè)變量的值就是最開始找到處理message的地方,應(yīng)該只用到了第一個(gè)密鑰。其他密鑰我就不知道哪里用了

密鑰就是:"8NONwyJtHesysWpM"
接下來(lái)我們來(lái)驗(yàn)證一下這個(gè)密鑰是否正確。
隨便百度一個(gè)AES在線加解密的網(wǎng)站。把密鑰,密文,解密方式填進(jìn)去計(jì)算
ECB模式,pkcs7padding填充,結(jié)果字符集utf-8。最后結(jié)果如圖,解密完成。教程到此結(jié)束。

總結(jié)
微信網(wǎng)頁(yè)OAuth 2.0授權(quán)登錄可以看看官方文檔和阮一峰網(wǎng)絡(luò)日志。
http://www.weijuju.com/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430 訪問(wèn)這個(gè)網(wǎng)頁(yè)的時(shí)候后端有一個(gè)處理會(huì)檢查請(qǐng)求來(lái)源是否在微信瀏覽器里面。如果不是就是提示請(qǐng)?jiān)谖⑿趴蛻舳舜蜷_鏈接。如果在微信客戶瀏覽器就會(huì)顯示讓用戶主動(dòng)授權(quán)。我們用fiddler直接跳過(guò)了判斷客戶環(huán)境是否在微信客戶端瀏覽器,直接提示用戶授權(quán)。授權(quán)之后,后端也就被我們欺騙了。就真的以為在客戶端瀏覽器環(huán)境了,接下來(lái)就可以暢通無(wú)阻了,但是實(shí)際環(huán)境并不是微信客戶端環(huán)境,通過(guò)jssdk調(diào)用的功能都可能會(huì)收到限制,我并沒(méi)有經(jīng)過(guò)測(cè)試。
js混淆加密這次真的很簡(jiǎn)單,處理message只有一個(gè)地方。還單獨(dú)加載了一個(gè)文件,只有一層的調(diào)用關(guān)系,加密方式也不是很復(fù)雜,但這些東西只有接觸長(zhǎng)了會(huì)有一些敏感的直覺(jué),哈哈,我現(xiàn)在才剛剛開始,挺有意思的,就總結(jié)一下。