Crackme : Acid burn.exe
难度系数:★
工具: Ollydbg(OD) 中文版
运行 Acid burn.exe
首先打开OD 加载 Acid burn.exe 输入错误的注册名和密码 提示Sorry,The serial is incorect!(对不起,序列号错误!)
打开OD-->插件-->中文搜索引擎-->搜索ASCLL 快捷键ctrl+F 搜索字符串Sorry,The serial is incorect!的所在位置
双击进入CPU窗口,这里的地址为0042FA63 我们先记下这个地方方便下次调试(Ctrl+G跳到这个位置)。
在0042FA63 之前有一个jge 跳转指令(大于等于则跳转) 如果这里跳转了就跳过了提示信息
我们在跳转前面下一个断点(F2下断点) 查看一下执行情况 运行程序(F9) 重新输入假的注册名和密码 发现程序被断下来了。我们按F7 单步调试 执行到call 00406930
后发现掉进了程序作者设下的深坑。
明显这里并不是我们寻找的提示 我们继续往下找 会发现 存在一个相同的提示 上面有两个字符串Congratz !! (恭喜!!) 和 Good job dude =) (干得漂亮,伙计) 明显这里就是我们要寻找的出口点了。
我们找到Congratz !! 前面的 jnz(不等于 ZF=0)则 跳转 如果跳转成功 会跳转到0042FBEF处 这里就是我们要找的关键跳了~在这条指令之前有一个call 肯定是关键call了。我们使用快捷键Alt+B打开断点窗口,删除掉之前下的断点。回到CPU窗口(Alt+C)
我们在call之前下一个断点跟踪调试(Ctrl+F2重新开始 -- 运行)
此时 EAX的值为CW-8856-CRACKED EDX的值为我们的假密码11111111111111111111111
这里我们怀疑CW-8856-CRACKED 就是我们要找的注册码 我们进入这个call里看看。
这里我们可以看出
mov esi,eax
mov edi,edx
cmp eax,edx
je 00403A9A
用eax和 edx中的值去比较 如果相同则跳转 这里我们就分析出来 密码的确是CW-8856-CRACKED。
爆破: 我们想实现爆破肯定要从jnz入手。让ZF=1 jnz不跳转即可。我们修改cmp eax,edx
为cmp eax,eax 即可。
Crackme--Acid burn(第一个程序)