记录下某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

往期文章回顾

某数分析第二弹

某数算法分析

在看越多,更新越快

原创文章 34 获赞 35 访问量 8万+

猜你喜欢

转载自blog.csdn.net/sergiojune/article/details/106030317
今日推荐