作为练手的 160 个 CrackMe 系列整理分析

CrackMe 来源:【反汇编练习】160个CrackME索引目录1~160建议收藏备用

004

该程序用 delphi 编写,界面只有用户名和注册码输入框,没有按钮,注册成功后会出现朱茵小姐的靓照。运行后下各种 GetXXXText 断点无效。搜索内存中的用户名/注册码,找到后下硬件断点,然而都是中断在系统 dll 、界面绘制相关代码中,严重干扰分析。。。折腾了一下,想起这个是 delphi 写的,于是拖进 dede 分析一下:dede
对照结果对单、双击下断(之前我还以为按回车指示输入完成。。另外下着单击响应函数的断点会因为断点命中造成界面切换从而无法产生双击事件)点击图片控件,来到这里单击
查看内存发现 [esi+0x30c] 的值为 0, 这个变量可能是一个状态标志,这里分与 0x85 做了比较(此处可爆)。用 0x85 搜一下代码段,找到了这里双击

按键响应
观察发现赋值 0x85 前还会先走一个 0x3e,分别在他们所在的函数入口下断,并输入用户名等,发现命中了上图二的函数,显然 0x457d35 处的函数很重要,跟进去后发现里面会将输入的注册码与正确的注册码进行比较,正确的注册码还有中文。。格式比较简单,就是 “黑头Sun Bird<十进制用户名长度+5>dseloffc-012-OK<用户名>“, 将尖括号替换掉即可。填入正确的注册码后即可使该函数返回 0 从而将 [ebx+0x30c] 的值改为 0x3e。

状态到 0x3e 后双击图像控件使状态改为 0x85, 最后再单击图像控件即可显示”朱茵小姐的靓照”。