這篇文章主要講解了“javascript應(yīng)用實例分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“javascript應(yīng)用實例分析”吧!
創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、鐵力網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為鐵力等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
遞歸方式+混淆+簡單扁平化
首先市面上有混淆工具可以達到這個效果,我自己也基于ast寫了一個混淆工具,扯遠了,我們來看下他這個都是數(shù)組方式讀取字符串,在源碼搜索的時候
我們發(fā)現(xiàn)了他初始化的位置,
因為他是動態(tài)解析的這個數(shù)組,我們只需要拿到他數(shù)組的成員放進去就行了,
其實我看到這里是很疑惑的,這個字符串竟然沒有加密碼,赤裸裸啊。
然后我們把字符串?dāng)?shù)組手動賦值之后我們拷貝這一段js到我寫的混淆還原工具來看看
沒壓力,瞬間還原,工具自動計算作用域替換的。然后我們粘貼到notepad看看
這么看的話基本上他的所有東西都出來了,萬事俱備,就差調(diào)試, 我們把這還原出來的js 替換上去,怎么替換呢,就是把昨天分析的ret = eval (偽代碼把這個直接拷貝上去就行了,這樣也方便調(diào)試。刷新之后debugger我們忘了處理,直接跳過算了,然后我們看到了這個
然后本著測試的精神,我又刷新了七八遍,發(fā)現(xiàn)一個問題
這個頁面我是和js一起保存的并沒有從服務(wù)器拉取最新的然是依舊可以正常使用,因為他有兩處,我們嘗試下這個
這段如果固定了js直接報錯,不固定正常加密,這就頭大了,因為這是一段加密后的字符串我們不管他是什么反正一會都要解密我們先不管。
到了現(xiàn)在我們可以固定的調(diào)試他的第一層解密出來的js,因為大家都知道他的url是hook過的,也就是業(yè)務(wù)和反爬是分開的,所以我們不需要刷新頁面來讓他走到斷點,我們可以這樣
我們在控制臺模擬他的其中一個接口然后回車
已經(jīng)成功請求了,我們看他提交部分
到這里說明是任意的url,因為他是hook了ajax的api而他又是可以任意url不限制的,我們可以使用xhr斷點
點擊這個加號我們設(shè)置好他請求包含指定字符串的url就會斷下來
$.get("/tmrpToken.token")
然后控制臺回車
斷在了真正提交url的地方,我們看到他是this.send
我們看到他的this就是XMLHttpRequest 對象,看到他的url已經(jīng)完全計算好了
順著堆棧看,我們先看send,點進去我們把斷點下到這里,因為他的變量之類的是根據(jù)作用域算的,復(fù)雜的話從頭來算比較好,上層變量有可能會重疊
,下好斷點我們在重新提交一次
第二次提交我們可以看到非常干凈,我們按f10單步走
走到這一行我們發(fā)現(xiàn)url出現(xiàn)了
非常清楚他在231這個對象,我們往上看
他在這個函數(shù)執(zhí)行完就有了我們進去這個函數(shù)下斷點看看
我們f10單步發(fā)現(xiàn)他直接最后了,再進去這個函數(shù)繼續(xù)_$7e
傳入三個參數(shù)
繼續(xù)單步
又一個_$p5,繼續(xù)
還是三個參數(shù)一樣,然后有個Function,我們摳出來看下
new一個函數(shù)然后傳進去三個參數(shù),還是這三個參數(shù)
生成一個參數(shù)一調(diào)用參數(shù)二方法,傳入?yún)?shù)三我們看下這三個參數(shù)
我們可以直接這樣
打印出位置我們雙擊進去
斷點進去之后我們看
這個函數(shù)沒有什么蹊蹺,繼續(xù)走下去
this._$oM = arguments[1] = _$ok(arguments[1])[0];
隱藏的很深啊
我們跟進去這個函數(shù)
然后我們單步發(fā)現(xiàn)他走到這里就有結(jié)果了我們看下它穿的參數(shù)
姑且認(rèn)為參數(shù)2有用,我們看下參數(shù)2那里出來的
參數(shù)2我們看下他的參數(shù)
var _$s2 = _$HW(_$59(_$qt("/tmrpToken.token")));
我們看看
_$qt
編碼剩下的不管他是什么 函數(shù),到時候直接扣就行了,我們只分析
到現(xiàn)在我們看到了_$HW,_$59,_$6p這三個是加密用的,至于內(nèi)部邏輯,先不管,先測試下能不能加密
把他單獨拿出來,然后寫一個加密函數(shù)
function url_encry(_$di){ var _$s2 = hm._$HW(hm._$59(encodeURIComponent("/tmrpToken.token"))); return hm._$6p(769, 0, _$s2, _$di);}
感謝各位的閱讀,以上就是“javascript應(yīng)用實例分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對javascript應(yīng)用實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
本文題目:javascript應(yīng)用實例分析
網(wǎng)址分享:http://www.rwnh.cn/article12/jehddc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、、App開發(fā)、軟件開發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)