赞
踩
本文只是我简要的分析过程,以及一些重要点的记录,不涉及核心算法
aHR0cHM6Ly9idXlpbi5qaW5yaXRlbWFpLmNvbS9kYXNoYm9hcmQvbWVyY2gtcGlja2luZy1saWJyYXJ5
base64解密即可,需要登录
直接从启动器追踪
或者根据url参数定位
最后定位到 bdms.js文件
经过分析是jsvmp,在这里采用的是算法还原方式
由于这个网站的jsvmp并没有进行混淆,还比较容易分析 ,直接插桩看日志
我个人喜欢逆向倒推的方式还原jsvmp,由于本文章只是传参算法还原,所以采用正向的方式阐述。
好了接着分析 单步走到这里
发现t包含了传入的参数 url、data、ua
继续单步,会发现 t 的值会通过循环赋值给 v数组
继续单步,会发现最后回传给 d 数组
经过不断地单步,
我们发现所有的循环都是根据 m 值的变化不断往下进行的
而m的值var m = i[r++] 又来源于r
插桩的核心就是 m、r、v、l、d以及含有运算符号的地方;
例如:`索引 m: ${m}, r: ${r}, d: ${JSON.stringify(d, function(key, value) {if (value == window) {return undefined} return value})}, p: ${p}, b: ${b}, l: ${JSON.stringify(l)}, u: ${u}`
下好日志断点后,点击下一页或者刷新网页,控制台就开始打印日志了;
url加密
u的值 是参数 url 加盐 "cus";b的值是生成的32位数组
再次调用算法接口,传入第一个的结果得到:url_arr = [112,112,113,170,197,14,27,111,45,67,230,40,20,108,6,160,152,70,66,108,26,194,207,4,95,98,41,175,97,168,219,108]
对数组取url_arr[21]:194;
对数组取 url_arr[22]:207
data加密
u的值 是参数 data 加盐 "cus" ;b的值是生成的32位数组
再次调用算法接口,传入第一个的结果得到: data_arr=[41,190,64,208,115,181,234,106,221,105,7,194,46,21,231,109,248,147,14,201,208,197,235,220,115,127,27,26,167,63,239,33]
对数组取data_arr[21]:197;
对数组取 data_arr[22]:235;
ua加密
u的值是参数 ua;b的值是生成乱码字符串
再次重复u的值是参数乱码字符串;b的值是生成的大字符串: "HQsOOFeJzEnhASt5IQVmr/ZHKil9i5XWmwfB0XKws4pCcZA+WRB0FgDDBIuMSLILCQe2jcCobh/GvpPR37VOqEhEEoaVWCtMYEhlPwYzC9AwzKv2OFLuq++eJSO75iobpkMUtbwduu+HOwiD7ACK"
再次的值是大字符串;b的值是生成的32位数组ua_arr=[115,56,238,221,227,198,209,145,57,87,27,230,96,199,234,186,187,51,170,227,146,125,171,196,146,48,228,20,6,92,144,146]
对数组取ua_arr[23]:196;
对数组取ua_arr[24]:146;
具体的加密算法需要根据m和r的值打条件断点,单步调试,会发现是有好几套jsvmp,要想全部还原,每一套jsvmp都要插装调试一下。
再经过 aid, pageId, timestamp(十三位时间戳), "976|906|1897|1002|1954|-61|822|822|1920|1040|1920|1080|959|889|24|24|Win32"等参数进行运算,这里就不在详细介绍了,举个例子
例如:
timestamp=1710989507568
(timestamp >> 24) & 255
(timestamp >> 16) & 255
(timestamp >> 8) & 255
timestamp & 255
[44,94,0,0,0,0,10,101,58,0,196,237,0,0,0,3,0,71,63,51,146,148,0,0,0,0,217,0,0,8,94,237,0,148,192,3,398,1,398,1,70,0,0,0,57,51,49,124,56,50,52,124,49,56,53,51,124,49,48,48,50,124,49,57,55,48,124,45,54,52,124,48,124,48,124,49,57,50,48,124,49,48,52,48,124,49,57,50,48,124,49,48,56,48,124,57,51,49,124,56,50,52,124,50,52,124,50,52,124,87,105,110,51,50,51]
以上只是对加密参数进行了一个简单的分析,最终结果已经实现了,感兴趣的可以评论一下
展示一下最终结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。