JS破解–反反調試

  • 2019 年 12 月 4 日
  • 筆記

今天應小夥伴們意願寫一下過無限 debugger 的兩個案例(其實都很簡單,只要掌握一兩個操作點的話)

因為咱粉絲比較少,就直接進行網站點名了,手動狗頭

有些案例弄過的小夥伴,可能需要清除一下對應域名下的 cookie 後,才能觸發無限 debugger

案例一:

葯監局:http://app1.sfda.gov.cn/datasearch/face3/base.jsp?tableId=120&tableName=TABLE120&title=%CA%B3%C6%B7%C9%FA%B2%FA%D0%ED%BF%C9%BB%F1%D6%A4%C6%F3%D2%B5(SC)&bcId=145275419693611287728573704379

在 chrome 鍵入地址後,打開 F12,就迎來了我們今天的主題:

美化一下代碼發現就是一個debugger,此時在 console 控制台,重寫該函數

重寫之後,點擊 X 關閉 F12 窗口(切記不要刷新頁面,因為刷新的話相當於重新加載一遍,剛才的重寫函數也就沒了意義)

關閉之後再重新打開 F12,又開始了 debugger

一個算時間差值的無限 debugger,根據調用棧看一下

根據代碼,發現是 eval 執行的字符串,此時重寫 _$jQ 函數

重寫後的函數沒有具體意義,所以 eval 也就沒東西可執行了,此時關閉 f12,再重新打開,發現就不會再有 debugger 了。

PS:不管是加載別的頁面也好,還是刷新也罷,只要瀏覽器重新加載了存在 debugger 語句的js,就會開始 debug,所以要先擦除debugger,再去下斷點分析你想要的內容

案例二:

努比亞論壇:https://bbs.nubia.cn/

因為這是一個 js 生成 cookie 的案例,所以觸發 debugger 的機制不太一樣。

首先清除該網站下的 cookie(ps:有些案例可能還需要清storage),鍵入地址,打開 f12,此時再在瀏覽器地址欄回車,也就出現了 debugger

多查看幾層調用棧,發現關鍵點

一個直接調用,一個 setInterval,老規矩重寫 _0x4db1c 函數

因為這個案例比較簡單,我就多說兩句,因為這個案例的特殊性

所以你關閉 F12後,cookie 就被生成了,然後頁面數據就有了,還是分析不了cookie 的生成規則,所以在函數執行前打上斷點!

不關閉 f12,刷新頁面,斷在了我們的斷點位置

此時在控制台重寫目標函數 _0x4db1c,但是重寫之後,繼續執行的話,還是看不到cookie 生成規則

所以重寫之後,不要輕舉妄動,在關鍵位置打上斷點(ps:這個案例是一個經典的js生成 cookie 案例,也就是 arg1 生成 arg2 的過程,斷點我就直接打了)

就是這一部分,打好斷點後,此時點擊按鈕繼續執行

斷在了我們的預期位置,接下來就開始愉快的分析吧。