一.查壳的老生常谈了。。2分的题目就不多bb了。
二.。elf文件,拖入ida,直接查找字符串,找到对应的函数
三.直接分析:
这里讲道理我当时很懵逼,因为进去这个函数后,发现伪码非常复杂,这里困了挺久了,看了wp才知道,这玩意
应该是一个随机数,在0到21中,同时代码还提到了22这个数字,猜测是flag对应的长度,所以应该是这里
然后才能猜测到的,然后这里又有个坑,循环只有10次,肯定是无法得到完整的flag的,所以在脚本中,要凑满22个。
四.
代码:
by=[0x5F, 0xF2, 0x5E, 0x8B, 0x4E, 0x0E, 0xA3, 0xAA, 0xC7, 0x93, 0x81, 0x3D, 0x5F, 0x74, 0xA3, 0x09, 0x91, 0x2B, 0x49, 0x28, 0x93, 0x67, 0x00]
flag=""
for i in range(22):
v9=0
v8=0
v4=i+1
v6=by[i]
while v8<v4:
v8+=1
v9=v9*1828812941+12345
flag+=chr((v9^v6)&0xff) //起到一个保险作用,这样就不会超过0xff
print(flag)