重启验证暴破之《中国跳棋大师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
强,我等菜鸟学习了. 我也来学习一下!:victory: 最好是暴重起验证这,这样程序一运行就是注册版了./:D 帖子保存 明天到家了学习一下~~ 又是猫的杰作呀 标志位暴破的经典总结
只用耐心看后才回有此感悟
我喜欢第一种
向兄弟多多学习
帖子精华~~ 经典标志位暴破,学习!!!!!!!!!! 学习,老大技术。。。。。。 猫作。。。一定要认真看看了。。