記錄下某ua的逆向過程

很久沒有發過文章了,並不是賬號忘記了,而是自己變懶了,還有就是現在的技術文,寫得再好都沒啥用,都是沒多少人看。還有那些看了我的文章的然後來加我微信的,一看文章什麼的點個好看都沒,直接拒絕,和那些口口聲聲說對自己有多大幫助的也是這樣,所以就懶了,直接在自己小本子上記些簡要記錄就行了,反正也是自己看,不需要多好看。

所以這次發個記錄好了,不說任何代碼這些,看官們隨意。

123ua是從一個coll***.js文件加密的,看過的人應該都知道,自從122更新之後,裏面不止有恐怖的控制流混淆,還有逗號表達式,逗號表達式加了之後,不將這些逗號表達式變形,是很難調試的,基本也調試不了,我這裏將代碼轉成ast,然後轉換代碼格式來還原的,如需瞭解ast的自己百度搜就行了,這裏就不多說了。

我還原了 條件表達式、逗號表達式、字符串相加這三個,其他的由於個人技術有限,還原不了。

還原之後,就可以隨便調試了,裏面也沒有 debugger,所以直接使用 fiddler 的重定向替換原文件,就可以直接在網站上調試了。這個纔是第一步,之後的困難纔是重重的。

由於這個如果還原代碼成非控制流的話,需要很多時間和精力,所以我爲了方便,直接堆dom,這樣子下次更新的也不需要太怕,當然你有時間能力還原當然更好了。

堆dom之前首先需要在每個 catch 裏面加個斷點,因爲有些函數或者屬性獲取不到直接報錯,不斷點的話或許就找不到了 。或者直接刪除try catch也行。

然後也將代碼本地跑,加上動態代理,打印出他們需要的dom屬性,不瞭解動態代理的可以看看海綿大神的這篇文章:js逆向之另類思路扣代碼

等將那些屬性補完了,登錄也能用了,但是登錄的話不知道會不會變成風控號,自測,滑塊的話還需要很多東西,還有些動態代理搞不出來的,需要自己多跟跟代碼路程,或者你用自己的技巧搞搞。

接下來說下檢測的東西吧,window 的屬性的話,看到的大多數是 selenium 的屬性,那個 pyppeteer 的好像檢測少點,如下:

var keys = ['WeixinJSBridge', 'WindVane', '__wxjs_environment', 'AlipayJSBridge', 'shenjian', 'ScriptEngineMinorVersion', 'ScriptEngineMajorVersion', 'ScriptEngineBuildVersion', 'ActiveXObject', '__$cdc7c2f8ab481c8964b__', 'UCCoreJava', 'ucapi', 'ApplePayError', 'ApplePaySession', '__acjs_awsc_123', '__acjs', '_uab_module', 'mozPaintCount', 'mozInnerScreenX', 'Debug', 'WebKitPlaybackTargetAvailabilityEvent', 'attachEvent']


裏面也檢測了整個大函數的 toString,不一樣走的路徑完全不一樣。

還有就是裏面很多 hasOwnProperty 和 getOwnPropertyDescriptors,不清楚的自己谷歌下,第二個難改點,第一個比較容易,主要是找那些屬性在判斷這兩個東西,可以試試 hook。

剩下的就是軌跡了,軌跡也有個需要注意的點,裏面只記錄每個軌跡之間的時間差大於2毫秒纔會記錄,所以需要停一下,要不然沒用。

我現在搞的軌跡是固定的,都可以過,如果不是頻繁的話,軌跡一直都有效,因爲都是一直滑到底。

至此 ,ua就完畢了,如果你這個時候開心的話,那麼,恭喜你,還有個幾萬行的文件需要看,也是和上面的差不多。

um這個文件,生成的是106data,但是這個文件檢測的東西不多,基本都是設備指紋,就是與canvas相關的,還有那些什麼可支持插件之類的,不怎麼檢測dom屬性。

這個文件有很多定時函數,目的就是更新一些storage好像,還有就是這個umiToken,滑塊需要這個。

至此,ua和um,搞定了就可以過了,整了六天,電腦都快頂不住了。


如果文章對你有點用,還是希望能點個好看之類的,感謝!或許還會繼續記錄下某數的過程。

如有權益問題請發郵件給我:[email protected],立即刪除。

2020.05.09

END

往期文章回顧

某數分析第二彈

某數算法分析

在看越多,更新越快

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章