运行分析
- 需破解Name和Serial
PE分析
- LCC win32程序,32位,无壳
静态分析&动态调试
- ida搜索字符串,进入figugeg1所在位置
- 函数名处按x,返回上一层
- 发现可疑函数sub_401367,双击进入
- 来到关键函数处,静态分析逻辑如下:
- 1、获取Name和Serial,Name长度需大于7
- 2、提取Name每一位进行计算,得到新Name
- 3、判断Serial倒序和Name是否相等,相等则返回成功
算法分析
- 假设Name和Serial长度相等
Name = 'concealbear'
Serial_len = len(Name)
Name_encode = [0] * len(Name)
for i in range(len(Name)):
Name_encode[i] = (i ^ Serial_len) + (i ^ ord(Name[i]));
if (Name_encode[i] < 0x20):
Name_encode[i] += 32;
if (Name_encode[i] >= 0x80):
Name_encode[i] = 32;
Serial = ("".join(["".join([chr(i)for i in Name_encode[::-1]])]))
print(Name + '的Serial为:\n' + Serial)
- 验证成功