利用Fiddler調(diào)試微信網(wǎng)頁js
內(nèi)容來自52破解,原文地址
前言
最近在調(diào)試一個前后端分離的網(wǎng)站,接口被加密了,原先都是未加密的。就是這個結(jié)果json中的message。一堆亂碼??隙ㄊ切枰饷躩s的。
瀏覽器打開需要微信授權(quán)登錄的網(wǎng)頁
第一步就是卡住了。這個網(wǎng)頁是需要在微信里面才能打開。怎么才能在chrome瀏覽器中打開呢。收集了一些資料。發(fā)帖的時候忘了資料來源了,這里說說我自己做的詳細(xì)的步驟吧,很簡單的。
這里測試一下某個鏈接,隨便百度的:
http://www.weijuju.com/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430
直接用PC瀏覽器打開會被攔截識別
點(diǎn)擊同意,然后查看fiddler,如圖所示操作。(把第一個open.weixin開頭的網(wǎng)頁直接在PC瀏覽器打開貌似也可以。)這種方法可能導(dǎo)致某些功能無法使用或者瀏覽器控制臺報錯。
接下來在PC默認(rèn)的瀏覽器就可以看到了授權(quán)提示,點(diǎn)擊授權(quán)過后就可以自由的在瀏覽器調(diào)試微信網(wǎng)頁了。
簡單的js調(diào)試
首先我沒有看過系統(tǒng)的教程,只看過一些簡單的文章之類的。只用了一點(diǎn)chrome控制臺調(diào)試打斷點(diǎn)的功能,不是很復(fù)雜。
最開頭的圖片那個接口是訪問一個頁面渲染數(shù)據(jù)的接口。json數(shù)據(jù)中的message的鍵值肯定是需要解密的東西,這就要查看js代碼哪里動了那個message。進(jìn)入目標(biāo)頁面就會加載一個單獨(dú)的js.名為126.js
接下來。找下這個js文件里面哪里動了這個message,接下來看圖操作
這時候斷點(diǎn)打好了,瀏覽器里面返回再進(jìn)入這個頁面,這個js就會在這里中斷。鼠標(biāo)懸浮在斷點(diǎn)的地方會有提示。點(diǎn)擊提示,進(jìn)入斷點(diǎn)調(diào)用的相關(guān)的代碼。
這時候如下圖所示點(diǎn)擊懸浮出來的地方,wybzd這個地方??凑{(diào)用了哪里的代碼怎么處理這個message。
處理message的js代碼到這里就差不多出來了。采用AES加解密,一種對稱加解密,加解密都用一個密碼。
t就是密碼了,this.BVDCVojLpQEGLytM 就是調(diào)用這個函數(shù)傳進(jìn)來的參數(shù)。找到這個變量的值就是最開始找到處理message的地方,應(yīng)該只用到了第一個密鑰。其他密鑰我就不知道哪里用了
密鑰就是:"8NONwyJtHesysWpM"
接下來我們來驗(yàn)證一下這個密鑰是否正確。
隨便百度一個AES在線加解密的網(wǎng)站。把密鑰,密文,解密方式填進(jìn)去計算
ECB模式,pkcs7padding填充,結(jié)果字符集utf-8。最后結(jié)果如圖,解密完成。教程到此結(jié)束。
總結(jié)
微信網(wǎng)頁OAuth 2.0授權(quán)登錄可以看看官方文檔和阮一峰網(wǎng)絡(luò)日志。
http://www.weijuju.com/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430 訪問這個網(wǎng)頁的時候后端有一個處理會檢查請求來源是否在微信瀏覽器里面。如果不是就是提示請?jiān)谖⑿趴蛻舳舜蜷_鏈接。如果在微信客戶瀏覽器就會顯示讓用戶主動授權(quán)。我們用fiddler直接跳過了判斷客戶環(huán)境是否在微信客戶端瀏覽器,直接提示用戶授權(quán)。授權(quán)之后,后端也就被我們欺騙了。就真的以為在客戶端瀏覽器環(huán)境了,接下來就可以暢通無阻了,但是實(shí)際環(huán)境并不是微信客戶端環(huán)境,通過jssdk調(diào)用的功能都可能會收到限制,我并沒有經(jīng)過測試。
js混淆加密這次真的很簡單,處理message只有一個地方。還單獨(dú)加載了一個文件,只有一層的調(diào)用關(guān)系,加密方式也不是很復(fù)雜,但這些東西只有接觸長了會有一些敏感的直覺,哈哈,我現(xiàn)在才剛剛開始,挺有意思的,就總結(jié)一下。