飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: Nisy

[活动] 第十轮教学考题交流帖

  [复制链接]

该用户从未签到

发表于 2010-7-13 07:53:50 | 显示全部楼层
说下破解的思路,本人菜鸟,没能找到重启验证处,修改了十多处地方

首先:修改了几次程序发现不能启动,文件名与原文件相同则可以启动.可能存在文件名的验证,搜索” CRAZYTET”字符串,发现此处.

该处比较程序名是否被改:
004874EF  |.  BA 587A4800   MOV EDX,00487A58   ;  CRAZYTET.EXE
004874F4  |.  E8 33C9F7FF   CALL 00403E2C
004874F9  |.  74 05         JE SHORT 00487500   //je改成jmp
004874FB  |.  E8 64C4F7FF   CALL 00403964
00487500  |>  33C0          XOR EAX,EAX

去第一个时间NAG:
下ShowWindow断点,跟到此处.
00446200   .  53            PUSH EBX
00446201   .  8BD8          MOV EBX,EAX
00446203   .  8BCB          MOV ECX,EBX
00446205   .  8B93 08020000 MOV EDX,DWORD PTR DS:[EBX+208]
0044620B   .  B8 00B00000   MOV EAX,0B000
00446210   .  E8 9FFFFFFF   CALL 004461B4     可能是判断第一个NAG
00446215   .  66:83BB 72020>CMP WORD PTR DS:[EBX+272],0
0044621D      EB 0E         JE SHORT 0044622D   ;  跳过第一个NAG//改成jmp
0044621F   .  8BD3          MOV EDX,EBX
00446221   .  8B83 74020000 MOV EAX,DWORD PTR DS:[EBX+274]
00446227   .  FF93 70020000 CALL DWORD PTR DS:[EBX+270]
0044622D   >  5B            POP EBX                                  ;  CrazyTet.00446200
0044622E   .  C3            RETN

程序启动,点菜单?/Tips,显示”此项功能只有注册版可用”对话框,定位出处
00486CD0   .  55            PUSH EBP
00486CD1   .  8BEC          MOV EBP,ESP
00486CD3   .  6A 00         PUSH 0
00486CD5   .  6A 00         PUSH 0
00486CD7   .  53            PUSH EBX
00486CD8   .  8BD8          MOV EBX,EAX
00486CDA   .  33C0          XOR EAX,EAX
00486CDC   .  55            PUSH EBP
00486CDD   .  68 AB6D4800   PUSH 00486DAB
00486CE2   .  64:FF30       PUSH DWORD PTR FS:[EAX]
00486CE5   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
00486CE8   .  A1 D4A64800   MOV EAX,DWORD PTR DS:[48A6D4]
00486CED   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00486CEF   .  8A40 64       MOV AL,BYTE PTR DS:[EAX+64]
00486CF2   .  8B15 3CA74800 MOV EDX,DWORD PTR DS:[48A73C]            ;  CrazyTet.0049AC7C
00486CF8   .  8B12          MOV EDX,DWORD PTR DS:[EDX]
00486CFA   .  3A42 64       CMP AL,BYTE PTR DS:[EDX+64]
00486CFD      75 54         JNZ SHORT 00486D53      关键跳
00486CFF   .  6A 00         PUSH 0
00486D01   .  8D4D FC       LEA ECX,DWORD PTR SS:[EBP-4]
00486D04   .  A1 60AA4800   MOV EAX,DWORD PTR DS:[48AA60]
00486D09   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00486D0B   .  BA C06D4800   MOV EDX,00486DC0           ;  r12
00486D10   .  E8 DF88F8FF   CALL 0040F5F4
00486D15   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00486D18   .  E8 C3D1F7FF   CALL 00403EE0
00486D1D   .  50            PUSH EAX
00486D1E   .  8D4D F8       LEA ECX,DWORD PTR SS:[EBP-8]
00486D21   .  A1 60AA4800   MOV EAX,DWORD PTR DS:[48AA60]
00486D26   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00486D28   .  BA CC6D4800   MOV EDX,00486DCC       ;  m10
00486D2D   .  E8 C288F8FF   CALL 0040F5F4
00486D32   .  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
00486D35   .  E8 A6D1F7FF   CALL 00403EE0
00486D3A   .  8BD0          MOV EDX,EAX
00486D3C   .  A1 74AA4800   MOV EAX,DWORD PTR DS:[48AA74]
00486D41   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00486D43   .  59            POP ECX
00486D44   .  E8 C73BFCFF   CALL 0044A910      调用对话框处

分析程序其它处功能限制处多次发现这段代码:
MOV DWORD PTR FS:[EAX],ESP
MOV EAX,DWORD PTR DS:[48A6D4]
MOV EAX,DWORD PTR DS:[EAX]
MOV AL,BYTE PTR DS:[EAX+64]
MOV EDX,DWORD PTR DS:[48A73C]
MOV EDX,DWORD PTR DS:[EDX]
CMP AL,BYTE PTR DS:[EDX+64]

猜测应该是全局变量!!
在: 00486CF2   .  8B15 3CA74800 MOV EDX,DWORD PTR DS:[48A73C]上点右键查找相关参考/地址常数.
参考位于 CrazyTet:.peco 到 0048A73C
地址       反汇编                                    注释
00477E07   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00477E97   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00478044   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00478140   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
004788BD   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00478E88   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
0047BFFE   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
0047C3BE   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
0047C7A6   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
0047CEC5   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
0047F5DB   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00480467   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00480D64   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00480D86   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00480E89   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00480EB5   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
004817D2   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00481AA5   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00481C49   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00482086   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00483270   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00483804   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00485AC8   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00486667   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
00486CF2   MOV EDX,DWORD PTR DS:[48A73C]      (初始 CPU 选择)
004875D4   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
004875FD   MOV EDX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C
004878B0   MOV EAX,DWORD PTR DS:[48A73C]      [0048A73C]=0049AC7C
00487909   MOV ECX,DWORD PTR DS:[48A73C]      CrazyTet.0049AC7C

全部下断点:
找到各关键跳转处,由于汇编水平很差,没有找到关键的重启验证处!所以用了个笨方法,把各处的跳转全改成相反的,例如jne改成je;je改成jne.

程序发给老大了,希望能通过啊.嘿嘿
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-9-17 19:57
  • 签到天数: 64 天

    [LV.6]常住居民II

    发表于 2010-7-13 10:41:38 | 显示全部楼层
    支持了  :sleepy:
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-7-13 21:52:26 | 显示全部楼层
    【破文标题】Crazy Tetris 破文
    【破文作者】Millerxie
    【作者邮箱】millerxie@163.com
    【作者主页】
    【破解工具】OD+untelock
    【破解平台】Windows XP sp3
    【软件名称】Crazy Tetris
    【软件大小】
    【原版下载】
    【保护方式】
    【软件简介】
    【破解声明】
    ------------------------------------------------------------------------
    【破解过程】脱壳方面用的脱壳机
    在看雪由下载
    下面是功能限制去除
    一共3种特征码  逐一进行分析 更改jmp  更改地方下面已经给出
    第一种特征码
    00477DDF   .  64:8920       mov dword ptr fs:[eax],esp
    00477DE2   .  A1 04A94800   mov eax,dword ptr ds:[0x48A904]
    00477DE7   .  C700 F2030000 mov dword ptr ds:[eax],0x3F2
    00477DED   .  A1 04A94800   mov eax,dword ptr ds:[0x48A904]
    00477DF2   .  8B00          mov eax,dword ptr ds:[eax]
    00477DF4   .  8B15 D4A64800 mov edx,dword ptr ds:[0x48A6D4]          ;  CrazyTet.0049AC78
    00477DFA   .  8B12          mov edx,dword ptr ds:[edx]
    00477DFC   .  8A0402        mov al,byte ptr ds:[edx+eax]
    00477DFF   .  8B15 04A94800 mov edx,dword ptr ds:[0x48A904]          ;  CrazyTet.00498CF4
    00477E05   .  8B12          mov edx,dword ptr ds:[edx]
    00477E07   .  8B0D 3CA74800 mov ecx,dword ptr ds:[0x48A73C]          ;  CrazyTet.0049AC7C
    00477E0D   .  8B09          mov ecx,dword ptr ds:[ecx]
    00477E0F   .  3A0411        cmp al,byte ptr ds:[ecx+edx]
    00477E12   .  EB 69         jnz short CrazyTet.00477E7D                            改jmp
    00477E14   .  8B83 D0020000 mov eax,dword ptr ds:[ebx+0x2D0]
    第二种特征码
    00478022   .  8B15 04A94800 mov edx,dword ptr ds:[0x48A904]          ;  CrazyTet.00498CF4
    00478028   .  8902          mov dword ptr ds:[edx],eax
    0047802A   .  A1 04A94800   mov eax,dword ptr ds:[0x48A904]
    0047802F   .  8B00          mov eax,dword ptr ds:[eax]
    00478031   .  8B15 D4A64800 mov edx,dword ptr ds:[0x48A6D4]          ;  CrazyTet.0049AC78
    00478037   .  8B12          mov edx,dword ptr ds:[edx]
    00478039   .  8A0402        mov al,byte ptr ds:[edx+eax]
    0047803C   .  8B15 04A94800 mov edx,dword ptr ds:[0x48A904]          ;  CrazyTet.00498CF4
    00478042   .  8B12          mov edx,dword ptr ds:[edx]
    00478044   .  8B0D 3CA74800 mov ecx,dword ptr ds:[0x48A73C]          ;  CrazyTet.0049AC7C
    0047804A   .  8B09          mov ecx,dword ptr ds:[ecx]
    0047804C   .  3A0411        cmp al,byte ptr ds:[ecx+edx]
    0047804F   .  EB 69         jnz short CrazyTet.004780BA                            改jmp
    00478051   .  8B83 D0020000 mov eax,dword ptr ds:[ebx+0x2D0]
    第三种特征码
    0047BFF4   .  A1 D4A64800   mov eax,dword ptr ds:[0x48A6D4]
    0047BFF9   .  8B00          mov eax,dword ptr ds:[eax]
    0047BFFB   .  8A40 64       mov al,byte ptr ds:[eax+0x64]
    0047BFFE   .  8B15 3CA74800 mov edx,dword ptr ds:[0x48A73C]          ;  CrazyTet.0049AC7C
    0047C004   .  8B12          mov edx,dword ptr ds:[edx]
    0047C006   .  3A42 64       cmp al,byte ptr ds:[edx+0x64]
    0047C009   .  EB 6C         jnz short CrazyTet.0047C077                           改jmp

    文件名认证
    004874E8   .  A1 74A94800   mov eax,dword ptr ds:[0x48A974]
    004874ED   .  8B00          mov eax,dword ptr ds:[eax]
    004874EF   .  BA 587A4800   mov edx,CrazyTet.00487A58                ;  ASCII "CRAZYTET.EXE"
    004874F4   .  E8 33C9F7FF   call CrazyTet.00403E2C
    004874F9   .  74 05         je short CrazyTet.00487500                    改jmp
    004874FB   .  E8 64C4F7FF   call CrazyTet.00403964
    注册码长度认证
    00479988  |.  E8 8FA3F8FF   call CrazyTet.00403D1C
    0047998D  |.  2D B4000000   sub eax,0xB4
    00479992  |.  74 22         je short CrazyTet.004799B6     改jmp
    00479994  |.  83E8 02       sub eax,0x2

    启动时nag 没有找到 去掉方面
    上面的地方 更改过后功能没有任何限制。
    去不去nag是一样的。







    ------------------------------------------------------------------------
    【破解总结】NAG 找了好长时候 都没有找到去掉方法
    功能限制是一个一个耐心调试的没有用任何投机办法,感觉很累。
    那位大虾有好的办法提示下,在下表示感谢
    ------------------------------------------------------------------------
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-26 13:46
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2010-7-14 06:17:10 | 显示全部楼层
    F12暂停回溯来到关键位置去除NAG提示:

    00486C58   .  803D 64A64800>cmp     byte ptr [48A664], 0
    00486C5F   .  74 16         je      short 00486C77               ;  //jmp掉NAG
    00486C61   .  C605 64A64800>mov     byte ptr [48A664], 0
    00486C68   .  A1 14AA4800   mov     eax, dword ptr [48AA14]
    00486C6D   .  8B00          mov     eax, dword ptr [eax]
    00486C6F   .  8B10          mov     edx, dword ptr [eax]
    00486C71   .  FF92 D8000000 call    dword ptr [edx+D8]
    00486C77   >  C3            retn

    ///////////////////////////////////////////////////////////////////////////////////////////////

    查找字符串:

    ASCII 0E,"<UNREGISTERED>"

    ASCII "UNREGISTERED"

    ASCII "UNREGISTERED"

    ///////////////////////////////////////////////////////////////////////////////////////////////

    00478898   .  A1 04A94800   mov     eax, dword ptr [48A904]      ;  //下面这一段可用作特征码
    0047889D   .  C700 F2030000 mov     dword ptr [eax], 3F2
    004788A3   .  A1 04A94800   mov     eax, dword ptr [48A904]
    004788A8   .  8B00          mov     eax, dword ptr [eax]
    004788AA   .  8B15 D4A64800 mov     edx, dword ptr [48A6D4]      ;  CrazyTet.0049AC78
    004788B0   .  8B12          mov     edx, dword ptr [edx]
    004788B2   .  8A0402        mov     al, byte ptr [edx+eax]
    004788B5   .  8B15 04A94800 mov     edx, dword ptr [48A904]      ;  CrazyTet.00498CF4
    004788BB   .  8B12          mov     edx, dword ptr [edx]
    004788BD   .  8B0D 3CA74800 mov     ecx, dword ptr [48A73C]      ;  CrazyTet.0049AC7C
    004788C3   .  8B09          mov     ecx, dword ptr [ecx]
    004788C5   .  3A0411        cmp     al, byte ptr [ecx+edx]       ;  //查找所有命令,定位关键位置
    004788C8   .  75 53         jnz     short 0047891D
    004788CA   .  BD 06000000   mov     ebp, 6
    004788CF   .  A1 38A74800   mov     eax, dword ptr [48A738]
    004788D4   .  05 84000000   add     eax, 84
    004788D9   .  890424        mov     dword ptr [esp], eax
    004788DC   >  BE 09000000   mov     esi, 9
    004788E1   .  8B0424        mov     eax, dword ptr [esp]
    004788E4   .  8BD8          mov     ebx, eax
    004788E6   >  56            push    esi
    004788E7   .  57            push    edi
    004788E8   .  BE A4894700   mov     esi, 004789A4                ;  ASCII 0E,"<UNREGISTERED>"

    ///////////////////////////////////////////////////////////////////////////////////////////////

    cmp     al, byte ptr [ecx+edx]       ;  //查找所有命令,定位关键位置

    ///////////////////////////////////////////////////////////////////////////////////////////////

    0047F5B4  |.  E8 6B35F8FF   call    00402B24
    0047F5B9  |.  8B15 04A94800 mov     edx, dword ptr [48A904]      ;  CrazyTet.00498CF4
    0047F5BF  |.  8902          mov     dword ptr [edx], eax
    0047F5C1  |.  A1 04A94800   mov     eax, dword ptr [48A904]
    0047F5C6  |.  8B00          mov     eax, dword ptr [eax]
    0047F5C8  |.  8B15 D4A64800 mov     edx, dword ptr [48A6D4]      ;  CrazyTet.0049AC78
    0047F5CE  |.  8B12          mov     edx, dword ptr [edx]
    0047F5D0  |.  8A0402        mov     al, byte ptr [edx+eax]
    0047F5D3  |.  8B15 04A94800 mov     edx, dword ptr [48A904]      ;  CrazyTet.00498CF4
    0047F5D9  |.  8B12          mov     edx, dword ptr [edx]
    0047F5DB  |.  8B0D 3CA74800 mov     ecx, dword ptr [48A73C]      ;  CrazyTet.0049AC7C
    0047F5E1  |.  8B09          mov     ecx, dword ptr [ecx]
    0047F5E3  |.  3A0411        cmp     al, byte ptr [ecx+edx]
    0047F5E6  |.  0F85 AC000000 jnz     0047F698
    0047F5EC  |.  A1 A0A74800   mov     eax, dword ptr [48A7A0]
    0047F5F1  |.  8B00          mov     eax, dword ptr [eax]
    0047F5F3  |.  E8 20C3F9FF   call    0041B918
    0047F5F8  |.  8BD8          mov     ebx, eax
    0047F5FA  |.  6A 01         push    1
    0047F5FC  |.  8BC3          mov     eax, ebx
    0047F5FE  |.  E8 AD7BF9FF   call    004171B0
    0047F603  |.  50            push    eax                          ; |hDC
    0047F604  |.  E8 2F73F8FF   call    <jmp.&gdi32.SetBkMode>       ; \SetBkMode
    0047F609  |.  8B43 0C       mov     eax, dword ptr [ebx+C]
    0047F60C  |.  BA 74F94700   mov     edx, 0047F974                ;  ASCII "Arial"
    0047F611  |.  E8 666AF9FF   call    0041607C
    0047F616  |.  8B43 0C       mov     eax, dword ptr [ebx+C]
    0047F619  |.  C740 1C 60000>mov     dword ptr [eax+1C], 60
    0047F620  |.  BA 13000000   mov     edx, 13
    0047F625  |.  E8 CA6AF9FF   call    004160F4
    0047F62A  |.  8B43 0C       mov     eax, dword ptr [ebx+C]
    0047F62D  |.  33D2          xor     edx, edx
    0047F62F  |.  E8 2068F9FF   call    00415E54
    0047F634  |.  68 84F94700   push    0047F984                     ;  ASCII "UNREGISTERED"
    0047F639  |.  BA 84F94700   mov     edx, 0047F984                ;  ASCII "UNREGISTERED"
    0047F63E  |.  8BC3          mov     eax, ebx
    0047F640  |.  E8 CB79F9FF   call    00417010
    0047F645  |.  BA D8000000   mov     edx, 0D8
    0047F64A  |.  2BD0          sub     edx, eax
    0047F64C  |.  D1FA          sar     edx, 1
    0047F64E  |.  79 03         jns     short 0047F653
    0047F650  |.  83D2 00       adc     edx, 0
    0047F653  |>  B9 50000000   mov     ecx, 50
    0047F658  |.  8BC3          mov     eax, ebx
    0047F65A  |.  E8 E178F9FF   call    00416F40
    0047F65F  |.  8B43 0C       mov     eax, dword ptr [ebx+C]
    0047F662  |.  BA FF000000   mov     edx, 0FF
    0047F667  |.  E8 E867F9FF   call    00415E54
    0047F66C  |.  68 84F94700   push    0047F984                     ;  ASCII "UNREGISTERED"
    0047F671  |.  BA 84F94700   mov     edx, 0047F984                ;  ASCII "UNREGISTERED"

    ///////////////////////////////////////////////////////////////////////////////////////////////

    0047C006   .  3A42 64       cmp     al, byte ptr [edx+64]        ;  //查找所有命令,定位关键位置
    0047C009   .  75 6C         jnz     short 0047C077
    0047C00B   .  8B83 E0020000 mov     eax, dword ptr [ebx+2E0]
    0047C011   .  8B10          mov     edx, dword ptr [eax]
    0047C013   .  FF92 B4000000 call    dword ptr [edx+B4]
    0047C019   .  84C0          test    al, al
    0047C01B   .  75 5A         jnz     short 0047C077
    0047C01D   .  6A 00         push    0
    0047C01F   .  8D4D FC       lea     ecx, dword ptr [ebp-4]
    0047C022   .  A1 60AA4800   mov     eax, dword ptr [48AA60]
    0047C027   .  8B00          mov     eax, dword ptr [eax]
    0047C029   .  BA A8C04700   mov     edx, 0047C0A8                ;  ASCII "r12"
    0047C02E   .  E8 C135F9FF   call    0040F5F4
    0047C033   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    0047C036   .  E8 A57EF8FF   call    00403EE0
    0047C03B   .  50            push    eax
    0047C03C   .  8D4D F8       lea     ecx, dword ptr [ebp-8]
    0047C03F   .  A1 60AA4800   mov     eax, dword ptr [48AA60]
    0047C044   .  8B00          mov     eax, dword ptr [eax]
    0047C046   .  BA B4C04700   mov     edx, 0047C0B4                ;  ASCII "m10"
    0047C04B   .  E8 A435F9FF   call    0040F5F4
    0047C050   .  8B45 F8       mov     eax, dword ptr [ebp-8]
    0047C053   .  E8 887EF8FF   call    00403EE0
    0047C058   .  8BD0          mov     edx, eax
    0047C05A   .  A1 74AA4800   mov     eax, dword ptr [48AA74]
    0047C05F   .  8B00          mov     eax, dword ptr [eax]
    0047C061   .  59            pop     ecx
    0047C062   .  E8 A9E8FCFF   call    0044A910                     ;  //tip

    ///////////////////////////////////////////////////////////////////////////////////////////////

    补丁数据:

    Patches
    地址       大小   状态      旧                                新                                注释
    00477E12     2.   激活        jnz     short 00477E7D            je      short 00477E7D
    00477EA2     2.   激活        jnz     short 00477F10            je      short 00477F10
    0047804F     2.   激活        jnz     short 004780BA            je      short 004780BA
    0047814B     2.   激活        jnz     short 004781B9            je      short 004781B9
    004788C8     2.   激活        jnz     short 0047891D            je      short 0047891D
    00478E93     2.   激活        jnz     short 00478F03            je      short 00478F03
    0047C009     2.   激活        jnz     short 0047C077            je      short 0047C077
    0047C3C9     2.   激活        jnz     short 0047C436            je      short 0047C436
    0047C7B1     2.   激活        jnz     short 0047C7C6            je      short 0047C7C6
    0047F5E6     6.   激活        jnz     0047F698                  je      0047F698
    00480472     6.   激活        jnz     00480524                  je      00480524
    00480E94     2.   激活        jnz     short 00480E9B            je      short 00480E9B
    00480EC0     2.   激活        je      short 00480EC7            jnz     short 00480EC7
    004817DD     2.   激活        jnz     short 00481804            je      short 00481804
    00481AB0     2.   激活        jnz     short 00481AC6            je      short 00481AC6
    00482091     6.   激活        jnz     00482135                  je      00482135
    0048327B     2.   激活        jnz     short 004832D4            je      short 004832D4
    0048380F     6.   激活        jnz     004838C1                  je      004838C1
    00485AD3     2.   激活        je      short 00485AE5            jnz     short 00485AE5
    00486672     2.   激活        jnz     short 004866CF            je      short 004866CF
    00486C5F     2.   激活        je      short 00486C77            jnz     short 00486C77            //jmp掉NAG
    00486CFD     2.   激活        jnz     short 00486D53            je      short 00486D53
    00487914     2.   激活        je      short 0048792C            jnz     short 0048792C

    ///////////////////////////////////////////////////////////////////////////////////////////////

    F12暂停回溯来到关键位置去除tip限制:

    00486CA8   .  8038 00       cmp byte ptr ds:[eax],0
    00486CAB      75 1F         jnz short CrazyTet.00486CCC
    00486CAD   .  A1 FCA94800   mov eax,dword ptr ds:[48A9FC]
    00486CB2   .  8B00          mov eax,dword ptr ds:[eax]
    00486CB4   .  8B10          mov edx,dword ptr ds:[eax]
    00486CB6   .  FF92 D8000000 call dword ptr ds:[edx+D8]               ;  /////
    00486CBC   .  A1 C0BD4900   mov eax,dword ptr ds:[49BDC0]
    00486CC1   .  E8 26BAFAFF   call CrazyTet.004326EC
    00486CC6   .  50            push eax                                 ; /hWnd
    00486CC7   .  E8 F400F8FF   call <jmp.&user32.SetForegroundWindow>   ; \SetForegroundWindow
    00486CCC   >  C3            retn

    ///////////////////////////////////////////////////////////////////////////////////////////////

    软件爆破总结:

    cmp     al, byte ptr [ecx+edx]       ;  //查找所有命令,定位关键位置,修改下面的跳转为相反跳转;

    cmp     al, byte ptr [edx+64]        ;  //查找所有命令,定位关键位置,修改下面的跳转为相反跳转;

    剩下的去NAG用F12暂停法回溯一下改跳转搞定。

    修改特征码应该很简单^_^

    软件点击退出的NAG没有去掉,软件官网还有其他的小游戏玩,点击这个窗口可以直接链接到其他的游戏,没事的时候可以练练手,所以就不去掉了。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2010-7-14 10:55:50 | 显示全部楼层
    本帖最后由 GGLHY 于 2010-7-14 14:21 编辑

    CRC校验失败,有调试服务存在
    005182B1    48              dec     eax
    005182B2    75 08           jnz     short 005182BC
    005182B4    FFB5 56D34000   push    dword ptr [ebp+40D356]
    005182BA    EB 1C           jmp     short 005182D8
    005182BC    40              inc     eax
    005182BD    75 08           jnz     short 005182C7
    005182BF    FFB5 3ED34000   push    dword ptr [ebp+40D33E]
    005182C5    EB 11           jmp     short 005182D8
    005182C7    40              inc     eax
    005182C8    75 08           jnz     short 005182D2
    005182CA    FFB5 4ED34000   push    dword ptr [ebp+40D34E]
    005182D0    EB 06           jmp     short 005182D8
    005182D2    FFB5 52D34000   push    dword ptr [ebp+40D352]
    005182D8    6A 00           push    0
    005182DA    FF95 E8D24000   call    dword ptr [ebp+40D2E8]
    005182E0    8B85 F2BA4000   mov     eax, dword ptr [ebp+40BAF2]      ; kernel32.ExitProcess

    用脱壳机脱掉。


    一、去注册NAG:
    用F12的方法,可以来到:
    0048697C   .  803D 64A64800>cmp     byte ptr [48A664], 0         ***这里的变量很可疑。经观察发现下面跳的话就不会出现注册NAG
    00486983   .  74 16         je      short 0048699B                          
    00486985   .  C605 64A64800>mov     byte ptr [48A664], 0
    0048698C   .  A1 14AA4800   mov     eax, dword ptr [48AA14]
    00486991   .  8B00          mov     eax, dword ptr [eax]
    00486993   .  8B10          mov     edx, dword ptr [eax]
    00486995   .  FF92 D8000000 call    dword ptr [edx+D8]
    0048699B   >  C3            retn
    所以,改动方法为:
    (1)cmp     byte ptr [48A664], 0
    改为
       cmp     byte ptr [48A664], 1

    (2)00486983   .  74 16         je      short 0048699B
    改为
       00486983   .  74 16         jmp     short 0048699B
    OK,经测试,去注册NAG成功!





    参考位于 CrazyTet:.WWPACK 于 0048A664
    地址       反汇编                                    注释
    0048697C   cmp     byte ptr [48A664], 0              (初始 CPU 选择)
    00486985   mov     byte ptr [48A664], 0              ds:[0048A664]=01




    二、去启动时tip的NAG
    同样用F12,在段首下断点,会停在:
    0044A900  /$  55             push    ebp             ***ebp=0012F430
    本地调用来自 0044AAED, 00477D23, 00477DB3, 00477F60, 0047805C, 00478DA4, 004797D0, 00479833, 00479864, 00479931, 0047BD86,

    0047C143, 0048184C, 00481E45, 00482FF1, 00485DA2, 00486107, 004863E9, 00486A68, <模块入口点>+13D
    同时看堆栈:
    0012F410   0047BD8B  返回到 CrazyTet.0047BD8B 来自 CrazyTet.0044A900

    0047BD28  |.  8B12           mov     edx, dword ptr [edx]
    0047BD2A  |.  3A42 64        cmp     al, byte ptr [edx+64]
    0047BD2D  |.  75 6C          jnz     short 0047BD9B                   ;  ***这里看看,改为JMP可以去掉提示未注册版本的NAG
    0047BD2F  |.  8B83 E0020000  mov     eax, dword ptr [ebx+2E0]
    0047BD35  |.  8B10           mov     edx, dword ptr [eax]
    0047BD37  |.  FF92 B4000000  call    dword ptr [edx+B4]
    0047BD3D  |.  84C0           test    al, al
    0047BD3F  |.  75 5A          jnz     short 0047BD9B                   ;  ***还有这里
    0047BD41  |.  6A 00          push    0
    0047BD43  |.  8D4D FC        lea     ecx, dword ptr [ebp-4]
    0047BD46  |.  A1 60AA4800    mov     eax, dword ptr [48AA60]
    0047BD4B  |.  8B00           mov     eax, dword ptr [eax]
    0047BD4D  |.  BA CCBD4700    mov     edx, 0047BDCC                    ;  ASCII "r12"
    0047BD52  |.  E8 8D38F9FF    call    0040F5E4
    0047BD57  |.  8B45 FC        mov     eax, dword ptr [ebp-4]
    0047BD5A  |.  E8 7181F8FF    call    00403ED0
    0047BD5F  |.  50             push    eax
    0047BD60  |.  8D4D F8        lea     ecx, dword ptr [ebp-8]
    0047BD63  |.  A1 60AA4800    mov     eax, dword ptr [48AA60]
    0047BD68  |.  8B00           mov     eax, dword ptr [eax]
    0047BD6A  |.  BA D8BD4700    mov     edx, 0047BDD8                    ;  ASCII "m10"
    0047BD6F  |.  E8 7038F9FF    call    0040F5E4
    0047BD74  |.  8B45 F8        mov     eax, dword ptr [ebp-8]
    0047BD77  |.  E8 5481F8FF    call    00403ED0
    0047BD7C  |.  8BD0           mov     edx, eax
    0047BD7E  |.  A1 74AA4800    mov     eax, dword ptr [48AA74]
    0047BD83  |.  8B00           mov     eax, dword ptr [eax]
    0047BD85  |.  59             pop     ecx
    0047BD86  |.  E8 75EBFCFF    call    0044A900
    0047BD8B  |.  B2 01          mov     dl, 1                            ;  ***返回到这
    0047BD8D  |.  8B83 E0020000  mov     eax, dword ptr [ebx+2E0]
    0047BD93  |.  8B08           mov     ecx, dword ptr [eax]
    0047BD95  |.  FF91 B8000000  call    dword ptr [ecx+B8]
    0047BD9B  |>  33C0           xor     eax, eax

    方法:
    0047BD2D  |.  75 6C          jnz     short 0047BD9B  
    将jnz改为JMP
    可以去掉提示未注册版本的NAG
    不过这样仅仅是把启动时候的NAG给去掉了,如果在程序的界面上点“tip”,人人会弹出NAG的。好,我们接着看:0047BD2A处的cmp     al, byte ptr [edx+64],这显然是对变量的值进行比较。我们右键,查找所有命令,全部将其F2,(我这里找到了3个)运行,将下面的条件跳跳转全部改为JMP。经试验,成功!

    三:文件名校验:

    用API插件断下,看堆栈:
    0012FF4C   00403A36  /CALL 到 ExitProcess 来自 CrazyTet.00403A31
    继续回溯到:
    00403A2C     /75 08         jnz     short 00403A36                     
    00403A2E  |. |8B06          |mov     eax, dword ptr [esi]
    00403A30  |. |50            |push    eax                             ; /ExitCode
    00403A31  |. |E8 5AD8FFFF   |call    <jmp.&kernel32.ExitProcess>     ; \ExitProcess
    接着回溯:
    00403954  /$  53            push    ebx                         ***本地调用/跳转来自 00403A7A, <模块入口点>+0DB, <模块入口点

    >+142
    00403955  |.  56            push    esi                         ;  CrazyTet.0048B7D4

    继续,一直来到:
    00487204  |.  A1 74A94800   mov     eax, dword ptr [48A974]
    00487209  |.  8B00          mov     eax, dword ptr [eax]
    0048720B  |.  BA 74774800   mov     edx, 00487774               ;  crazytet.exe
    00487210  |.  E8 07CCF7FF   call    00403E1C
    00487215  |.  74 05         je      short 0048721C              ***众里寻他千百度。。。
    00487217  |.  E8 38C7F7FF   call    00403954
    0048721C  |>  33C0          xor     eax, eax
    0048721E  |.  E8 5D6EFFFF   call    0047E080
    00487223  |.  8B0D BCA64800 mov     ecx, dword ptr [48A6BC]     ;  CrazyTet.004996C0

    00487215  |.  74 05         je      short 0048721C   
    把je改为jmp即可。



    四:标题栏后的(unregistered)
    004817D1   .  3A0411        cmp     al, byte ptr [ecx+edx]
    004817D4   .  75 14         jnz     short 004817EA                   ;跳吧
    004817D6   .  A1 CCA74800   mov     eax, dword ptr [48A7CC]
    004817DB   .  BA 081A4800   mov     edx, 00481A08                    ;   (unregistered)

    004817D4 的jnz     short 004817EA
    改为JMP


    右键,查找所有命令 cmp     al, byte ptr [ecx+edx],全部将其F2

    找到的命令
    地址       反汇编                                    注释
    00477CC7   cmp     al, byte ptr [ecx+edx]
    00477D57   cmp     al, byte ptr [ecx+edx]
    00477F04   cmp     al, byte ptr [ecx+edx]
    00478000   cmp     al, byte ptr [ecx+edx]
    0047877D   cmp     al, byte ptr [ecx+edx]
    00478D48   cmp     al, byte ptr [ecx+edx]
    0047C0EA   cmp     al, byte ptr [ecx+edx]
    0047C4D2   cmp     al, byte ptr [ecx+edx]
    0047F307   cmp     al, byte ptr [ecx+edx]
    00480193   cmp     al, byte ptr [ecx+edx]
    00480BB5   cmp     al, byte ptr [ecx+edx]
    00480BE1   cmp     al, byte ptr [ecx+edx]
    004814FE   cmp     al, byte ptr [ecx+edx]
    004817D1   cmp     al, byte ptr [ecx+edx]            (初始 CPU 选择)
    00481DB2   cmp     al, byte ptr [ecx+edx]
    00483530   cmp     al, byte ptr [ecx+edx]
    004857F4   cmp     al, byte ptr [ecx+edx]
    00486393   cmp     al, byte ptr [ecx+edx]
    0048762D   cmp     al, byte ptr [ecx+edx]

    初步判断,[ecx+edx]这个变量时判断是否注册的。

    004857F4   .  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***点注册,停在这里
    004857F7   .  74 10         je      short 00485809
    这里je可以nop掉即可。


    五、功能限制:
    快速保存:
    00483530  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***快速保存
    00483533      E9 AD000000   jmp     004835E5                         ;  ***改成jmp
    00483538      90            nop

    去游戏框中的unregistered水印:
    00480193  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***水印
    00480196      E9 AD000000   jmp     00480248                         ; ***改成jmp
    0048019B      90            nop

    游戏载入:
    00486393  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***游戏载入
    00486396      EB 5B         jmp     short 004863F3


    暂停后的继续:
    004814FE  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***暂停后的继续
    00481501      EB 25         jmp     short 00481528                   ;  ***改为jmp
    00481503  |.  A1 D8AA4800   mov     eax, dword ptr [48AAD8]


    游戏等级选择:
    00477F04  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***游戏等级选择
    00477F07  |.  75 69         jnz     short 00477F72                   ;  ***改为jmp


    颠倒选项、练习模式:
    00478000  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***颠倒选项,练习模式都在这里
    00478003  |.  75 6C         jnz     short 00478071                   ;  ***改为jmp

    新建游戏选项ok按钮:
    00477CC7  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***新建游戏选项ok按钮
    00477CCA      EB 69         jmp     short 00477D35                   ;  ***改为jmp
    这里还有:
    00477D57  |.  3A0411        cmp     al, byte ptr [ecx+edx]           ;  ***新建游戏选项ok按钮
    00477D5A  |.  75 6C         jnz     short 00477DC8                   ;  ***改为jmp

    消行:
    0047F307  |.  3A0411        cmp     al, byte ptr [ecx+edx]      ;  ***消行
    0047F30A  |.  0F85 AC000000 jnz     0047F3BC                    ;  ***jmp

    选人物肖像:
    0047C0EA  |.  3A0411        cmp     al, byte ptr [ecx+edx]      ;  ***选人物肖像
    0047C0ED  |.  75 6B         jnz     short 0047C15A              ;  ***改为jmp
    和这里:
    0047C4D2   .  3A0411        cmp     al, byte ptr [ecx+edx]      ;  ***选人物肖像
    0047C4D5   .  75 13         jnz     short 0047C4EA              ;  ***改为jmp
    还有这里:
    0047877D   .  3A0411        cmp     al, byte ptr [ecx+edx]      ;  ***选人物肖像
    00478780   .  75 53         jnz     short 004787D5              ;  ***改为jmp





    (上班抽空搞的)待续...
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-7-17 16:53:22 | 显示全部楼层
    bp ShowWindow 找到Nag
    00486C58    803D 64A64800 0>cmp byte ptr ds:[48A664],0
    00486C5F    74 16           je short 00486C77
    00486C61    C605 64A64800 0>mov byte ptr ds:[48A664],0
    00486C68    A1 14AA4800     mov eax,dword ptr ds:[48AA14]
    je改成jmp即可


    两个看起来关键的标志位,右键查找地址常量,每个命令下断后跑起,运行程序功能中断后,根据上下改一下代码就好了
    0047BFF4  |.  A1 D4A64800   mov eax,dword ptr ds:[48A6D4]
    0047BFF9  |.  8B00          mov eax,dword ptr ds:[eax]
    0047BFFB  |.  8A40 64       mov al,byte ptr ds:[eax+64]
    0047BFFE  |.  8B15 3CA74800 mov edx,dword ptr ds:[48A73C]            ;  CrazyTet.0049AC7C
    0047C004  |.  8B12          mov edx,dword ptr ds:[edx]

    去掉关闭程序弹出的窗体,思路也是bp ShowWindow然后回溯:
    004814C6    8B00            mov eax,dword ptr ds:[eax]
    004814C8    8B10            mov edx,dword ptr ds:[eax]
    004814CA    FF92 D8000000   call dword ptr ds:[edx+D8]  //nop
    004814D0    A1 7CAB4800     mov eax,dword ptr ds:[48AB7C]
    004814D5    8B00            mov eax,dword ptr ds:[eax]


    颠倒模式记分暗桩:
    0047F908   > \A1 C4A94800   mov eax,dword ptr ds:[48A9C4]
    0047F90D   .  8038 00       cmp byte ptr ds:[eax],0
    0047F910   .  74 19         je short 0047F92B          //jmp
    0047F912   .  A1 9CA94800   mov eax,dword ptr ds:[48A99C]
    思路:程序在执行暗桩之前会验证是否注册

    只能保存一次游戏暗桩:
    00486017    A1 70AB4800     mov eax,dword ptr ds:[48AB70]
    0048601C    8038 00         cmp byte ptr ds:[eax],0
    0048601F    74 67           je short 00486088           //jmp
    00486021    33D2            xor edx,edx
    思路:MessageBox即可
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-7-27 14:12:40 | 显示全部楼层
    NISY大,这一贴什么时候兑现!!难道就这样沉了?
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-8-14 19:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-8-10 10:09:38 | 显示全部楼层
    精品文章 学习了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-7-19 11:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-9-15 02:41:13 | 显示全部楼层
    太好了  正在找 ,占位学习!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表