运行分析

- 需破解用户名和序列号
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" + 序列号)


- 验证成功





![C语言程序设计-[6] if语句分支结构](https://i-blog.csdnimg.cn/direct/0183d43c9c0642629bfbf8a68fa1bc2d.png)













