0x00 strangeCpp
运行一次提示cpu num 是有用的,IDA找到这个变量为dword_140021190,交叉引用找到这个变量的其他使用函数,找到关键函数。
跟进sub_140011384(),得到result的计算过程。
根据前面的if判断,爆破dword_140021190,然后与byte_140021008异或输出。
import hashlib
res = 607052314
#dword_140021190 <= 14549743
byte_140021008 = [
0x26, 0x2C, 0x21, 0x27, 0x3B, 0x0D,
0x04, 0x75, 0x68, 0x34, 0x28, 0x25,
0x0E, 0x35, 0x2D, 0x69, 0x3D ]
for i in range(14549744):
a = (((i<<8) ^ (i>>12)) * 291)& 0xFFFFFFFF #超出了C语言中int范围。
if a == res:
print("dword_140021190 =" ,i)
dword_140021190 = i
break
# python2 : print(map(lambda x : chr((x^dword_140021190)%256),byte_140021008))
[print(chr((i^dword_140021190)%256),end='') for i in byte_140021008]
print("\nflag{"+hashlib.md5(str(dword_140021190).encode(encoding = 'utf-8')).hexdigest()+'}')
0x01 CSRe
此程序是一个.NET程序,运行程序,发现了Eazfuscator.NET,混淆。
使用de4dot工具处理。
,然后使用dnSpy打开。找到Main函数:
跟进Class3.smethod_0(),得知这是个sha1加密函数。
B498BFA2498E21325D1178417BEA459EB2CD28F8 ,63143B6F8007B98C53CA2149822777B3566F9241
在线解这两个sha1得到flag.