| 
注册时间2006-2-27
阅读权限40
最后登录1970-1-1UID8671 独步武林  
 
 TA的每日心情|  | 开心 2018-5-6 16:27
 | 
|---|
 签到天数: 7 天 [LV.3]偶尔看看II | 
 
| 【破文标题】重启验证暴破之《中国跳棋大师Chinese Checkers Master 1.03》 【破文作者】WildCatIII[D.4s][PYG]
 【龙族论坛】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:[ebp+5C]
 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:[ebp+1198]     ; 试练码
 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:[536038],1          ; 取位数,[536038]预设值为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:[esp+10]
 004228D7     F2:AE              repne scas byte ptr es:[edi]
 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:[ebp+119C]       ; ASCII“543210”
 004228E9     C1E9 02            shr ecx,2
 004228EC     F3:A5              rep movs dword ptr es:[edi],dword p>
 004228EE     8BC8               mov ecx,eax
 004228F0     8A85 A0110000      mov al,byte ptr ss:[ebp+11A0]
 004228F6     83E1 03            and ecx,3
 004228F9     F3:A4              rep movs byte ptr es:[edi],byte ptr>
 004228FB     8A8D 9B110000      mov cl,byte ptr ss:[ebp+119B]
 00422901     884424 12          mov byte ptr ss:[esp+12],al
 00422905     8A85 A3110000      mov al,byte ptr ss:[ebp+11A3]
 0042290B     80E9 14            sub cl,14
 0042290E     884C24 10          mov byte ptr ss:[esp+10],cl
 00422912     8A8D A1110000      mov cl,byte ptr ss:[ebp+11A1]
 00422918     885424 11          mov byte ptr ss:[esp+11],dl
 0042291C     8A95 A2110000      mov dl,byte ptr ss:[ebp+11A2]
 00422922     2C 15              sub al,15
 00422924     80E9 18            sub cl,18
 00422927     884424 15          mov byte ptr ss:[esp+15],al
 0042292B     884C24 13          mov byte ptr ss:[esp+13],cl
 0042292F     8A8D A4110000      mov cl,byte ptr ss:[ebp+11A4]
 00422935     885424 14          mov byte ptr ss:[esp+14],dl
 00422939     8A95 A5110000      mov dl,byte ptr ss:[ebp+11A5]
 0042293F     8D4424 10          lea eax,dword ptr ss:[esp+10]
 00422943     50                 push eax
 00422944     884C24 1A          mov byte ptr ss:[esp+1A],cl
 00422948     885424 1B          mov byte ptr ss:[esp+1B],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:[536038],0          ; 标志位,注册成功,[536038]就等于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:[ebp+5C]
 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:[536038]         ; 标志位送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:[ebp+11AC],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
 
 ++++++++++++++++++++++++++++++++++++现在我们来个小结,程序注册都是通过对内存地址[536038]的标志位检测而写,成功为0,失败为1。
 鉴于此,我们有三处可行性的标志位更改方法。请看:
 
 第一种,在程序初始对内存地址[536038]赋值为1的时候,我们把它改成赋值为0,结果以下:
 004228BD     C605 38605300 00   mov byte ptr ds:[536038],0
 
 第二种,在程序对注册码检测的过程中,根据它的跳转而给内存进行赋值的过程中进行更改,如:
 00422956  /75 07            jnz short Chinese_.0042295F
 ; 大家请看,程序在注册码检测的过程中就进行判断,如果不成功就跳,所以下面的标志位内存赋值为0就失败。
 我们的方法就是把这个跳转Nop或者改成jz就可以了。。。
 00422958  |C605 38605300 00 mov byte ptr ds:[536038],0  ; 标志位,注册成功,[536038]就等于0
 0042295F  \83C3 11          add ebx,11
 
 第三种,根据程序最后的标志传送指令,浑水摸鱼,像第一种方法一样给它赋值,注册肯定会通过的啦。
 0042297F     A0 38605300        mov al,byte ptr ds:[536038]
 改成-------------------------------
 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:[536038],1
 004296BA     BB DF900F00        mov ebx,0F90DF
 
 兄弟们,是不是很熟悉呀~
 
 004296B3     C605 38605300 01   mov byte ptr ds:[536038],1         ; mov byte ptr ds:[536038],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:[esp+14]
 004296CD     F2:AE              repne scas byte ptr es:[edi]
 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:[ebp+1514]
 004296DF     C1E9 02            shr ecx,2
 004296E2     F3:A5              rep movs dword ptr es:[edi],dword ptr ds:[esi]
 004296E4     8BC8               mov ecx,eax
 004296E6     8A85 18150000      mov al,byte ptr ss:[ebp+1518]
 004296EC     83E1 03            and ecx,3
 004296EF     F3:A4              rep movs byte ptr es:[edi],byte ptr ds:[esi]
 004296F1     8A8D 13150000      mov cl,byte ptr ss:[ebp+1513]
 004296F7     884424 16          mov byte ptr ss:[esp+16],al
 004296FB     8A85 1B150000      mov al,byte ptr ss:[ebp+151B]
 00429701     80E9 14            sub cl,14
 00429704     884C24 14          mov byte ptr ss:[esp+14],cl
 00429708     8A8D 19150000      mov cl,byte ptr ss:[ebp+1519]
 0042970E     885424 15          mov byte ptr ss:[esp+15],dl
 00429712     8A95 1A150000      mov dl,byte ptr ss:[ebp+151A]
 00429718     2C 15              sub al,15
 0042971A     80E9 18            sub cl,18
 0042971D     884424 19          mov byte ptr ss:[esp+19],al
 00429721     884C24 17          mov byte ptr ss:[esp+17],cl
 00429725     8A8D 1C150000      mov cl,byte ptr ss:[ebp+151C]
 0042972B     885424 18          mov byte ptr ss:[esp+18],dl
 0042972F     8A95 1D150000      mov dl,byte ptr ss:[ebp+151D]
 00429735     8D4424 14          lea eax,dword ptr ss:[esp+14]
 00429739     50                 push eax
 0042973A     884C24 1E          mov byte ptr ss:[esp+1E],cl
 0042973E     885424 1F          mov byte ptr ss:[esp+1F],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:[536038],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:[536038],1
 0042976B     0F85 72050000      jnz Chinese_.00429CE3
 
 看到了没有?有共有四种更改的方法,都是考虑到到标志位的~一次暴个够~
 ------暴破经验------------------------------------------------------------------
 重启验证暴破,感觉就是爽~菜鸟不会分析它的算法的时候建议使用。
 当然咯~咱期待兄弟们的这个程序的算法分析。
 ------------------------------------------------------------------------
 【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
 
 
  
   | 
 评分
查看全部评分
 |