您现在的位置是: 网站首页> 学习笔记> JS逆向 JS逆向

维普期刊 瑞数5代js逆向分析

2022-07-27 [JS逆向] [JS调用] [hook] 7775人已围观

瑞数太出名了,网上有很多大佬出的教程,讲得都很详细,很地道。 这里注意记录一下自己在逆向分析时遇到的些问题与关键点,以备后忘。 瑞数各代之间的区别就不说了,直接上维普线上的这个5代版本。

当然瑞数的逆向分析默认是针对带T的cookie即GW1gelwM5YZuT,与url后面的后缀G5tA5iQ4。

首先是VM代码的入口函数;如图,这个入口函数可以在首页的自执行函数中通过正则匹配出来, 正则:

"_\$..\s?=\s?_\$..\[_\$..\[\d+]]\(_\$..,\s?_\$..\);"

默认这个正则只适用于这个版本,其它的我没试过,四代的都是明文入口。 用正则搜索的时候注意把搜索框右边的".*"点一下用正则搜。

进入VM代码以后比较关键的就是众所周知的128位数组的生成。 这个128位数组不会占满,会根据情况截成实际使用的长度。

其中128位数组中比较关键的就是4位的动态数据了,这个错了cookie GW1gelwM5YZuT必然是错的。 这个4位数组是固定的4个值,只是每次的顺序不一样,即[102, 181, 11,102] 或者[181, 102, 11,102]等等各种组合。

而这个4位动态数组的来源为一个20位的动态数组,20位的动态数组在VM代码初始化的时候会生成,生成的位置可以直接搜";;;;;;"即6个;号。 变量“_$E3”就是20位动态数组,“_$m$(859, _$E3)”函数给变量赋值。

然后四位动态数组的值根据key值在20位数组里面取就可以了。

另外4位动态数组的Key值在哪里取呢,在ts对象里:

对于后缀G5tA5iQ4来说,只要把cookie的代码扣出来就好办了,它是在生成cookie的数组后面再加个50位的数组生成就可以了。 这50位数组包含了url的path部分,如“/Search/SearchList”、“/Journal/RightArticle”等

差不多就这些,其它很多细节应该在其它大佬文章里已经看到了。

另外再贴一个此版本进入cookie生成控制流的入口: 正则搜

 _\$..\(923, _\$.., false\)

这个有点多余,只是提供一种小方法,完全可以hook cookie生成的位置向上回溯堆栈找入口,,但是自己调代码时这样更方便。

剩下的就是时间与肝。

文章评论

暂无评论

添加评论





本栏推荐

站点信息

  • 建站时间:2021-01-01
  • 网站程序:Django 3.1.2
  • 文章统计:49篇
  • 文章评论:25条
  • 统计数据