glass
调用了native-lib
libnative.so拖入ida
第二次变化
写脚本
from Crypto.Cipher import ARC4
data = [0xA3, 0x1A, 0xE3, 0x69, 0x2F, 0xBB, 0x1A, 0x84, 0x65, 0xC2,
0xAD, 0xAD, 0x9E, 0x96, 0x05, 0x02, 0x1F, 0x8E, 0x36, 0x4F,
0xE1, 0xEB, 0xAF, 0xF0, 0xEA, 0xC4, 0xA8, 0x2D, 0x42, 0xC7,
0x6E, 0x3F, 0xB0, 0xD3, 0xCC, 0x78, 0xF9, 0x98, 0x3F, 0x00]
arr = []
key = b'12345678'*32
cipher = ARC4.new(key)
for i, v in enumerate(data):
arr.append(v ^ (0x31 + (i % 8)))
print(arr)
arr2 = [arr[i*3:i*3+3] for i in range(len(arr)//3)]
myarrrr = []
for i in arr2:
myarr = i
myarr[1] = myarr[1] ^ myarr[0]
myarr[2] = myarr[2] ^ myarr[1]
myarr[0] = myarr[0] ^ myarr[2]
print(myarr)
myarrrr = myarrrr + myarr
print(myarrrr)
bb = bytes(myarrrr)
print(cipher.decrypt(bb))
baby.bc
clang baby.bc
得到的文件拖入ida
动调下来发现fillnumber是要有两位为0
docheck
行列不重复,数独游戏
得到的数独图
数独求解
14253
53142
35421
21534
42315
4,3改0
md5得到flag
gift
ida 7.6支持go语言
在DIE检查下发现是go语言写的
这里用idafree7.6打开
出来了这玩意
main_main函数
off_228230的值
v16的值
main_wtf函数
动调下来,猜测是指数增长,至于函数是什么,不知道
先分析wtf
a1==a4-1是是否进入wtf循环的判断
这个nnn的算术式经动调发现只是不断+1,且0x10+1=0,即nnn在0-0x10之间取值,一共17个数
goooo函数是判断是否nnn变量要+1
把call wtf函数patch掉发现只会输出2222222222
main_main函数
v14经过函数传参发现肯定和wtf指数增长有关,同时数值的不断变大,也很好验证这点
byte_2239c0里面是ascii码表
动调下来发现参数为1 3 6 9 0A 0B 0C 0D 0E时对应的nnn值为2 3 2 2 6 3 4 0 2
猜测规律:(4(i-1)+2(i-1))%17
写脚本
data = [0x54, 0x5E, 0x52, 0x4, 0x55, 5, 0x53, 0x5F, 0x50, 7, 0x54, 0x56, 0x51, 2, 3, 0]
d = [1,3,6,9,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x14,0x19,0x1E,0x28,0x42,0x66,0x0A0, 0x936,0x3D21,0x149A7,0x243AC,
0x0CB5BE,0x47DC61,0x16C0F46,0x262C432,0x4ACE299,0x10FBC92A,0x329ECDFD,0x370D7470]
flag=''
for j in d:
flag+=chr(data[(4**(j-1)+2**(j-1))%17]^0x66)
print(flag)
#4b445b3247c45344c54c44734445452c