Java 逆向解密
将 .class 文件直接拖入 jd-gui 中
分析加密的算法:
(1)将输入的值传递给 arr
(2)将 arr 中的每一位的值加上 64,再与 0x20 进行异或
(3)将 KEY 中的值放入 KEYList
(4)比较 KEYList 和 Resultlist 是否一致,一致时候输出 “congratulations”
注意:异或的运算优先级小于减法
因此解密时候,把 KEY 中的值先与 0x20 进行异或,再减去 64,就是 flag
其中 int[] KEY = { 180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 };
脚本如下
KEY = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
flag = ''
for i in KEY:
flag += chr((i ^ 0x20) - 64)
print(flag)