运行分析
- 需破解用户名和序列号
PE分析
- C++程序,32位,无壳
静态分析&动态调试
- ida打开,由main函数向下分析,找到DialogFunc函数,并找到关键判断函数sub_401340
- 进入sub_401340函数,发现算法
- 发现byte_405030的值
算法分析
用户名 = 'concealbear'
byte_405030 = [0x0C, 0x0A, 0x13, 0x09, 0x0C, 0x0B, 0x0A, 0x08]
i = 0
v3 = 3
v4 = 0
while v3<len(用户名):
if i > 7:
i = 0
v4 += byte_405030[i] * ord(用户名[v3])
v3 = v3 + 1
i = i + 1
序列号 = str(v4)
print(用户名 + "的序列号为:\n" + 序列号)
- 验证成功