本文主要是介绍新160个crackme - 041-genocide1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
运行分析
- 提示未找到Reg.dat文件
- 同目录下创建Reg.dat即可打开程序
- 点击About -> Register,打开注册窗口,但是无法点击OK键
PE分析
- upx壳,32位
- upx -d crackme.2.exe脱壳
- 发现是Delphi程序
静态分析&动态调试
- DeDeDark打开程序进行分析,发现了注册窗体
- OK按钮:Button1Click(00437EA0)
- Cancel按钮:Button2Click(00437DFC)
- Serial输入框:EditChange1-4(00437E70、00437E7C、00437E88、00437E94)
- 对上面地址逐个分析
- 发现ida跳转至00437E70,再进入sub_437D1C函数按F5,疑似关键函数
- 动调发现按serial右边按钮时会触发sub_437D1C函数,继续向下动调找到关键函数sub_437BDB
- 继续动调分析,发现两个循环
- 第一个是将Name前4个字母分别整除10,若结果大于10就再整除10
- 第二个是判断Name前四位计算后的值,要分别与4个serial相等
算法分析
Name = 'concealbear'
Serial = ''for i in range(0,4):if ord(Name[i]) // 10 >= 10:Serial += str(ord(Name[i])//100)else:Serial += str(ord(Name[i]) // 10)print(Name + '的Serial为:\n' + Serial)
- 用按钮填入正确serial后,OK按钮编程可点击了,点击OK弹出破解成功提示
这篇关于新160个crackme - 041-genocide1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!