运行分析
- 需要破解Name和Serial
PE分析
- upx壳,32位
- linux系统upx -d 脱壳
- 脱壳后发现是Delphi程序
静态分析&动态调试
- ida搜索字符串,找到Your Name must be at least 6 Chars long !,双击进入
- 发现地址为红色,即函数未定义
- 选中00457BAC(函数头)- 00457E96(函数尾),按下P创建函数
- 先静态分析,函数较多
- 119行下断点动调,发现还需要得到dword_45B840的值
- 在53行处下断点,发现dword_45B840 = Name[0]*2 + Name[1]*2 +…+Name[5]*2,也就是Name前6位的值相加乘2
算法分析
Name = 'concealbear'
dword_45B840 = 0
for i in range(0,6):
dword_45B840 += ord(Name[i]) * 2
Serial = str(2 * len(Name) + dword_45B840)
print(Name + "的Serial为:\n" +Serial)
- 验证成功