1. 程式人生 > 其它 >淺談js逆向之發展歷史(轉)(有用)

淺談js逆向之發展歷史(轉)(有用)

https://bbs.125.la/thread-14670632-1-1.html

不知不覺玩這個領域已經有點年頭了,一直想推動這個領域發展,奈何靠某個人是很難實現的,所以我創辦了程式設計喵的群,找了一些志同道合的夥伴一起推進js逆向領域的發展,並且開發配套的工具,錄製了一些公開教程,偶爾也會直播公開課。這是淺談js系列 只說一些個人的看法以及介紹一下這個領域的技術。

js攻防也就近幾年發展的比較迅速,像08年-14年的時候 小網站大部分還都是靜態為主,中型網站會摻雜少量的原生加密,大網站也只是在原生加密上做一些變種,混淆的程式碼不是沒有,不過也都是一些變數的混淆。(常規加密演算法md系列 aes系列 3des rsa 等等)
美好的事情總會破滅,後面隨著前端技術的發展 h5的崛起,以及很多開發者對IE相容的煩惱,產生了很多工具用來進行語法轉換,瀏覽器相容,而這些工具大部分都是AST的產物,隨著一些前端安全工程師技術的進步,出現了例如 薩滿sojson 這種 語法級別的混淆,其特徵在於常量的統一封裝加密,語法的混淆,邏輯的混淆。這種型別的混淆後面被統一為ob混淆。
自從有了這種混淆器,各大廠商開始進行了一波技術更新,其中以淘寶這些大站做的最全,也就出現了以邏輯平坦流為邏輯混淆的技術,當然這些東西早在很久就被應用在 彙編程式碼的混淆了。
後來各個廠商發現光混淆好像不能解決實際的問題,因為大家都是用的AST做的混淆器,難免就會出現反混淆器,所以各個廠商又在反除錯技術上下了功夫。
什麼無限debugger, 歷史記錄轟炸,死迴圈,檢測開發工具層出不窮,可把做逆向的頭疼不已。
並且防守方也知道,光在瀏覽器上做反除錯是遠遠不夠的,因為隨著攻擊方的技術提升,可以利用的工具也就變多 如:fd本地替換node除錯離線v8 等等。
防守方意識到也要檢測離線環境,檢測node特徵,檢測無頭瀏覽器特徵,檢測開發者工具協議,檢測瀏覽器環境 bom dom ,當然攻擊方也不傻也可以很好的應對。
最近防守方似乎意識到他們的混淆器混淆的方式強度遠遠不夠,jsvm技術開始興起,那就要說說什麼是jsvm了其實就是把js的程式碼翻譯成二進位制的資料,然後自己實現了一個直譯器用來解釋這個二進位制執行。其實jsvm也不是獨一份,所謂技術的進步就是 借鑑,這可不是我說的 有問題問鵝廠,我本身是一個遊戲開發架構師,看著遊戲從pc到web到移動端,在web端的時候效能問題就產生了,asm.js wasm技術橫空出世, 其提速效果是當時純js的10倍以上,其原理就是把C++程式碼編譯成彙編類似的語法,瀏覽器解釋執行。
說了這麼多 你還覺得js逆向簡單的話- - 那麼確實很簡單,如果你覺得js逆向難的話有的時候也是很無奈的,這裡說的js逆向是說的純本地js引擎能離線執行的技術,別和我說拿一個瀏覽器控制元件或者呼叫起瀏覽器做一些模擬操作或者利用開發者遠端協議進行一些操作的方式,這些方式不是不可以,但是脫離了js逆向的範疇。當然現在大部分公司會從成本和實現成本上考慮這種技術,但是對個人的技術成長沒有幫助。

最後希望有更多的人可以關注這個領域的技術。