新CrackMe160之013 - 013-Acid burn
这个程序与旧版的160个crackme的第一个是一样的
暴力破解:
这个程序有三个地方需要破解,
-
去NAG弹框界面
-
系列号模式
-
用户名和系列号模式
-
OD搜索(菜单->插件->中文搜索引擎->智能搜索)弹框关键字 "Welcome to this ..." 成功查找到并双击定位到 0042F78B , 下个断点, F9运行, 成功运行到断点处,
一路F8到retn返回上一层, 上一层的前几行0042562F处有个关键跳转, 直接je改为jmp跳过这个弹框, 第一个破解搞定,
先保存一个版本(LCG界面右键->复制到可执行文件->选择所有->全部复制->新界面右键->保存文件)
也可以直接返回到最上层0042FD9C处, 将这行nop掉即可 -
进入Serial / Name 界面, 点验证按钮提示"Sorry, The serial is incorect!" , 在OD中搜索, 成功定位到0042FA63, 向上几行0042FA5A看到关键跳,
直接改jge为jmp, 住下执行又发现一个关键跳跳到失败去了, 所以继续改为不跳, jnz转nop, 成功搞定~, 保存起来! -
进入Serial 界面, 点验证按钮提示"Try Again!" , 在OD中搜索, 成功定位到0042F4F8, 继续向上看几行找关键跳, 0042F4D5, jnz转nop, 测试成功~ 保存, 到此三个暴破完成~
正常破解:
1. 由Delphi Decomiler分析可知, 系列号框的验证按钮入口地址为 0042F470, 在入口这行F2下断点单步跟踪可知, "Hello Dude!"就是正确的答案
2. 由Delphi Decomiler分析可知, 用户名和系列号模式的验证按钮入口地址为 0042F998, 单步分析算法
1). 取第一个字符 esi = user[0] << 0x3 - user[0]
2). 取第二个字符 esi += user[1] << 0x4
3). 取第四个字符 esi += user[3] * 0xB
4). 取第三个字符 esi += user[2] *0xE
5). if(len(user) < 0x4)
6). 取第一个字符 eax = user[0] * 0x29 * 2
7). 拼接字符串 str = CW-eax(10)-CRACKED
8). 比较str与serial
由此可知1).~4).是没什么用的, 输入用户名后, 系列号直接就用计算器就可以算出来, 比如,
用户名为: 52pojie.cn,
那么算法为: '5' * 0x29 * 2 = 0x35 * 0x29 * 2 = 0x10FA = 4346,
系列号为: CW-4346-CRACKED
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~