野猫III 发表于 2006-8-14 16:08:39

重启验证暴破之《中国跳棋大师Chinese Checkers Master 1.03》

【破文标题】重启验证暴破之《中国跳棋大师Chinese Checkers Master 1.03》
【破文作者】WildCatIII
【龙族论坛】http://www.chinadforce.com
【PYG论坛】https://www.chinapyg.com
【破解工具】PEiD,W32DASM,UC32,OD
【破解平台】Windows 2K&XP
【软件名称】中国跳棋大师Chinese Checkers Master 1.03

【软件大小】3240K
【原版下载】http://tz.newhua.com/soft/28032.htm
【保护方式】注册码,时间限制
【软件简介】这是一款跳棋的游戏,玩家可以有多种选择,可以一人与计算机对战,也可以多人一起玩乐。
            困难度也有多种选择,玩家可以选择自己喜欢的模式来进行游戏。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
------------------------------------------------------------------------
一、程序查无壳,Microsoft Visual C++ 6.0编写。
二、程序注册失败有提示,根据这个提示我们很快找到关键代码段。
+++++++++++++++++++++++++++++++++++++++++++
文本字符串参考位于 Chinese_:.text,项目 268
地址=004229B8
反汇编=push Chinese_.004971E4
文本字符串=ASCII "The registration code you entered in incorrect.Please try again."
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00422890   83EC 08            sub esp,8
00422893   53               push ebx
00422894   55               push ebp
00422895   8BE9               mov ebp,ecx
00422897   56               push esi
00422898   57               push edi
00422899   8D4D 5C            lea ecx,dword ptr ss:
0042289C   E8 C0EFFDFF      call Chinese_.00401861
004228A1   68 39040000      push 439
004228A6   8BCD               mov ecx,ebp
004228A8   E8 6B230300      call Chinese_.00454C18
004228AD   8D8D 98110000      lea ecx,dword ptr ss:   ; 试练码
004228B3   6A 0E            push 0E
004228B5   51               push ecx
004228B6   8BC8               mov ecx,eax
004228B8   E8 19260300      call Chinese_.00454ED6
004228BD   C605 38605300 01   mov byte ptr ds:,1          ; 取位数,预设值为1,放标志位用。
004228C4   BB DF900F00      mov ebx,0F90DF                      ; ebx预设值为0x0f90df
004228C9   BF 20734900      mov edi,Chinese_.00497320         ; ASCII "0000000"
004228CE   83C9 FF            or ecx,FFFFFFFF
004228D1   33C0               xor eax,eax                         ; eax清零
004228D3   8D5424 10          lea edx,dword ptr ss:
004228D7   F2:AE            repne scas byte ptr es:
004228D9   F7D1               not ecx
004228DB   2BF9               sub edi,ecx
004228DD   8BC1               mov eax,ecx
004228DF   8BF7               mov esi,edi
004228E1   8BFA               mov edi,edx
004228E3   8A95 9C110000      mov dl,byte ptr ss:       ; ASCII“543210”
004228E9   C1E9 02            shr ecx,2
004228EC   F3:A5            rep movs dword ptr es:,dword p>
004228EE   8BC8               mov ecx,eax
004228F0   8A85 A0110000      mov al,byte ptr ss:
004228F6   83E1 03            and ecx,3
004228F9   F3:A4            rep movs byte ptr es:,byte ptr>
004228FB   8A8D 9B110000      mov cl,byte ptr ss:
00422901   884424 12          mov byte ptr ss:,al
00422905   8A85 A3110000      mov al,byte ptr ss:
0042290B   80E9 14            sub cl,14
0042290E   884C24 10          mov byte ptr ss:,cl
00422912   8A8D A1110000      mov cl,byte ptr ss:
00422918   885424 11          mov byte ptr ss:,dl
0042291C   8A95 A2110000      mov dl,byte ptr ss:
00422922   2C 15            sub al,15
00422924   80E9 18            sub cl,18
00422927   884424 15          mov byte ptr ss:,al
0042292B   884C24 13          mov byte ptr ss:,cl
0042292F   8A8D A4110000      mov cl,byte ptr ss:
00422935   885424 14          mov byte ptr ss:,dl
00422939   8A95 A5110000      mov dl,byte ptr ss:
0042293F   8D4424 10          lea eax,dword ptr ss:
00422943   50               push eax
00422944   884C24 1A          mov byte ptr ss:,cl
00422948   885424 1B          mov byte ptr ss:,dl
0042294C   E8 4A0F0100      call Chinese_.0043389B
00422951   83C4 04            add esp,4
00422954   3BC3               cmp eax,ebx
00422956   75 07            jnz short Chinese_.0042295F         ; 这里很关键。。。
00422958   C605 38605300 00   mov byte ptr ds:,0          ; 标志位,注册成功,就等于0
0042295F   83C3 11            add ebx,11
00422962   81FB FF439100      cmp ebx,9143FF
00422968   ^ 0F8C 5BFFFFFF      jl Chinese_.004228C9
0042296E   8D75 5C            lea esi,dword ptr ss:
00422971   8BCE               mov ecx,esi
00422973   E8 EFEDFDFF      call Chinese_.00401767
00422978   8BCE               mov ecx,esi
0042297A   E8 E2EEFDFF      call Chinese_.00401861
0042297F   A0 38605300      mov al,byte ptr ds:         ; 标志位送al
00422984   6A 00            push 0
00422986   84C0               test al,al                        ; 对其进行检测。。。
00422988   75 29            jnz short Chinese_.004229B3         ; 关键跳转~~~al为0则注册成功。
0042298A   68 00734900      push Chinese_.00497300            
; ASCII "Registration Confirmation"
0042298F   68 50724900      push Chinese_.00497250            
; ASCII "You have successfully registered Chinese Checkers Master, thank you!Chinese Checkers Master will now close to complete the registration process."
00422994   8BCD               mov ecx,ebp
00422996   E8 0D570300      call Chinese_.004580A8
0042299B   6A 00            push 0
0042299D   8BCD               mov ecx,ebp
0042299F   C685 AC110000 01   mov byte ptr ss:,1
004229A6   E8 03770300      call Chinese_.0045A0AE
004229AB   5F               pop edi
004229AC   5E               pop esi
004229AD   5D               pop ebp
004229AE   5B               pop ebx
004229AF   83C4 08            add esp,8
004229B2   C3               retn
004229B3   68 34724900      push Chinese_.00497234            ; ASCII "Registration Failure"
004229B8   68 E4714900      push Chinese_.004971E4            
; ASCII "The registration code you entered in incorrect.Please try again."
004229BD   8BCD               mov ecx,ebp
004229BF   E8 E4560300      call Chinese_.004580A8            ; 否则注册失败!
004229C4   6A 00            push 0
004229C6   8BCD               mov ecx,ebp
004229C8   E8 E1760300      call Chinese_.0045A0AE
004229CD   5F               pop edi
004229CE   5E               pop esi
004229CF   5D               pop ebp
004229D0   5B               pop ebx
004229D1   83C4 08            add esp,8
004229D4   C3               retn
++++++++++++++++++++++++++++++++++++
现在我们来个小结,程序注册都是通过对内存地址的标志位检测而写,成功为0,失败为1。
鉴于此,我们有三处可行性的标志位更改方法。请看:

第一种,在程序初始对内存地址赋值为1的时候,我们把它改成赋值为0,结果以下:
004228BD   C605 38605300 00   mov byte ptr ds:,0

第二种,在程序对注册码检测的过程中,根据它的跳转而给内存进行赋值的过程中进行更改,如:
00422956/75 07            jnz short Chinese_.0042295F
; 大家请看,程序在注册码检测的过程中就进行判断,如果不成功就跳,所以下面的标志位内存赋值为0就失败。
我们的方法就是把这个跳转Nop或者改成jz就可以了。。。
00422958|C605 38605300 00 mov byte ptr ds:,0; 标志位,注册成功,就等于0
0042295F\83C3 11          add ebx,11

第三种,根据程序最后的标志传送指令,浑水摸鱼,像第一种方法一样给它赋值,注册肯定会通过的啦。
0042297F   A0 38605300      mov al,byte ptr ds:
改成-------------------------------
0042297F   B0 00            mov al,0      ; 给它赋值为0,之前的检测代码好像都没作用的啦。。。
00422981   90               nop
00422982   90               nop
00422983   90               nop

++++++++++++++++以上的三种方法一般在一般的标志位暴破中也常用到。
咱们把这个程序随便用一种方法改了,保存,注册是成功,高兴呀~~

但可是太早了!这个程序有重启验证~我晕~拍马屁拍到马脚上了。。。

看我的~OD中下断 d 536038 ,重新运行程序,程序中断在此~

004296B3   C605 38605300 01   mov byte ptr ds:,1
004296BA   BB DF900F00      mov ebx,0F90DF

兄弟们,是不是很熟悉呀~

004296B3   C605 38605300 01   mov byte ptr ds:,1       ; mov byte ptr ds:,0
004296BA   BB DF900F00      mov ebx,0F90DF                      ; mov ebx,0
004296BF   BF 20734900      mov edi,Chinese_.00497320                        ; ASCII "0000000"
004296C4   83C9 FF            or ecx,FFFFFFFF
004296C7   33C0               xor eax,eax
004296C9   8D5424 14          lea edx,dword ptr ss:
004296CD   F2:AE            repne scas byte ptr es:
004296CF   F7D1               not ecx
004296D1   2BF9               sub edi,ecx
004296D3   8BC1               mov eax,ecx
004296D5   8BF7               mov esi,edi
004296D7   8BFA               mov edi,edx
004296D9   8A95 14150000      mov dl,byte ptr ss:
004296DF   C1E9 02            shr ecx,2
004296E2   F3:A5            rep movs dword ptr es:,dword ptr ds:
004296E4   8BC8               mov ecx,eax
004296E6   8A85 18150000      mov al,byte ptr ss:
004296EC   83E1 03            and ecx,3
004296EF   F3:A4            rep movs byte ptr es:,byte ptr ds:
004296F1   8A8D 13150000      mov cl,byte ptr ss:
004296F7   884424 16          mov byte ptr ss:,al
004296FB   8A85 1B150000      mov al,byte ptr ss:
00429701   80E9 14            sub cl,14
00429704   884C24 14          mov byte ptr ss:,cl
00429708   8A8D 19150000      mov cl,byte ptr ss:
0042970E   885424 15          mov byte ptr ss:,dl
00429712   8A95 1A150000      mov dl,byte ptr ss:
00429718   2C 15            sub al,15
0042971A   80E9 18            sub cl,18
0042971D   884424 19          mov byte ptr ss:,al
00429721   884C24 17          mov byte ptr ss:,cl
00429725   8A8D 1C150000      mov cl,byte ptr ss:
0042972B   885424 18          mov byte ptr ss:,dl
0042972F   8A95 1D150000      mov dl,byte ptr ss:
00429735   8D4424 14          lea eax,dword ptr ss:
00429739   50               push eax
0042973A   884C24 1E          mov byte ptr ss:,cl
0042973E   885424 1F          mov byte ptr ss:,dl
00429742   E8 54A10000      call Chinese_.0043389B
00429747   83C4 04            add esp,4
0042974A   3BC3               cmp eax,ebx                                     ; cmp eax,0
0042974C   75 07            jnz short Chinese_.00429755                      ; NOP
0042974E   C605 38605300 00   mov byte ptr ds:,0
00429755   83C3 11            add ebx,11
00429758   81FB FF439100      cmp ebx,9143FF
0042975E   ^ 0F8C 5BFFFFFF      jl Chinese_.004296BF
00429764   803D 38605300 01   cmp byte ptr ds:,1
0042976B   0F85 72050000      jnz Chinese_.00429CE3

看到了没有?有共有四种更改的方法,都是考虑到到标志位的~一次暴个够~
------暴破经验------------------------------------------------------------------
重启验证暴破,感觉就是爽~菜鸟不会分析它的算法的时候建议使用。
当然咯~咱期待兄弟们的这个程序的算法分析。
------------------------------------------------------------------------
【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

https://www.chinapyg.com/attachments/SpxImage_SABHzoWZqVFV.gif

绝恋风尘 发表于 2006-8-14 16:27:51

强,我等菜鸟学习了.

tigerisme 发表于 2006-8-14 17:23:38

我也来学习一下!:victory:

绝恋风尘 发表于 2006-8-14 20:55:36

最好是暴重起验证这,这样程序一运行就是注册版了./:D

Nisy 发表于 2006-8-14 22:02:42

帖子保存 明天到家了学习一下~~

xingbing 发表于 2006-8-15 20:56:51

又是猫的杰作呀

Nisy 发表于 2006-8-15 21:55:25

标志位暴破的经典总结
只用耐心看后才回有此感悟
我喜欢第一种
向兄弟多多学习
帖子精华~~

lizemi 发表于 2006-8-17 06:12:49

经典标志位暴破,学习!!!!!!!!!!

jisheng 发表于 2006-8-17 16:11:30

学习,老大技术。。。。。。

nioyun 发表于 2006-8-26 19:53:21

猫作。。。一定要认真看看了。。
页: [1] 2 3 4 5 6 7 8
查看完整版本: 重启验证暴破之《中国跳棋大师Chinese Checkers Master 1.03》