您好,登錄后才能下訂單哦!
這篇文章主要講解了“javascript應用實例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“javascript應用實例分析”吧!
遞歸方式+混淆+簡單扁平化
首先市面上有混淆工具可以達到這個效果,我自己也基于ast寫了一個混淆工具,扯遠了,我們來看下他這個都是數組方式讀取字符串,在源碼搜索的時候
我們發現了他初始化的位置,
因為他是動態解析的這個數組,我們只需要拿到他數組的成員放進去就行了,
其實我看到這里是很疑惑的,這個字符串竟然沒有加密碼,赤裸裸啊。
然后我們把字符串數組手動賦值之后我們拷貝這一段js到我寫的混淆還原工具來看看
沒壓力,瞬間還原,工具自動計算作用域替換的。然后我們粘貼到notepad看看
這么看的話基本上他的所有東西都出來了,萬事俱備,就差調試, 我們把這還原出來的js 替換上去,怎么替換呢,就是把昨天分析的ret = eval (偽代碼把這個直接拷貝上去就行了,這樣也方便調試。刷新之后debugger我們忘了處理,直接跳過算了,然后我們看到了這個
然后本著測試的精神,我又刷新了七八遍,發現一個問題
這個頁面我是和js一起保存的并沒有從服務器拉取最新的然是依舊可以正常使用,因為他有兩處,我們嘗試下這個
這段如果固定了js直接報錯,不固定正常加密,這就頭大了,因為這是一段加密后的字符串我們不管他是什么反正一會都要解密我們先不管。
到了現在我們可以固定的調試他的第一層解密出來的js,因為大家都知道他的url是hook過的,也就是業務和反爬是分開的,所以我們不需要刷新頁面來讓他走到斷點,我們可以這樣
我們在控制臺模擬他的其中一個接口然后回車
已經成功請求了,我們看他提交部分
到這里說明是任意的url,因為他是hook了ajax的api而他又是可以任意url不限制的,我們可以使用xhr斷點
點擊這個加號我們設置好他請求包含指定字符串的url就會斷下來
$.get("/tmrpToken.token")
然后控制臺回車
斷在了真正提交url的地方,我們看到他是this.send
我們看到他的this就是XMLHttpRequest 對象,看到他的url已經完全計算好了
順著堆棧看,我們先看send,點進去我們把斷點下到這里,因為他的變量之類的是根據作用域算的,復雜的話從頭來算比較好,上層變量有可能會重疊
,下好斷點我們在重新提交一次
第二次提交我們可以看到非常干凈,我們按f10單步走
走到這一行我們發現url出現了
非常清楚他在231這個對象,我們往上看
他在這個函數執行完就有了我們進去這個函數下斷點看看
我們f10單步發現他直接最后了,再進去這個函數繼續_$7e
傳入三個參數
繼續單步
又一個_$p5,繼續
還是三個參數一樣,然后有個Function,我們摳出來看下
new一個函數然后傳進去三個參數,還是這三個參數
生成一個參數一調用參數二方法,傳入參數三我們看下這三個參數
我們可以直接這樣
打印出位置我們雙擊進去
斷點進去之后我們看
這個函數沒有什么蹊蹺,繼續走下去
this._$oM = arguments[1] = _$ok(arguments[1])[0];
隱藏的很深啊
我們跟進去這個函數
然后我們單步發現他走到這里就有結果了我們看下它穿的參數
姑且認為參數2有用,我們看下參數2那里出來的
參數2我們看下他的參數
var _$s2 = _$HW(_$59(_$qt("/tmrpToken.token")));
我們看看
_$qt
編碼剩下的不管他是什么 函數,到時候直接扣就行了,我們只分析
到現在我們看到了_$HW,_$59,_$6p這三個是加密用的,至于內部邏輯,先不管,先測試下能不能加密
把他單獨拿出來,然后寫一個加密函數
function url_encry(_$di){ var _$s2 = hm._$HW(hm._$59(encodeURIComponent("/tmrpToken.token"))); return hm._$6p(769, 0, _$s2, _$di);}
感謝各位的閱讀,以上就是“javascript應用實例分析”的內容了,經過本文的學習后,相信大家對javascript應用實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。