海綿 平常學python python
今天咱們來分析一下某數的js 不少網站都用的,據說是有好幾個版本,我也不知道,隨便找一個,由於咱們以前分析過,那是直接懟混淆,你們也許有點懵,此次咱們來細細分析,這次乾貨多,你們慢慢品。算法
首先打開頁面:app
這個我以前說過一次,如今再說另幾個方法繞過,
第一個是條件斷點,也就是說知足條件會斷下,不知足就跳過,
第二個是不斷下,也就是說這一行設置好就不會斷下來,
這兩個操做前提是js不會變化,由於谷歌的v8引擎對js有優化若是是同一段js他會當成一個來執行,因此循環生成dom
(function() { var a = new Date(); debugger ;return new Date() - a > 100; }())
那真是一點用沒有,都會優化走第一個生成的,除非你每次生成不同的咱們從引擎角度來分析你們就豁然開朗。ide
如今咱們兩處都禁止了,而後反過來看主頁,咱們從頭開始看
咱們看到他會加載一段js而後在執行下面這一段,咱們看到上面還有一個<meta content=這個標籤咱們再到他渲染以後的dom看看
奇怪的是他渲染後就消失了,咱們先看他加載了什麼優化
這個js給win設置了一個對象裏面設置了字符串。
由於咱們以前被debugger攔住了,因此咱們看一下他的文件網站
debugger文件都是動態代碼,動態意味它使用了eval和Function 兩種方式,這個大家本身去搜索,首先呢debug
咱們分析到如今,發現了兩處有着大量字符串的地方,這兩處極有多是兩段解密後eval執行,根據咱們的推測那下面這一段就是解密執行代碼了,大致看一下。3d
那是很是眼熟啊,就是開始加載設置的那一段js字符串,咱們搜索一下看他幹了什麼,代理
搜了一下發現好幾處並且咱們看到了execScript和eval
咱們猜想他這個_$AI["6ca01ba"];拿到而後解密而後eval,咱們發現這一大段都是在拼接代碼
到這裏咱們能夠簡單推測一下,他是拿到_$AI["6ca01ba"]而後解密而後和他的代碼拼接返回一個js代碼段,而後運行再讀取content再解密運行,咱們推測他的大致流程就是這樣,
當咱們看到這個那他基本上就是用的eval來運行的第一層代碼,這裏他判斷了functioneval(){[nativecode]} 這是判斷有沒有被劫持,咱們接下來搜eval看看他那裏運行的
$cm 這個賦值了,當咱們搜$cm(的時候並無任何東西,通常js調用除了_$cm()還有call和apply
咱們發現了一個調用,由於刷新頁面就要變,因此咱們保存一下網頁,而後代理加載調試,
咱們分析的沒錯,他eval執行這一段而後再讀取處理content再解密執行。
既然他這裏是eval咱們是否是能夠把他解密的數據放進去方便調試呢,咱們試試能夠正常加載,因爲篇幅緣由咱們下一次接着講