image-20230613213428800

1
*((_BYTE *)v1 + *(_DWORD *)&v12[17]) = (*((char *)v1 + *(_DWORD *)&v12[17]) - 51) % 26 + 65

(某个数-51)%26+65

Q的ascii是81

image-20230613213457728

67就是“C”

最后通过写python脚本

image-20230613214209295

1
2
3
4
5
6
7
8
9
10
11
12
x = [81,115,119,51,115,106,95,108,122,52,95,85,106,119,64,108]
flag=''
for i in range(16):
for j in range(0,127):
z = j
if j > 64 and j <= 90:
j = (j - 51) % 26 + 65
if j > 96 and j <= 122:
j = (j - 79) % 26 + 97
if(j==x[i]):
flag+=chr(z)
print(flag)

通过这种思路就知道了不一定要去逆向这个代码。

而是通过遍历所有的1~128。

然后经过加密,如果和加密的结果相同就输出!!!

这个思路好啊