这是CreackMe练习系列的第一篇文章,我会假设读者都是没有基础的小白~(跟我一样)^_^

所以会比较啰嗦,注册机的编写理论上在这个系列是不会出现的~

至于OD的使用,前面有个简单的介绍 传送门 ,如果有必要的话,我会单独再出一个教程

今天我们来看个CM~ 160个cm系列里面的第一

先把 http://www.dbgpro.com/archives/189.html 里面的附件下下来

下第一个附件即可


然后 打开虚拟机,我们在虚拟机中玩,别问我为什么要用虚拟机,自从有次破解别人外挂遇到暗桩被格盘了,我就有崽虚拟机中破解的习惯了……

如果没装虚拟机也没事,我比你们先玩这些附加,如果我遇到问题,会在文章中指出,but,这些都是正规cm,应该不会干出很恶心的事

开始正文吧


我们先打开这个软件观察观察,看看它是怎么玩的,研究清楚了 再破解它

打开以后有个提示框

应该没多大用~提示信息而已

标题怪怪的~ 

不管他 点确定 进去

有3个按钮,貌似第一个按钮和最后一个按钮都是要输入序列码 来破解的,我个人还是喜欢中间的Exit,但是。。今天我们不是来搞笑的好吗,,不点中间(打这段字的时候想起来了,貌似每次玩cm都没点过中间,手贱点了下~果然只是单纯的退出,并没有弹出美女图片 🙁  )

好吧,我们先点第一个按钮 Serial/Name 别问我为什么第一个是他,,看他名字长 不爽而已~

嗯,我们先输入假的用户名 和假的序列码~

这里我输入

dbgpro.com和moc.orpgbd

点Check it Baby! (希望作者不是男的~恶心啊)

弹出个错误提示

嘿嘿,错了~

现在我们已经知道了,这货 错了会提示 Sorry,The serial is incorect

现在我们打开OD 把这货拖进来(可以在打开OD以后 点选项->添加到浏览器(大部分叫添加到资源管理器))

这样下次就能在exe文件上点右键 附加到OD运行了~

跟拖进来是一样的

好的,进来以后看到这样的

我们在反汇编窗口 点击鼠标 右键->中文搜索引擎->智能搜索

他们到一个新界面,然后按ctrl+f 输入刚才错误提示的其中一段 这里我输入 sorry

会出现如下界面,我们按b查找下一个,发现只有两个,双击找到的第一个字符串,或者在第一个上面点右键 反汇编窗口中跟随

双击那个字符串后 会到达如下界面,这时候选中的是地址 0042fa63处

往下翻 下面还有个一样的提示,应该就是我们刚才找到的第二个字符串了

我把代码复制出来了,我们简单的看看

0042FA36  |.  E8 1DB0FEFF   call Acid_bur.0041AA58
0042FA3B  |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
0042FA3E  |.  0FB640 02     movzx eax,byte ptr ds:[eax+0x2]
0042FA42  |.  6BC0 0E       imul eax,eax,0xE
0042FA45  |.  03F0          add esi,eax
0042FA47  |.  8935 58174300 mov dword ptr ds:[0x431758],esi
0042FA4D  |.  A1 6C174300   mov eax,dword ptr ds:[0x43176C]
0042FA52  |.  E8 D96EFDFF   call Acid_bur.00406930
0042FA57  |.  83F8 04       cmp eax,0x4
0042FA5A  |.  7D 1D         jge short Acid_bur.0042FA79
0042FA5C  |.  6A 00         push 0x0
0042FA5E  |.  B9 74FB4200   mov ecx,Acid_bur.0042FB74                ;  Try Again!
0042FA63  |.  BA 80FB4200   mov edx,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FA68  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FA6D  |.  8B00          mov eax,dword ptr ds:[eax]
0042FA6F  |.  E8 FCA6FFFF   call Acid_bur.0042A170
0042FA74  |.  E9 BE000000   jmp Acid_bur.0042FB37
0042FA79  |>  8D55 F0       lea edx,dword ptr ss:[ebp-0x10]
0042FA7C  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
0042FA82  |.  E8 D1AFFEFF   call Acid_bur.0041AA58
0042FA87  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]
0042FA8A  |.  0FB600        movzx eax,byte ptr ds:[eax]
0042FA8D  |.  F72D 50174300 imul dword ptr ds:[0x431750]
0042FA93  |.  A3 50174300   mov dword ptr ds:[0x431750],eax
0042FA98  |.  A1 50174300   mov eax,dword ptr ds:[0x431750]
0042FA9D  |.  0105 50174300 add dword ptr ds:[0x431750],eax
0042FAA3  |.  8D45 FC       lea eax,dword ptr ss:[ebp-0x4]
0042FAA6  |.  BA ACFB4200   mov edx,Acid_bur.0042FBAC                ;  CW
0042FAAB  |.  E8 583CFDFF   call Acid_bur.00403708
0042FAB0  |.  8D45 F8       lea eax,dword ptr ss:[ebp-0x8]
0042FAB3  |.  BA B8FB4200   mov edx,Acid_bur.0042FBB8                ;  CRACKED
0042FAB8  |.  E8 4B3CFDFF   call Acid_bur.00403708
0042FABD  |.  FF75 FC       push dword ptr ss:[ebp-0x4]
0042FAC0  |.  68 C8FB4200   push Acid_bur.0042FBC8                   ;  -
0042FAC5  |.  8D55 E8       lea edx,dword ptr ss:[ebp-0x18]
0042FAC8  |.  A1 50174300   mov eax,dword ptr ds:[0x431750]
0042FACD  |.  E8 466CFDFF   call Acid_bur.00406718
0042FAD2  |.  FF75 E8       push dword ptr ss:[ebp-0x18]
0042FAD5  |.  68 C8FB4200   push Acid_bur.0042FBC8                   ;  -
0042FADA  |.  FF75 F8       push dword ptr ss:[ebp-0x8]              ;  kernel32.7C816D58
0042FADD  |.  8D45 F4       lea eax,dword ptr ss:[ebp-0xC]
0042FAE0  |.  BA 05000000   mov edx,0x5
0042FAE5  |.  E8 C23EFDFF   call Acid_bur.004039AC
0042FAEA  |.  8D55 F0       lea edx,dword ptr ss:[ebp-0x10]
0042FAED  |.  8B83 E0010000 mov eax,dword ptr ds:[ebx+0x1E0]
0042FAF3  |.  E8 60AFFEFF   call Acid_bur.0041AA58
0042FAF8  |.  8B55 F0       mov edx,dword ptr ss:[ebp-0x10]
0042FAFB  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]           ;  kernel32.7C8399F3
0042FAFE  |.  E8 F93EFDFF   call Acid_bur.004039FC
0042FB03  |.  75 1A         jnz short Acid_bur.0042FB1F
0042FB05  |.  6A 00         push 0x0
0042FB07  |.  B9 CCFB4200   mov ecx,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |.  BA D8FB4200   mov edx,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB16  |.  8B00          mov eax,dword ptr ds:[eax]
0042FB18  |.  E8 53A6FFFF   call Acid_bur.0042A170
0042FB1D  |.  EB 18         jmp short Acid_bur.0042FB37
0042FB1F  |>  6A 00         push 0x0
0042FB21  |.  B9 74FB4200   mov ecx,Acid_bur.0042FB74                ;  Try Again!
0042FB26  |.  BA 80FB4200   mov edx,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FB2B  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB30  |.  8B00          mov eax,dword ptr ds:[eax]
0042FB32  |.  E8 39A6FFFF   call Acid_bur.0042A170
0042FB37  |>  33C0          xor eax,eax
0042FB39  |.  5A            pop edx                                  ;  kernel32.7C816D4F
0042FB3A  |.  59            pop ecx                                  ;  kernel32.7C816D4F
0042FB3B  |.  59            pop ecx                                  ;  kernel32.7C816D4F
0042FB3C  |.  64:8910       mov dword ptr fs:[eax],edx               ;  ntdll.KiFastSystemCallRet
0042FB3F  |.  68 6EFB4200   push Acid_bur.0042FB6E
0042FB44  |>  8D45 E8       lea eax,dword ptr ss:[ebp-0x18]
0042FB47  |.  E8 243BFDFF   call Acid_bur.00403670

call Acid_bur.00406930
0042FA57  |.  83F8 04       cmp eax,0x4
0042FA5A  |.  7D 1D         jge short Acid_bur.0042FA79

0042FA52  |.  E8 D96EFDFF   call Acid_bur.00406930
0042FA57  |.  83F8 04       cmp eax,0x4
0042FA5A  |.  7D 1D         jge short Acid_bur.0042FA79
0042FA5C  |.  6A 00         push 0x0
0042FA5E  |.  B9 74FB4200   mov ecx,Acid_bur.0042FB74                ;  Try Again!
0042FA63  |.  BA 80FB4200   mov edx,Acid_bur.0042FB80                ;  Sorry , The serial is 

在地址 0042FA63 处错误提示的地方,上面的代码 有处 call 接着就是比较 eax和4

然后有个jge跳转,也就是说 这里可能是判断用户名不能小于4吧~ 跟我们没什么关系,

当然,我有强迫症,我想输入一个也要能继续玩下去,一定要干掉他 我们选中

0042FA5A  |.  7D 1D         jge short Acid_bur.0042FA79

这一行,然后按下键盘F2 或者右键->断点->切换

设置好断点以后 ,地址那里会是红色,然后F9运行,在name那一栏输入 dbg3个字母

然后点check

嘿嘿 断下来了~

我们看到的图是这样的,jge旁边有条白色的线条,表明jpe不成立,他会执行提示错误的窗口,我们再看看又上角的寄存器窗口,eax=3,因为我们输入的dbg正好是3个字母,表明我们的caiz

如果跳转的条件成立的话 看到的会是红色的线条

但是这里我们是白色 不能跳过去,怎么办,我们得让他跳过去,要不然就只能输入3个以上的字母了

所以,现在我们要把jge改成jmp jmp是无条件跳转

我们选中42fa5a这一行 然后右键 汇编  或者直接敲空格

出现这个对话框,我们把jge改成jmp

如下,点汇编~

然后f9运行起来,F8单步,发现没有进第一个错误提示,继续F8一直到 

发现这里 跳过了 我们的正确提示,直接到达了错误提示,那么~ 这里我们不能让他跳过,我们nop掉这句判断,直接右键,二进制,Nop填充

变成如下所示

然后我们F9运行起来,可以看到下面的图,

我们已经爆破成功了,接下来是保存

我们再反汇编窗口 点右键 选择 复制到可执行文件 所有修改

在弹出的确认窗口中 选择 全部复制

然后会弹出一个新窗口,点右键 选择保存文件,覆盖原先的文件就行了~

现在再打开 是不是随便输入什么都提示成功了?我们已经爆破完第一个功能了,接下来是第二个~

他的错误提示是这样子的

我们接下来搜索字符串 try 搜到以后按b 发现还有几个,

但是 仔细观察下,他的错误提示 有两个感叹号! 带两个感叹号的字符串就一个,我们双击这个字符串

我们来到这里,发现他上面 的42f4f1处 有个> 符号 这表示是从其他地方跳入进来的,我们选中这行

选中以后,有条红线 指向了jnz语句,

我们在jnz处下个断点 F9跑起来,

然后输入dbgpro.com 点check

断下来了,这个跳转实现了,所以跳过了提示 god job… 我们把这里nop掉,再保存文件就行了,~

但是…………………………

我们这时候看看右下角堆栈窗口,它拿我们的假码dbgpro.com跟Hello Dude!放一起,应该是一起做参数去比较过,难道Hello Dude! 就是真码?

我们先不把jnz改nop 直接输入Hello Dude! 试试看~

果然是真码,第一个按钮调试的时候堆栈窗口也有真码 大家可以调试看看~

打赏