如有侵权、联系本人下架
首先明确一下目标,我们要先获取网页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的组成
文章来源:https://www.toymoban.com/news/detail-445162.html
各个辅助函数和核心生成函数慢慢进行还原文章来源地址https://www.toymoban.com/news/detail-445162.html
到了这里,关于【RS专题】eval层混淆和逻辑完整分析 - 扣代码终结篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!