/*
这里只提取了部分日志截图。
分析日志没什么好的思路,懂密码学的大佬可能看几个特征就能知道使用的是什么算法,直接扣源码过来验证是不是标准的就万事大吉了。
我是小白,没这种底子,就只能多琢磨,多复盘。
这里不贴算法代码了,就简单说下我的分析思路吧。
先按照网站的日志来罗列,知道的值就直接写上,不知道的值就自己起个名。
第一行代码的3&0=0, 3和0 我们都不知是怎么来的,就先写上不管。
比如 1864530746 这个明显是我们上面代码得到的值,所以直接哪来用。
已知:577008418 1864530746
3 & 0 = 0
a1 = 1864530746 << 4 //结果 -232279136, 4不知道怎么来的先写上不管
a2 = 1864530746 >>> 5 //结果 58266585, 5不知道怎么来的先写上不管
a3 = a1 ^ a2 //结果 -245456775
a4 = a3 + 1864530746 //结果 1619073971
3 & 0 = 0 // 这里又出现了,先不管
a5 = 0 + 1449485153 //结果 1449485153,未知的值,先写上不管
a6 = a4 ^ a5 //结果 920942802
a7 = 577008418 + a6 //结果 1497951220
a8 = 0 + 2654435769 //结果 2654435769,未知的值,先写上不管
a9 = a8(2654435769) >>> 11 //结果 1296111, 11不知道怎么来的先写上不管
a10 = a9 & 3 //结果 3
a9 = a8(2654435769) >>> 11 //结果 1296111, 11不知道怎么来的先写上不管
a10 = a9 & 3 //结果 3
这俩个是重复日志,先写上不管
---------------------------------------------------------------------------
a11 = a7 << 4 //结果 -1802584256
a12 = a7 >>> 5 //结果 46810975 到这儿,应该发现了,历史就是轮回,代码也是! 不管接着往下看,因为目前没发现什么规律。
a13 = a11 ^ a12 //结果 -1773864929
a14 = a13 + a7 //结果 -275913709
a9 = 2654435769 >>> 11 //结果 1296111
a10 = a9 & 3 //结果 3
提示:这里还是重复代码,它的值似乎也没用到!
a15 = 1785287219 + 263183 //结果 1785550402 这里的值都没出现过,先不管
a16 = a8(2654435769) + a15 //结果 4439986171
a17 = a14 ^ a16 //结果 -416732184
a18 = 1864530746 + a17 //结果 1447798562
a19 = 3 & 2654435769 //结果 1
----------------------------------------------------------------------------
b1 = a18 << 4 //结果 1689940512
b2 = a18 >>> 5 //结果 45243705 再次写到这应该可以确定了,这就是个循环的开始,上面相加就是循环的结束
b3 = b1 ^ b2 //结果 1711812377
b4 = b3 + a18 //结果 3159610939
a19 = 3 & 2654435769 //结果 1 重复
b5 = 1144859420 + 1908012 //结果 1146767432
b6 = a8(2654435769) + b5 //结果 3801203201
b7 = 3159610939 ^ b6 //结果 1589777466
b8 = a7 + b7 //结果 3087728686
b9 = 2654435769 + 2654435769 //结果 5308871538
b10 = 5308871538 >>> 11 //结果 495070
b11 = b10 & 3 //结果 2
b10 = 5308871538 >>> 11 //结果 495070
b11 = b10 & 3 //结果 2
------------------------------------------------------------------------------
c1 = b8 << 4 //结果 -2135948576
c2 = b8 >>> 5 //结果 96491521
往下接着就都是这样类似的循环,可以多观察这其中的规律。
我这里是写了三次循环,第三次的循环中还用到了第一次的值,比如b8 = a7 +b7。
那为什么还会出现a7呢?
大佬们可以多参考这种方式,写4~6次循环,应该可以发现其中的规律,我就不写了,太累了!!!
比如有些固定值:
<< 4
>>> 5
2654435769 这个值也是固定值,会出现该值的累加
还有几个值在循环种也是固定出现的,比如某些0+什么什么值
噢,还有最后一点,怎么判断他是循环了多少次呢?
密码学的大佬,可以根据特征判断是什么算法,然后直接锁定循环次数。
小白可以将这个运算部分的日志复制下来,粘贴到微软大战代码中,直接搜索<<4 或者>>> 5,应该就可以猜到循环了多少次。
懒蛋可以直接把日志贴给AI,让AI帮你分析这里面有没有强特征,能不能猜到是什么算法,然后直接搜,或者让AI帮你判断循环了多少次,我是懒蛋!
*/