ua的逆向过程是什么
本篇文章给大家分享的是有关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,搞定了就可以过了,整了六天,电脑都快顶不住了。
以上就是ua的逆向过程是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
网页标题:ua的逆向过程是什么
文章起源:http://azwzsj.com/article/geshdp.html