【RS专题】eval层混淆和逻辑完整分析 - 扣代码终结篇

本文深入探讨了RS风控系统中的eval层混淆和逻辑分析,通过实例解析了如何逐步还原JavaScript代码,包括控制流混淆的处理、字符串混淆的解密,以及base64编码表的应用。文章中还提及了如何找到并执行函数入口,以及后续将分析的cookie生成函数。
摘要由CSDN通过智能技术生成

如有侵权、联系本人下架

首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为412,第二次为200。如果是200就表示正常
以下为某 yjj RS5请求成功的结果,具体流程请看完文章,源-码–答-案也会在末 尾公 布
在这里插入图片描述

前面是定义了非常多和函数,一直往下拉,直到出现var的地方
在这里插入图片描述
这里就是eval里面最外一层的函数逻辑(好像有点绕),45代对这里的最外层逻辑没有做控制流混淆,所以都是从上至下的执行,这点还是不错的。

继续往后拉一下

在这里插入图片描述

会看到4个【while (1)】的循环,这里就是把部分的代码做了控制流混淆。同时,调试的难点也是在这里。

如果要分析最终算法,那么还原代码会更加方便的进行分析,首先看第一个【while (1)】

在这里插入图片描述
这里是其中一个小块,当_$Iv小于4时,会进入到里面的四条语句,按照逻辑,那么可以重新理解为

_$Iv == 0 执行-> return _$uE;

_$Iv == 1 执行-> _$0N = _$Gw(235, _$qe[50]);

_$Iv == 2 执行-> _$Mo++;

_$Iv == 3 执行-> _$Gw(145, 134217728, 41);

其他也如此类推的话,就可以把这里的if逻辑,修改为switch的逻辑

在这里插入图片描述

经过处理后代码就把很多层的if变为switch,因为每一次请求的代码都不一样,所以不需要关注变量名,只需要知道运行逻辑就可以

这里的控制流实际就是把多和函数的函数体抽取出来,然后一条一条拆散,45代的控制流是没有虚假分支的,也就是说只要知道函数的入口,就可以模拟计算函数的流程,把函数体还原出来,那么函数入口在哪里呢,就是在while 的前一个函数

在这里插入图片描述

这里的768, 780, 776, 258等等,都是函数入口。把这些入口都统统执行一遍(仅抽取函数体)

在这里插入图片描述

替换到原来的同级switch,就可以请求的看到每一个函数入口对应的函数体了。同时,控制流部分的混淆也处理完了。

但是这里还有一个影响分析的地方,就是字符串混淆

在这里插入图片描述

前面的_$nz就是还原出真实的字符串,这个还原的函数无论怎么混淆,都会放在最前面执行。

在这里插入图片描述

当执行完这个函数以后,就可以看到真实的,这里就是eval解密字符串的函数,然后分别回填就可以

在这里插入图片描述

现在还原了以后,调试难度直降50%

在这里插入图片描述

前面的函数是一些环境初始化,和cookie没有太大关系,可以不用管

在这里插入图片描述

接下来会看到一个"qrcklmDoExthWJiHAp1sVYKU3RFMQw8IGfPO92bvLNj.7zXBaSnu0TC6gy_4Ze5d{}|~ !#$%()*+,-;=?@[]^"的字符串,这个就比较重要,这是使用的base64编码表,这个编码表是固定的,并且456代都是用的这个

在这里插入图片描述

接着有一个嵌套的函数,这个就是标准的取首页content的值

在这里插入图片描述

然后就是解码这个content的值,这里会用到前面的$_ts参数

下一篇我们跟随直接分析cookie生成的具体函数,通过反推法来分析cookie的组成

在这里插入图片描述

各个辅助函数和核心生成函数慢慢进行还原

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值