调试网站: aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2VfZGV0YWlsLmh0bWw/cHJvamVjdF9pZD1iODdjYjNkMDRmODc4Y2E2
瑞数的整体代码(4代为例) 1、直接请求得到的js 有index.html界面上的 script 2、meta content(计算eval的js) 3、scripts[0] 中的 **.dfe1675.js 是 iso-8859-1
编码的 4、scripts[1] 是通过自执行得到js 字符串,通过eval进行执行得到cookie的过程 5.1 整体的代码结构是 初始的大数组 5.2 定义一些函数,这些函数将会被eval内部的js进行调用 5.3 控制流代码,进行判断环境检测,并得到eval的字符串 偷偷告诉eval js代码在 ret=**.call(**, **)得到
5、scripts[3] 在eval的js有调用
如下图,进行单步调试
图片.1
由扣出的代码可见,主要执行步骤在最下边的while 控制流,以及最后一个函数内部的多个控制流:
图片.png
1、缺window,补个 window=global;
图片.png
2、缺document,补个document={}
图片.png
3、需要document.scripts,定位到浏览器代码,查看长度需要是3,补个document.scripts = [1, 2, 3]
(暂时)
图片.png
4、再运行代码,就大功告成了?不! 并没有,我们在界面上断住这行代码,发现直到最后都断不住到这里,所以感觉还是缺点是什么。 我是通过在控制流断点和webstorm断点单步调试找到的区别,是因为少了一个文件
图片.png
把这里 代码拿出来 补进去,成功运行 打印 window.$_ts,202界面加载的 主要函数就出来了
图片.png
**打印出来,就是瑞数的调试逻辑代码(具体操作js基本知识)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。