文章目录 前言一、202页面分析二、本地调试1.扣代码2.补环境文章旨在学习和记录,若有侵权,请联系删除
前言
目标网址:aHR0cHMlM0EvL3dlbnNodS5jb3VydC5nb3YuY24v
目标参数:cookie中的 FSSBBIl1UgzbN7N80T
目标特点:js混淆、大数组、环境检测、控制流平坦化
一、202页面分析
瑞数4代主要有两层js
第一层是202页面返回的js
第二层是第一层js中用eval执行的虚拟机里面的代码
(可全局搜索.call定位到eval处)
根据上篇文章《JS逆向 - 某数4代特征》可知,第一次响应返回的页面有三个重点。
我们先打上script断点,然后请求网网址,断住。
格式化后,
第一处meta标签
这里面的内容将会在第二层的js里面用到,主要是用于加密,js取出时也起到检测环境的作用,需要正则匹配出拿进第二层里面。
第二处导入了一个js文件
这个js文件主要用于生成第二层混淆的js代码。
第三处自执行函数
主要有三方面作用,第一是生成了大对象window.$_ts(在第二层js中会频繁用到);第二是定义了一些值,这些值的变量名会变,不要记变量,可以正则匹配这些值的位置(在第二层js中用于关键流程);第三是声明了一些函数,第二层js中也会回来调用。(如果使用补环境方式,第一层的js都可以不用扣,下面会介绍如何补环境来过某数)
由于页面直接给出的就是一个自执行函数,我们直接扣下来,别忘了将meta和js文件里的内容也拿出来。
补上window后我们就可以进行调试了。
使用pycharm不方便调试js,容易卡死,下面我们使用vscode。
全局搜索 .call 并打上断点,debugger,然后点单步追进去。
我们这就成功的进入了第二层js里面。
我们将文章《Proxy代理函数在JS逆向补环境中的妙用》中介绍的 proxy 代码拿过来用。
将 proxy 代码放到抠出来的js头部,运行,会发现输出了很多环境,根据undefined的值来补。
补完第一层,单步进入eval.call里面补第二层。
主要检测的环境有:
window、document、navigator、location、localStorage等等。
注意要把 setTimeout、setInterval 置空。
最后,让我们来进行愉快的补环境调试吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)