上篇文章写到tx的jsxmp的算法逆向,文章链接在这里。初试jsvmp加密
。但是可能有伙伴觉得不够详细。
这里放一个大佬的文章链接。
https://www.52pojie.cn/thread-1521480-1-1.html
。其实就是一个变形的xtea加密。
大佬的文章已经讲了很清楚了,我这里就不狗尾续貂了。
在逆向算法的时候,我们简单补了一下环境,让jsvmp能再node环境里面跑起来。但是生成结果肯定是不对的。直接拿来用是不行的。
我们上次在jsvmp里面插桩。拿到输出结果。
我们可以找到四个类似的字符串,我们逆向出算法可以知道,就是collect就是由这四个的字符串加密出来的。
我们拿到这个四个字符串和浏览器生成的进行对比。
我们在浏览器进行覆盖js,把我们本地js拿到浏览器里面运行,查看浏览器输出的环境,看看有啥不一样。
这里拿别人大佬分析的参数,我自己再补充几个
data = { "0": 1, "1": "Mozilla/5.0 不给看 Edg/100.0.1185.44", "2": 12, "3": 0, "4": 1, "5": "2560-1440-1392-24-*-*-|-*", "6": "**0.***.***.*46", "7": "GgoAAAANSUhEUgAA 不给看 iPegAAAABJRU5ErkJggg==", "8": [], "9": 1440, "10": 0, "11": 0, "12": "ANGLE 不给看 vs_5_0 ps_5_0, D3D11)", "13": "https://captcha.gtimg.com/1/template/drag_ele.html?rand=1519713624347", "14": ["zh-CN", "en", "en-GB", "en-US"], "15": 1689646445, "16": 396149498, "17": 1689155967, "18": 1689646443, "19": "Google 不给看 ", "20": 1520994948, "21": [300, 230], "22": 2560, "23": "iframe", "24": "", "25": 24, "26": "+08", "27": 0, "28": 2, "29": 0, "30": "https://y.qq.com/portal/close.html", "31": "UTF-8", "32": 1023, "33": "98k", "34": "", "35": "Win32", "36": 0 }
按照索引进行解释
1 userAgent
2 Navigator.hardwareConcurrency
3 dom检测自动化检测,相当残暴,正确为0,否则为其他的数字, 创建节点,设置属性, 追加节点, 删除节点, innertHTML 正则匹配, (createElement, cloneNode,appendChild, insertBefore...)
5-22-25 Screen width, height,availHeight, colorDepth, pixelDepth 拼接而成
6 RTC sdp 正则匹配出来的ip地址 (我这边没有看到这个参数)
7 canvas指纹
8 deviceorientation事件 , 不调用就对了
9 Screen.height
12-19 webgl指纹
13 location.href
14 languages
16 -17 TDC_itoken
20 这个参数应该是每个js不一样的。js字节码里面有
21 window innerHeight, innerWidth;
23 正确创建 iframe节点 contentWindow, contentDocument
28 会检测div的touchstart属性
27-29 dom检测
30 window.TCaptchaReferrer
32 样式检测,正确为1023(可能不同浏览器不一样), 包括(getPropertyValue, matchMedia), 初始化默认全为false(0)
这里还是拿的y小白的笔记的csdn的文章。链接在这里
https://blog.csdn.net/weixin_44437016/article/details/131785557
接下来就是自己慢慢补了,上次我有分享一个qxvm补环境框架,但是里面没有实现动态dom。
要自己实现。但是这个tx的jsvmp对dom补环境比较严格,自己实现动态dom比较麻烦。
我这边魔改的jsodom。里面已经实现了动态dom了,是一个非常完美的补环境框架。然后就是缺啥补啥。最后测试没啥问题。
交流群:835342318