CRACKME破解系列分析-CRECKME 1

程序原作者:zenghw

地址:http://bbs.pediy.com/showthread.php?t=93936

 

虽然是很早以前的东西了,但是对于我这个初学者还是很有学习价值的。

下载地址:http://pan.baidu.com/s/1vhqnI

介绍:普通序列号验证,无加壳,无花指令,无SMC,无虚拟机等!

目的:非明码的实现

1,爆破

还是OD载入,查找字符串:

CRACKME破解系列分析-CRECKME 1_第1张图片

双击"Congratulation! Correct Serial Num,do next one",来到汇编代码处:

CRACKME破解系列分析-CRECKME 1_第2张图片

爆破的目的就是绕过程序的验证,或者说使程序的验证失效。对于汇编而言,就是找到关键跳(je,jmp等),然后修改为我们需要的结果。对于这个程序来说,我们的目的是弹出"Congratulation! Correct Serial Num,do next one",那么我们就要修改会使程序跳走的的关键代码。

来到段首,按F2下断点,一步一步F8调试下去,很容易找到关键跳:

004014B1     75 64         jnz XCRECKME_.00401517       ->         用NOP填充

004014E0     75 35         jnz XCRECKME_.00401517       ->         用NOP填充

00401515   . 74 05         je XCRECKME_.0040151C       ->         改为:jmp XCRECKME_.0040151C

0040157A    7E E6         jle XCRECKME_.00401562       ->         用NOP填充

复制修改-保存-爆破成功。

2,算法

还是直接看汇编代码吧:

CRACKME破解系列分析-CRECKME 1_第3张图片

CRACKME破解系列分析-CRECKME 1_第4张图片 

CRACKME破解系列分析-CRECKME 1_第5张图片

总结下算法:

NAME:长度大于等于6位;必须包含“ZENG”且“ZENG”不能位于首位;

SERIAL:长度大于等于6位;第0为必须为5;第4、5位分别为3、1;第1位为NAME所有偶数位之和(当该位为字母时其值为0);

你可能感兴趣的:(CRACKME破解系列分析-CRECKME 1)