运行分析
- 需要破解Name和Serial
- 点击Check It!按钮没反应
PE分析
- C++程序,32位,无壳
静态分析&动态调试
- ida搜索字符串,双击进入关键函数
- 进行动态调试,逻辑如下:
- 1、Name长度为5~20,Serial长度与Name长度相等
- 2、提取Name和常量str1="31415926535897932384"每一位进行计算,得到v5
- 3、v5与Serial相等则弹窗成功
算法分析
Name = 'bears'
Serial = ''
str1 = '31415926535897932384'
for i in range(len(Name)):
v5 = 2 * (ord(Name[i]) % ord(str1[i]))
if (v5 > 123):
v5 -= 26;
if (v5 < 65):
v5 = 130 - v5;
if (v5 > 91 and v5 < 97):
v5 = v5 % 10 + 48;
Serial += chr(v5)
print(Name + '的Serial为:\n' + Serial)
- 计算得出的Serial不能有不可见字符,因此Name用"bears"
- 验证成功