下附件后先查壳
无壳,直接拖进ida32,查看main()函数
通过分析main()函数还是十分简单的。关键函数就是·authenticate()
我们直接双击进入这个函数
发现有个加密函数,先点进去看看
通过分析可知这个函数主要就是对
这两个数组进行操作
我们使用python脚本将传入decrypt()
的两个参数打印出来:
addr=0x08048AA8 #数组的地址
arr = []
for i in range(39): #数组的个数
arr.append(Dword(addr+4* i))
print(arr)
(ps:代码保存的路径必须要没有中文。使用这个代码的时候要把后面的注释删掉)
然后根据打印出来的数组编写脚本
s = [5178, 5174, 5175, 5179, 5248, 5242, 5233, 5240, 5219, 5222, 5235, 5223, 5218, 5221, 5235, 5216, 5227, 5233, 5240, 5226, 5235, 5232, 5220, 5240, 5230, 5232, 5232, 5220, 5232, 5220, 5230, 5243, 5238, 5240, 5226, 5235, 5243, 5248]
a = [5121, 5122, 5123, 5124, 5125]
v6 = len(s)
v7 = len(a )
v2 = len(s)
v4=0
while v4<v6:
for i in range(0,5):
if(i<v7 and v4<v6):
s[v4]-=a[i]
v4 += 1
else:
break
for i in range (38):
print(chr(s[i]),end="")
得到flag