首页
社区
课程
招聘
[旧帖] [邀请码已发]破解光盘刻录大师6.1(申请邀请码) 0.00雪花
2010-2-7 14:36 1884

[旧帖] [邀请码已发]破解光盘刻录大师6.1(申请邀请码) 0.00雪花

2010-2-7 14:36
1884
前不久想刻个光碟,才发现机子里没有相关软件,于是到天空下了一个“刻录大师6.1”,这个工具是挺好用的,可是要注册,不然有次数限制



   用的实在不爽,所以打算把它破掉,找出珍藏了很久的破解工具,开始给它动个小手术。。

  先用PE检测,发现是“Borland Delphi 6.0 - 7.0”,没壳,正好下手(因为本人目前还不会手动脱壳,用工具脱还总是出问题)

   先运行一下程序,直接弹出的窗口就如上图所示,点“继续试用”,进去后依然有注册的地方,点注册他就又进入到了如上的界面中,好了,熟悉了界面现在就可以进行破解尝试了。。

  用OD运行程序,随便在输入框中输入一些数字后点注册

   F12暂停,可以跟综到如下所示的地方


在006581A4   - FF25 081B7100   jmp dword ptr ds:[<&user32.MessageB>处下断,重新运行,断下后结果如下图,在进行如图操作,跟综到代码窗


代码:
007006F1    /E9 37030000     jmp CheckReg.00700A2D
007006F6    |8D55 C0         lea edx,dword ptr ss:[ebp-40]
007006F9    |8B83 98030000   mov eax,dword ptr ds:[ebx+398]
........

    整个这一段就是进行最后的错误提示,所以他前面的内容应该就是注册判断的所在地,这个JMP实现了,然后就会出现错误提示,所以往上找,找到能跳过这个JMP的路线,这就应该是正确的注册路线了。。。
  
0070063E     E8 3D98F5FF     call CheckReg.00659E80
00700643     83F8 05         cmp eax,5
00700646     0F85 80000000   jnz CheckReg.007006CC               ; 这个跳不能实现
0070064C     8D55 D0         lea edx,dword ptr ss:[ebp-30]
0070064F     8B83 9C030000   mov eax,dword ptr ds:[ebx+39C]
00700655     E8 2ADCF9FF     call CheckReg.0069E284
0070065A     8B45 D0         mov eax,dword ptr ss:[ebp-30]
0070065D     E8 724EF5FF     call CheckReg.006554D4
00700662     E8 1998F5FF     call CheckReg.00659E80
00700667     83F8 05         cmp eax,5
0070066A     75 60           jnz short CheckReg.007006CC         ; 这个跳不能实现
0070066C     8D55 CC         lea edx,dword ptr ss:[ebp-34]
0070066F     8B83 A0030000   mov eax,dword ptr ds:[ebx+3A0]
00700675     E8 0ADCF9FF     call CheckReg.0069E284
0070067A     8B45 CC         mov eax,dword ptr ss:[ebp-34]
0070067D     E8 524EF5FF     call CheckReg.006554D4
00700682     E8 F997F5FF     call CheckReg.00659E80
00700687     83F8 05         cmp eax,5
0070068A     75 40           jnz short CheckReg.007006CC         ; 这个跳不能实现
0070068C     8D55 C8         lea edx,dword ptr ss:[ebp-38]
0070068F     8B83 A4030000   mov eax,dword ptr ds:[ebx+3A4]
00700695     E8 EADBF9FF     call CheckReg.0069E284
0070069A     8B45 C8         mov eax,dword ptr ss:[ebp-38]
0070069D     E8 324EF5FF     call CheckReg.006554D4
007006A2     E8 D997F5FF     call CheckReg.00659E80
007006A7     83F8 05         cmp eax,5
007006AA     75 20           jnz short CheckReg.007006CC         ; 这个跳不能实现
007006AC     8D55 C4         lea edx,dword ptr ss:[ebp-3C]
007006AF     8B83 A8030000   mov eax,dword ptr ds:[ebx+3A8]
007006B5     E8 CADBF9FF     call CheckReg.0069E284
007006BA     8B45 C4         mov eax,dword ptr ss:[ebp-3C]
007006BD     E8 124EF5FF     call CheckReg.006554D4
007006C2     E8 B997F5FF     call CheckReg.00659E80
007006C7     83F8 05         cmp eax,5
007006CA     74 2A           je short CheckReg.007006F6          ; 这个跳要实现
007006CC     6A 40           push 40                                               ;-----------
007006CE     A1 1C077100     mov eax,dword ptr ds:[71071C]   ;      
007006D3     E8 FC4DF5FF     call CheckReg.006554D4               ;      进
007006D8     50              push eax                                               ;      行
007006D9     A1 24077100     mov eax,dword ptr ds:[710724]   ;      错
007006DE     E8 F14DF5FF     call CheckReg.006554D4               ;      误
007006E3     50              push eax                                               ;      提
007006E4     8BC3            mov eax,ebx                                       ;      示
007006E6     E8 D156FAFF     call CheckReg.006A5DBC               ;
007006EB     50              push eax                                               ;
007006EC     E8 B37AF5FF     call <jmp.&user32.MessageBoxA> ;-------------
007006F1     E9 37030000     jmp CheckReg.00700A2D   ;跳至错误提示
007006F6     8D55 C0         lea edx,dword ptr ss:[ebp-40]
007006F9     8B83 98030000   mov eax,dword ptr ds:[ebx+398]

   大概分析代码就可以得出  cmp eax,5   是比较字符串长度的,也就是说这一段就是判断几个注册框中的数子是否为5位(我测试过了,只要全是5位的数字就能顺利的执行下来,当然也可以用一个JMP直接跳过这些检测,我这就先不改了),知道前面的东西了,那就可以继续向下进行了,在
007006F6     8D55 C0         lea edx,dword ptr ss:[ebp-40]

下断点,重新运行,为了方便测试,我在注输入框中输入

11111-22222-33333-44444-55555,确定后单步,可以发现

00700704     837D C0 00      cmp dword ptr ss:[ebp-40],0  ;比较“11111”与“0”
00700708     74 3C           je short CheckReg.00700746
0070070A     8D55 BC         lea edx,dword ptr ss:[ebp-44]
0070070D     8B83 9C030000   mov eax,dword ptr ds:[ebx+39C]
00700713     E8 6CDBF9FF     call CheckReg.0069E284
00700718     837D BC 00      cmp dword ptr ss:[ebp-44],0    ;比较“22222”与“0”
0070071C     74 28           je short CheckReg.00700746
0070071E     8D55 B8         lea edx,dword ptr ss:[ebp-48]
00700721     8B83 A0030000   mov eax,dword ptr ds:[ebx+3A0]
00700727     E8 58DBF9FF     call CheckReg.0069E284
0070072C     837D B8 00      cmp dword ptr ss:[ebp-48],0   ;比较“33333”与“0”
00700730     74 14           je short CheckReg.00700746
00700732     8D55 B4         lea edx,dword ptr ss:[ebp-4C]
00700735     8B83 A4030000   mov eax,dword ptr ds:[ebx+3A4]
0070073B     E8 44DBF9FF     call CheckReg.0069E284
00700740     837D B4 00      cmp dword ptr ss:[ebp-4C],0    ;比较“44444”与“0”
00700744     75 2A           jnz short CheckReg.00700770
00700746     6A 40           push 40
00700748     A1 1C077100     mov eax,dword ptr ds:[71071C]

这段代码就是在判断输入的是否全为0,我输入的全都不为“0”,所以可以继续F8下去,

-------------这段应该就是注册码计算了,直接过了(以俺现在的水平还算不出)----------
00700770     8D55 B0         lea edx,dword ptr ss:[ebp-50]
00700773     8B83 A0030000   mov eax,dword ptr ds:[ebx+3A0]
00700779     E8 06DBF9FF     call CheckReg.0069E284
0070077E     8B45 B0         mov eax,dword ptr ss:[ebp-50]
00700781     E8 3691F5FF     call CheckReg.006598BC
00700786     8BF0            mov esi,eax
00700788     8D45 AC         lea eax,dword ptr ss:[ebp-54]
0070078B     E8 7C84FCFF     call CheckReg.006C8C0C
00700790     8B45 AC         mov eax,dword ptr ss:[ebp-54]
00700793     E8 2491F5FF     call CheckReg.006598BC
00700798     8BC8            mov ecx,eax
0070079A     8BC6            mov eax,esi
0070079C     BF 10270000     mov edi,2710
007007A1     33D2            xor edx,edx
007007A3     F7F7            div edi
007007A5     8BF8            mov edi,eax
007007A7     8BC1            mov eax,ecx
007007A9     B9 10270000     mov ecx,2710
007007AE     33D2            xor edx,edx
007007B0     F7F1            div ecx
----------------------------------------------------------------------------------

下面又有比较了,又要仔细看了。。
-------------------------------------
007007B2     3BF8            cmp edi,eax
007007B4     74 2F           je short CheckReg.007007E5
007007B6     83FF 01         cmp edi,1
007007B9     74 2A           je short CheckReg.007007E5
007007BB     6A 40           push 40
007007BD     A1 1C077100     mov eax,dword ptr ds:[71071C]
007007C2     E8 0D4DF5FF     call CheckReg.006554D4
007007C7     50              push eax
007007C8     A1 24077100     mov eax,dword ptr ds:[710724]
007007CD     E8 024DF5FF     call CheckReg.006554D4
007007D2     50              push eax
007007D3     8BC3            mov eax,ebx
007007D5     E8 E255FAFF     call CheckReg.006A5DBC
007007DA     50              push eax
007007DB     E8 C479F5FF     call <jmp.&user32.MessageBoxA>
007007E0     E9 48020000     jmp CheckReg.00700A2D
007007E5     8D55 A8         lea edx,dword ptr ss:[ebp-58]
007007E8     8B83 98030000   mov eax,dword ptr ds:[ebx+398]

看那两个JE都是跳到同一个地方,如果两个JE都不实现呢?接着红色代码是否眼熟呢,可以看一看它与前面的错误提示代码完全相同,那就说明这两个JE如果都不实现就会进行错误提示。。

那就让它执行吧,把任意一个JE改成JMP就好了,为了安全我是把第二个JE改成了JMP。。。(这是第一刀)

后面的还是验证注册码的,继续F8,直到。。

0070083A     33D2            xor edx,edx
0070083C     3B5424 04       cmp edx,dword ptr ss:[esp+4]
00700840     75 03           jnz short CheckReg.00700845     
00700842     3B0424          cmp eax,dword ptr ss:[esp]
00700845     5A              pop edx
00700846     58              pop eax
00700847     0F85 BB010000   jnz CheckReg.00700A08
0070084D     8D55 9C         lea edx,dword ptr ss:[ebp-64]
00700850     8B83 A8030000   mov eax,dword ptr ds:[ebx+3A8]

这里又有两个跳,第一个跳
00700840     75 03           jnz short CheckReg.00700845  
没有跳出第二个跳的范围,所以不用管它,主要是第二个跳,看它跳过去的位置00700A08处
----------------------------
00700A08     6A 40           push 40
00700A0A     A1 1C077100     mov eax,dword ptr ds:[71071C]
00700A0F     E8 C04AF5FF     call CheckReg.006554D4
00700A14     50              push eax
00700A15     A1 24077100     mov eax,dword ptr ds:[710724]
00700A1A     E8 B54AF5FF     call CheckReg.006554D4
00700A1F     50              push eax
00700A20     8BC3            mov eax,ebx
00700A22     E8 9553FAFF     call CheckReg.006A5DBC
00700A27     50              push eax
00700A28     E8 7777F5FF     call <jmp.&user32.MessageBoxA>
--------------------------------
看着像错误提示框,不确定的话可以F8过来,就可以得到如下结果



看右下角,这又是一个错误提示,所以上面
00700847     0F85 BB010000   jnz CheckReg.00700A08
这个跳就不能让它实现,直接NOP掉就好了。。。(第二刀)

重新运程序到这里(前面修改过的地方都已保存),F8继续。。。

-------------------这里的代码是否与前面的相似-----------
0070086A     3B5424 04       cmp edx,dword ptr ss:[esp+4]
0070086E     75 03           jnz short CheckReg.00700873
00700870     3B0424          cmp eax,dword ptr ss:[esp]
00700873     5A              pop edx
00700874     58              pop eax
00700875     0F85 8D010000   jnz CheckReg.00700A08
0070087B     8D55 98         lea edx,dword ptr ss:[ebp-68]
0070087E     8B83 98030000   mov eax,dword ptr ds:[ebx+398]
-------------------------------------------------------------------

同样NOP掉“   jnz CheckReg.00700A08 ”。。。(第三刀)

继续F8,可以注意下寄存器EDX中的数据如:
edx=006CA30C (CheckReg.006CA30C), ASCII "aZHiVAwi88m+OQupeq"

这应该就是加密过的注册码吧,这个我不会破,就等高手来解决了

咱还是继续F8吧。。。一直到

可以看到右下方的信息了吧,注册成功。。。。

哈哈,总算完成了(不过要输入5组5位的数字,当然还能在进一步优化,我就不弄了,有兴趣的朋友在试试吧)

+++++++++++++++++++++++++++++++++++++++++++
    总结:虽然这不是我第一次玩破解,但却次第一次比较有成就感(之前弄的全是CrackMe,难度可是比这个软件大啊,完全是在打击俺弱小的心灵),见意初学者也可以下个试试,就当练手找自信了。。。
   这个软件算了破解掉了,能用了,不过还是有个小问题,注册成功后还是总需要重复注册,无论用什么功能,在使用前都会重新弹出注册框,要求输入注册码,相当的烦人,希望高手能给予指点,在此先谢过了。。。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RayC 2010-2-7 14:43
2
0
这是前几个的附件,因为图比较多,我也分不清哪个是哪个了,就先放这了




上传的附件:
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xuejialian 2010-2-7 14:59
3
0
谢谢楼主的奉献
雪    币: 32
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tsywb 2010-2-7 15:21
4
0
厉害啊   学习学习
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yaoyuntao 2010-2-7 17:22
5
0
楼主高手啊,我什么时候能学会呢?
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hezhongyou 2010-2-7 19:16
6
0
正在研究,学习一下,谢谢楼主分享!
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hezhongyou 2010-2-7 19:46
7
0
不好,没有软件链接,没有截图,根本就看不懂,不能重现
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Greater 2010-2-7 19:51
8
0
学以致用,佩服楼主!
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RayC 2010-2-8 08:34
9
0
      这是我第一次发贴,所以的些乱,前面的过和也是有图的,只是不知什么原因没有显示出来,我又在一楼重贴了一遍。

    关于这个软件,天空就有的下,在放个地址吧http://www.skycn.com/soft/39518.html
      要看不懂的话,如果只想破解的尝试一下,可以直接切换的CheckReg.dll模块,在“00700643     83F8 05         cmp eax,5”处下断点,之后的内容就是注册验证的部分了,贴中有分析的过程。

   
    如果是初学的,还是最好想办法确定这个断点(我也是尝试了很多次才找到的,当然也有运气成份在内,所以过程有点乱),这个断点一确定(当然也可能有其它的关键位置,我试过直接跳过掉验证窗口,结果程序就只显示一个空的界面,其他的什么都没有了),后面的都很简单了
上传的附件:
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gongxingqi 2010-2-8 08:58
10
0
既然这样,LZ是不是可以找到成功提示的地方爆破,中间的那些过程进行省略呢
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hezhongyou 2010-2-8 09:19
11
0
楼主可不可以把软件的链接发上来?
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RayC 2010-2-8 09:33
12
0
我在八楼发了啊,那就在发一遍吧。。。

http://www.skycn.com/soft/39518.html#downUrlMap
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
harecbd 2010-2-8 09:35
13
0
看来楼主还是很厉害的啦
游客
登录 | 注册 方可回帖
返回