新160个crackme - 109-Jony-crackme
运行分析
- 需破解用户名和密码
PE分析
- Delphi程序,32位,无壳
静态分析&动态调试
- 用x32dbg查找中文字符串,发现关键字符串地址0x408649
- 回到ida的0x408649位置,进行动态调试,逻辑如下:
- 1、先输入Name和Serial
- 2、func_1是对Name进行处理,得到v71
- 3、func_2是将v71第一位转str
- 4、最后比较Serial和func_2得到函数对比,相等则返回成功
- 对func_1进行动调调试分析,逻辑如下:
- 1、取得循环次数v4 = v3 + 1 = (length(v2) >> 1) - 1 + 1
- 2、func_3作用是获得Name
- 3、ida未分析部分代码,切换至汇编代码进行分析:
- (1)bl = Name[2^esi]
- (2)al = Name[(esi^2)-1]
- (3)bl = bl | al
- (4)bl = bl + len(Name)
- 4、最后执行func_4,将上面bl存放在结果中
算法分析
Name = 'concealbear'
length = (len(Name) >> 1)
Name_calc = [0] * length
for i in range(length):
if (i ^ 2) - 1 == -1:
Name_calc[i] = ((ord(Name[i ^ 2]) | 0) & 0xff) + len(Name)
else:
Name_calc[i] = ((ord(Name[i ^ 2]) | ord(Name[(i ^ 2) - 1]))&0xff) + len(Name)
Serial = str(Name_calc[0])
print(Serial)
- 验证成功