国赛Reverse glass
用jeb进行反编译,猜测是要对so文件进行逆1向,分离出so拖进ida。
逻辑看起来比较简单。查看sub_FFC和sub_1088函数
emmm,可以看出是rc4加密。
这题的逻辑是将flag进行rc4加密,再与key进行异或。
key3 = [146, 40, 208, 93, 26, 141, 45, 188, 84, 240, 158, 153, 171, 160, 50, 58, 46, 188, 5,123, 212, 221, 152, 200, 219, 246, 155, 25, 119, 241, 89, 7, 129, 225, 255, 76, 204, 174, 8] for i in range(0, 39, 3): key3[i + 1] ^= key3[i] key3[i + 2] ^= key3[i + 1] key3[i] ^= key3[i + 2] print(key3) c = key3 t = [] key = '12345678' ch = '' j = 0 # 初始化 s = list(range(256)) # 创建有序列表 for i in range(256): j = (j + s[i] + ord(key[i % len(key)])) % 256 s[i], s[j] = s[j], s[i] i = 0 # 初始化 j = 0 # 初始化 for r in c: i = (i + 1) % 256 j = (j + s[i]) % 256 s[i], s[j] = s[j], s[i] x = (s[i] + (s[j] % 256)) % 256 ch += chr(r ^ s[x]) print(ch)
CISCN{6654d84617f627c88846c172e0f4d46c}