JavaScript逆向調(diào)試技巧總結(jié)分享
前言
前段時(shí)間嘗試對(duì)某音的 PC 端進(jìn)行了逆向,目前已經(jīng)全部逆向出來(lái)了,在這里總結(jié)下一些調(diào)試技巧和總結(jié)。
本文不會(huì)涉及任何的詳細(xì)代碼,僅僅是作為技術(shù)來(lái)討論。
一、加密分析
在這里以賬戶下的視頻列表為例,可以看到,在 dy 中,加密的 JS 是 webmssdk.js
,其中最主要的加密參數(shù)有以下兩個(gè)
在 Postman 中進(jìn)行測(cè)試,發(fā)現(xiàn)這兩個(gè)參數(shù)缺一不可,所以逆向過(guò)程就是對(duì)這兩個(gè)參數(shù)進(jìn)行分析。
_signature 是由兩部分組成,一部分是由 X-Bogus 生成,記為 a。一部分則是根據(jù)后端的一個(gè)接口動(dòng)態(tài)下發(fā)數(shù)據(jù),進(jìn)行加密拼接在 a 后面,然后再根據(jù)(a + b) 一起生成一個(gè) c,再截取拼接在(a + b)之后。
所以 _signature = a + b + 截取后的 c
整體上逆向難度比較大,如果感興趣的可以嘗試去分析下,本文就不詳細(xì)說(shuō)了。
二、調(diào)試技巧
1、日志分析
在 chrome 中,如果有一段代碼比較難以分析,可以通過(guò)插樁分析,具體就是打「日志」
一般情況下,通過(guò)日志的分析,可以看到代碼的運(yùn)行情況,然后再根據(jù)代碼的運(yùn)行日志,找出可疑點(diǎn),進(jìn)行「條件斷點(diǎn)」,一步一步調(diào)試基本上就可以找出其中的算法。
其中可以通過(guò) v_jstoools 進(jìn)行「僅變量壓縮」,然后得到一份比較容易看的源代碼。
2、常見算法
2.1)MD5
其中如果遇到一些 32 位長(zhǎng)度的字符串,那么很可能是 MD5 加密算法得到的,因此對(duì)這一類的數(shù)據(jù)必須要重視起來(lái),其中可以多嘗試,還有一種可能會(huì)「加鹽」處理,所以遇到 32 或者 16 位字符串,可以多次驗(yàn)證。
2.2)Base64
如果一個(gè)數(shù)據(jù)是由 Base64 編碼得到的,那么在代碼中一定會(huì)出現(xiàn)的一個(gè)字符串是 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",如果出現(xiàn)了這個(gè)字符串,就很可能是 Base64 編碼處理了
2.3)進(jìn)制處理
常見的進(jìn)制處理是 16 轉(zhuǎn) 10 進(jìn)制,或者是 10 轉(zhuǎn) 16 進(jìn)制,對(duì)這一部分?jǐn)?shù)據(jù)一定要敏感。如果發(fā)現(xiàn)有一些可疑的數(shù)據(jù)轉(zhuǎn)換,可以嘗試看看是不是做了進(jìn)制處理
三、Chrome 調(diào)試技巧
善用堆棧分析,有很多的邏輯處理,都是可以通過(guò)堆棧進(jìn)行逆推出來(lái)的,如果遇到不知道的邏輯,嘗試看下堆棧會(huì)有一定的幫助。
XHR 的提取斷點(diǎn)也可以多嘗試下,可以直接定位到參數(shù)生成的地方,非常的方便
總結(jié)
到此這篇關(guān)于JavaScript逆向調(diào)試技巧的文章就介紹到這了,更多相關(guān)JS逆向調(diào)試技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序錄音實(shí)現(xiàn)功能并上傳(使用node解析接收)
在我們的日常開發(fā)中經(jīng)常會(huì)遇到錄音功能,并上傳到服務(wù)器,今天小編給大家分享微信小程序錄音功能實(shí)現(xiàn)并上傳錄音文件,使用node解析接收,需要的朋友可以參考下2020-02-02js replace替換字符串同時(shí)替換多個(gè)方法
這篇文章主要介紹了js replace替換字符串同時(shí)替換多個(gè)方法 的相關(guān)資料,需要的朋友可以參考下2018-11-11JS幻燈片可循環(huán)播放可平滑旋轉(zhuǎn)帶滾動(dòng)導(dǎo)航(自寫)
本文為大家介紹下實(shí)現(xiàn)JS幻燈片可循環(huán)播放帶滾動(dòng)導(dǎo)航可平滑旋轉(zhuǎn)的全過(guò)程,效果還不錯(cuò),由需要的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08JavaScript判斷是否為數(shù)字的幾種方式匯總(推薦!)
有時(shí)候需要根據(jù)輸入的內(nèi)容來(lái)進(jìn)行計(jì)算,這個(gè)時(shí)候就需要判斷輸入的內(nèi)容是否是數(shù)字,下面這篇文章主要給大家介紹了關(guān)于JavaScript判斷是否為數(shù)字的幾種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06JS連接SQL數(shù)據(jù)庫(kù)與ACCESS數(shù)據(jù)庫(kù)的方法實(shí)例
這篇文章主要介紹了JS連接SQL數(shù)據(jù)庫(kù)與ACCESS數(shù)據(jù)庫(kù)的方法實(shí)例,有需要的朋友可以參考一下2013-11-11js以分隔符分隔數(shù)組中的元素并轉(zhuǎn)換為字符串的方法
下面小編就為大家?guī)?lái)一篇js以分隔符分隔數(shù)組中的元素并轉(zhuǎn)換為字符串的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11JS回調(diào)函數(shù) callback的理解與使用案例分析
這篇文章主要介紹了JS回調(diào)函數(shù) callback的理解與使用,結(jié)合具體案例形式分析了javascript回調(diào)函數(shù)的功能、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09JavaScript 動(dòng)態(tài)三角函數(shù)實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家實(shí)例講解了javascript動(dòng)態(tài)三角函數(shù)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01