文章几天没更新,这几天一直在忙别的事,也规划了【零基础学破解系列】,目录已经弄好了。文章预计这半个月就会开始更新了

今天我们看看第五个cm,ajj的CKme002.exe

这个程序带“壳”

首先我们简单介绍下 什么叫样的程序是有壳的。当你OD附加一个程序,提示有文件被压缩,或者是打开以后都是乱码基本就是有壳了。看下图

所以,我们要养成一个良好的习惯,就是在进行破解之前,一定要先查壳。
我们利用PEID进行查壳,看看他是什么壳。(正式破解的第一步:查壳
我们可以看到下图显示这个程序是UPX的壳。

我们找一个脱PUX壳的工具来进行脱壳。
加壳有压缩的功能,可以称为压缩,那脱壳也可以称为解压缩。所以下图我们选择“解压缩”进行脱壳。

(脱壳机下载地址:链接: http://pan.baidu.com/s/1kVDDfh1 密码: 526a       PS:想学手动脱壳的朋友不用急,我正在编写的零基础破解教程里面有脱壳教程,然后也会有一个零基础脱壳教程,所以想学手动脱壳的朋友不用担心)

我们可以看到他脱壳后体积变大了,(截图中的文件我已经重命名,实际脱壳后的文件名不会改变)

想要破解一个程序,必须先了解这个程序。所以,在破解过程中,对最初程序的分析很重要,他可以帮助我们理解作者的目的和意图,特别是对于注册码的处理细节,从而方便我们反向跟踪和推导。
和上一节一样,打开CHM,选择第5个ajj,保存下来。运行程序,程序界面如下:

那么现在,我们OD载入脱壳后的程序,进行爆破吧!

我们查下字符串~



在最下面看到一个非常可疑的字符串,我们双击 跳过去

004473E4   .  53            push ebx
004473E5   .  8BD8          mov ebx,eax
004473E7   .  81BB 04030000>cmp dword ptr ds:[ebx+0x304],0xC34
004473F1   .  0F84 88000000 je 0044747F                              ;  // 一直在这里主动断下,应该有周期性调用的函数
004473F7   .  81BB 08030000>cmp dword ptr ds:[ebx+0x308],0x230D
00447401   .  74 7C         je short 0044747F                        ;  // 判断2
00447403   .  81BB 10030000>cmp dword ptr ds:[ebx+0x310],0xF94
0044740D   .  75 70         jnz short 0044747F                       ;  // 判断3
0044740F   .  8B83 18030000 mov eax,dword ptr ds:[ebx+0x318]
00447415   .  3B83 14030000 cmp eax,dword ptr ds:[ebx+0x314]
0044741B   .  75 62         jnz short 0044747F                       ;  // 判断4
0044741D   .  81BB 1C030000>cmp dword ptr ds:[ebx+0x31C],0x3E7
00447427   .  74 56         je short 0044747F                        ;  // 判断5
00447429   .  33D2          xor edx,edx                              ;  // 以下不知道干什么用的,不管它
0044742B   .  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]
00447431   .  8B08          mov ecx,dword ptr ds:[eax]
00447433   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
00447436   .  33D2          xor edx,edx
00447438   .  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
0044743E   .  8B08          mov ecx,dword ptr ds:[eax]
00447440   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
00447443   .  33D2          xor edx,edx
00447445   .  8B83 E0020000 mov eax,dword ptr ds:[ebx+0x2E0]
0044744B   .  8B08          mov ecx,dword ptr ds:[eax]
0044744D   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
00447450   .  33D2          xor edx,edx
00447452   .  8B83 E4020000 mov eax,dword ptr ds:[ebx+0x2E4]
00447458   .  8B08          mov ecx,dword ptr ds:[eax]
0044745A   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
0044745D   .  A1 A8984400   mov eax,dword ptr ds:[0x4498A8]
00447462   .  83C0 70       add eax,0x70
00447465   .  BA 8C744400   mov edx,0044748C                         ;  厉害厉害真厉害!佩服佩服真佩服!!
0044746A   .  E8 EDC4FBFF   call 0040395C
0044746F   .  BA B8744400   mov edx,004474B8                         ;  注册了
00447474   .  8B83 EC020000 mov eax,dword ptr ds:[ebx+0x2EC]
0044747A   .  E8 3DCCFDFF   call 004240BC
0044747F   >  5B            pop ebx                                  ;  // 上面的所有跳转都跳到这里
00447480   .  C3            retn

代码我已经加了注释了,我们输入假码 dbgpro.com然后,找到代码头 下段,也就是004473e4处,然后我们发现莫名奇妙的断下来了,我猜不是有定时器判断是否正确就是线程里面一直判断,

不管他,我们F8单步跟,把所以会跳过成功的都给nop掉,


然后我们把断点去掉F9运行起来


打赏