新手破解练习Crackme160之004 - CKme

  1. 暴力破解
    打开应用, 发现没有按钮有点蒙, 其实下面的图片框就是可以点击的, 但点了也没有提示,
    直接OD打开, 打开搜索拉到最下面, 看到了注册成功的字样, 双击定位到004580A9, 往上找关键跳0045803B, 把jnz改为nop, 保存搞定

  2. 正常破解
    OD载入程序, 用PEid工具分析可知程序是Delphi开发的, 所以我们用Delphi Decomilier分析源码, 注册码框有个Chkcode事件, 00457C40处下断点, F9运行程序, 输入用户名abc, 注册码123, 点击图片框程序会在断点处停下, F8单步执行开始分析算法:
    1). 00457C6C处 esi = len(user) + 05x = 0x8
    2). 00457C6F处 得到一固定串 "黑头Sun Bird"
    3). 00457C82处 得到一固定串 "dseloffc-012-OK"
    4). 00457CB1处 将固定串与长度和用户名连起来 "黑头Sun Bird8dseloffc-012-OKabc"
    5). 00457D2C处 取出注册码与算法串对比
    6). 如果相等 [ebx+0x30C] = 0x3E, 不然就 = 0;
    看到这里应该可以确定算法组装出来的串就是正确的注册码串了, 但这个方法里没有成功与失败的分支, 只影响一个内存地址的值, 所以, 这个地址肯定就是最终判断成功与失败的关键所在
    Delphi Decomilier中, 我们可以看到还有两个方法比较可疑, Panel1DblClick与Panel1Click, 我们都进去分析一下, 在Panel1DblClick中我们看到了一行关键的东东 00457EF5 cmp dword ptr ds:[esi+0x30C],0x3E 如果相等, 则 [esi+0x30C] = 0x85, 在Panel1Click中 00458031 cmp dword ptr ds:[esi+0x30C],0x85, 然后如果相等跳转到成功~
    到此, 算法真相大白:
    1). 由注册码框的chkcode事件计算出用户名对应的一串值与注册码对比, 正确时内存=0x3E
    2). 由图片框的双击事件判断内存是否=0x3E, 正确时内存=0x85
    3). 由图片框的单击事件判断内存是否=0x85, 正确时显示图片
    所以, 用户名输入: abc, 对应的注册码为: 黑头Sun Bird8dseloffc-012-OKabc, 然后双击图片框, 再单击图片框就成功了~

这是160个软件part1
这是160个软件part2

1~160每个破解过程,在吾爱破解论坛都有高手破解过了,也有整理好现成的, 我这边主要就是自己动手操作的过程,与他们的不太一样
附上高手们的连接: 点击前往查看
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

新人入门教程"玩玩破解,写给新人看" 点击前往查看
我就是从这里开始的,对我这样的小白感觉超级友好~

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-04-08 17:08  hankerstudio  阅读(54)  评论(0)    收藏  举报