js破解之七麥#############妄為寫代碼


本來今天我就在想,要不要把我最近研究的三個js分享出來,還沒做決定的情況下,好巧不巧,一個小伙伴私信我,所以就有了這篇文章。

目標網站:https://www.qimai.cn/rank

瀏覽器鍵入地址,分析發現我們想要的數據來源於

 

 

查看request,發現關鍵參數analysis(ps:這里先拋去cookie影響不談,即使存在cookie驗證的情況,也應該先把url構造完成)國際慣例,全局搜索analysis,發現無果,此時就應該考慮xhr斷點方式進行調試

添加xhr斷點,刷新網頁,開始debugger,格式化js,分析調用棧

一般情況下,根據xhr打的斷點都會涉及到XMLHTTPRequest操作,都要向上查找兩到三個調用棧。當然,這里我們還是要觀察url地址的變化

發現目標調用棧,打上斷點准備調試,同時為后續幾個調用棧的入口,同時打上斷點,刷新網頁

斷在了get函數,此時可以發現不管是url:a,還是params:n,都沒有目標參數,繼續執行到下一個斷點

 

 

t為函數,e為r對象,繼續跟進t函數

此時看到這里,應該首先對interceptors單詞敏感,以mitmproxy和logging模塊的添加句柄方式類比進行理解,此處要找的是攔截器的實現邏輯,首先鼠標覆於this.interceptors.request上

點開兩個句柄,找到句柄的functionlocation,點擊進去

里面就是攔截器的具體實現了,打上斷點,刷新網頁,繼續調試

單步執行到最后,發現r就是我們所需要的analysis值,鼠標依次覆於r的實現上,翻譯下來就是r=window["Object"](f[Ja])(window["Object"](f[Me])(m, b)),也就是r=f[Ja](f[Me](m, b))

先看m的實現,變化的參數也就這個e

接着看e的實現,這個地方比較簡單,取了一下cookie:synct和syncd的值,然后和時間做了點操作,我就不細說了(實踐發現e的值不加修改,也能獲取數據)

 

 

 

 

 

 

 

 此時e的值就拿到了,而b的值為固定值"00000008d78d46a",接下來就要開始分析那兩個函數了,根據執行關系,首先分析f[Me]函數,在函數實現內部打上斷點

 

 

把這個C函數的實現,拷貝到我們的node代碼

 

 

並根據調試情況加以修改

在調試中找到m函數的實現

 

 

i也是個函數,只不過是個固定值,咱們就簡寫了

至此,f[Me]函數分析完畢。開始分析f[Ja]函數,老規矩,進去函數實現內部,打上斷點分析

 

m函數還是上面同一個m函數,就不提了,接下來找這個N()的實現

三目運算符,自己判斷執行邏輯

接下來先看這個e.from

去看s函數的實現

同樣,三目運算符,自己判斷執行哪個邏輯

這里執行f函數,找到f函數

g函數自己去看,返回的是根據參數n,返回e的length

o函數自己去看,根據r的值返回固定長度的Unit8Array

接下來,往變量t里面寫數據,看這個t.write函數的實現

找到k函數的實現

發現返回的是C函數的結果

此時注意C函數,可不是最開始的C函數

看下W函數的定義,比較簡單

再看下K函數的定義,也簡單

復制到node代碼中

至此t.write函數處理完畢,再回到調試環境

 

 

至此e.from函數分析完畢,開始進行n.toString("base64")

找到n.toString的實現

還是三目運算符,手動判斷

找到這個y函數的實現

找到M函數的實現

找到Q.fromByteArray函數的實現

復制代碼到node中

 

 

再看下這個l是什么

 

 

 

 

 

 

現在應該差不多了,我們執行下看看

 

 

回調試環境看看,少了這個a函數

復制到node上

此時發現a函數需要用到l變量,把l提取出來

再次執行下試試

analysis變量已成功打印,粘貼到瀏覽器實驗一下

 

 

成功得到數據,所以這里也就不考慮cookie驗證的情況了。至此,此次七麥js破解分析完畢,我一開始之所以不想寫的原因就是,過程函數調用層次過深,雖說不難,但是敘述起來較為麻煩。嗯,第一次有小伙伴私信我,所以就寫一下吧,就這樣。

最后,之所以研究七麥這個網站也是看了冷月的博客文章,隨后又看了Lateautumn_Lin的簡書文章,感謝他們,以及Lateautumn_Lin本人對我的私下解惑,謝謝。

附:

    冷月博客:https://lengyue.me/index.php/2018/10/15/qimai/

    Lateautumn_Lin簡書:https://www.jianshu.com/p/24fada16fc3c

再次感謝他們的技術分享。

(完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM