• 标 题:破解ClockWise 3.03 (7千字)
  • 作 者:crazyedea
  • 时 间:2001-6-6 21:38:38
  • 链 接:http://bbs.pediy.com

软件名称:ClockWise 3.03
下载地址:http://software.wx88.net/down/InstallCW.exe
软件简介:一个结合了数字时钟、日历、提醒/备忘时钟、计时和程序调度的时间管理实用工具,它可以安排5个提醒和多达30个单独的程序事件,另外,它还可以通过Inter net或原子钟自动设置系统时间。你可以用它自动安排关机和重新启动的时间。
破解难度:简单
破解人:Edea  (QQ:3849036)

先用Fi分析,发现没有加壳(呵呵,占便宜了)
用WDASM反汇编:随便填注册码,点Register,弹出ERROR的对话框,在WDASM中查找ERROR。找到后往上看,发现是从0041b04a跳过来的,上面的0041b043可能就是关键CALL。

0177:0041B040  PUSH    ESI
0177:0041B041  MOV      ESI,ECX
0177:0041B043  CALL    0041B090          ----->值得注意,跟入
0177:0041B048  TEST    EAX,EAX
0177:0041B04A  JZ      0041B071            ------>跳则死
0177:0041B04C  MOV      ECX,ESI
0177:0041B04E  CALL    0041B2A0
0177:0041B053  PUSH    BYTE +40
0177:0041B055  PUSH    DWORD 00452920
0177:0041B05A  PUSH    DWORD 00452D58
0177:0041B05F  MOV      ECX,ESI
0177:0041B061  CALL    0043714E
0177:0041B066  PUSH    BYTE +00
0177:0041B068  MOV      ECX,ESI

打开注册对话框,填入:
User Name:Edea
Serial Number:300    (这个地方必须是300、1000、2000、5000等,后面再详细说明)
Registration:9876543210    (随便填一个)
打开TRW2000,下断点bpx 0041B043,点Register,被拦下。
按F8跟入
Call form 0041B043
0177:0041B090  SUB      ESP,BYTE +0C
0177:0041B093  PUSH    EBX
0177:0041B094  PUSH    EBP
0177:0041B095  MOV      EBP,ECX
0177:0041B097  PUSH    ESI
0177:0041B098  XOR      ECX,ECX
0177:0041B09A  XOR      ESI,ESI
0177:0041B09C  MOV      EAX,[EBP+60]            ------>将User Name放入EAX
0177:0041B09F  PUSH    EDI
0177:0041B0A0  MOV      EAX,[EAX-08]
0177:0041B0A3  TEST    EAX,EAX
0177:0041B0A5  MOV      [ESP+10],EAX
0177:0041B0A9  JZ      NEAR 0041B28B
0177:0041B0AF  MOV      EAX,[EBP+68]            ------->将Serial Number放入EAX
0177:0041B0B2  MOV      EDX,[EAX-08]
0177:0041B0B5  TEST    EDX,EDX
0177:0041B0B7  JNG      NEAR 0041B28B
0177:0041B0BD  MOV      EDX,[EBP+64]              ------>将Registration放入EDX
0177:0041B0C0  CMP      DWORD [EDX-08],BYTE +05
0177:0041B0C4  JNG      NEAR 0041B28B
0177:0041B0CA  PUSH    EAX
0177:0041B0CB  CALL    004249C3
0177:0041B0D0  MOV      EBX,EAX
0177:0041B0D2  ADD      ESP,BYTE +04
0177:0041B0D5  CMP      EBX,BYTE +01
0177:0041B0D8  JC      NEAR 0041B281
0177:0041B0DE  CMP      EBX,012C              ------>这几个地方要注意了,程序把
0177:0041B0E4  JNA      0041B0F2                    Serial Number分别与300,
0177:0041B0E6  CMP      EBX,03E8                    1000,2000,5000等比较,如果
0177:0041B0EC  JC      NEAR 0041B281                不是它们中的一个,就注册失败
0177:0041B0F2  CMP      EBX,07D0
0177:0041B0F8  JNA      0041B106
0177:0041B0FA  CMP      EBX,1388
0177:0041B100  JC      NEAR 0041B281
0177:0041B106  CMP      EBX,1B58
0177:0041B10C  JNA      0041B11A
0177:0041B10E  CMP      EBX,2767
0177:0041B114  JC      NEAR 0041B281
0177:0041B11A  CMP      EBX,2A16
0177:0041B120  JNA      0041B12E
0177:0041B122  CMP      EBX,2A53
0177:0041B128  JC      NEAR 0041B281
0177:0041B12E  CMP      EBX,2EE0
0177:0041B134  JNA      0041B142
0177:0041B136  CMP      EBX,4E20
0177:0041B13C  JC      NEAR 0041B281
0177:0041B142  CMP      EBX,5208
0177:0041B148  JA      NEAR 0041B281
0177:0041B14E  MOV      ECX,[ESP+10]
0177:0041B152  XOR      EAX,EAX
0177:0041B154  TEST    ECX,ECX
0177:0041B156  JNG      0041B175
0177:0041B158  MOV      EDX,[EBP+60]
0177:0041B15B  LEA      ECX,[EAX+01]
0177:0041B15E  MOV      EDI,[ESP+10]
0177:0041B162  MOVSX    EAX,BYTE [EDX+EAX]
0177:0041B166  IMUL    EAX,ECX
0177:0041B169  ADD      EAX,EDI
0177:0041B16B  ADD      ESI,EAX
0177:0041B16D  MOV      EAX,ECX
0177:0041B16F  MOV      ECX,EDI
0177:0041B171  CMP      EAX,ECX
0177:0041B173  JL      0041B15B
0177:0041B175  MOV      EDX,[ESP+10]
0177:0041B179  LEA      ECX,[ESP+14]            ----->中间很多循环,如果你不想做注册机
0177:0041B17D  IMUL    EDX,EBX                      就不用管它了
0177:0041B180  PUSH    BYTE +10
0177:0041B182  ADD      EDX,ESI
0177:0041B184  PUSH    ECX
0177:0041B185  PUSH    EDX
0177:0041B186  CALL    0042F30B
0177:0041B18B  MOV      DL,[ESP+20]
0177:0041B18F  ADD      ESP,BYTE +0C
0177:0041B192  TEST    DL,DL
0177:0041B194  JZ      0041B1B4
0177:0041B196  LEA      ESI,[ESP+14]
0177:0041B19A  MOVSX    EAX,DL
0177:0041B19D  PUSH    EAX
0177:0041B19E  CALL    00425F90
0177:0041B1A3  ADD      ESP,BYTE +04
0177:0041B1A6  MOV      [ESI],AL
0177:0041B1A8  MOV      DL,[ESI+01]
0177:0041B1AB  INC      ESI
0177:0041B1AC  TEST    DL,DL
0177:0041B1AE  JNZ      0041B19A
0177:0041B1B0  MOV      DL,[ESP+14]
0177:0041B1B4  LEA      EDI,[ESP+14]
0177:0041B1B8  OR      ECX,BYTE -01
0177:0041B1BB  XOR      EAX,EAX
0177:0041B1BD  REPNE SCASB
0177:0041B1BF  NOT      ECX
0177:0041B1C1  DEC      ECX
0177:0041B1C2  CMP      ECX,BYTE +04
0177:0041B1C5  JNC      0041B20C
0177:0041B1C7  LEA      EDI,[ESP+14]
0177:0041B1CB  OR      ECX,BYTE -01
0177:0041B1CE  XOR      EAX,EAX
0177:0041B1D0  REPNE SCASB
0177:0041B1D2  NOT      ECX
0177:0041B1D4  DEC      ECX
0177:0041B1D5  LEA      EDI,[ESP+14]
0177:0041B1D9  MOV      [ESP+ECX+15],AL
0177:0041B1DD  OR      ECX,BYTE -01
0177:0041B1E0  REPNE SCASB
0177:0041B1E2  NOT      ECX
0177:0041B1E4  DEC      ECX
0177:0041B1E5  INC      ECX
0177:0041B1E6  JZ      0041B1F3
0177:0041B1E8  MOV      DL,[ESP+ECX+13]
0177:0041B1EC  MOV      [ESP+ECX+14],DL
0177:0041B1F0  DEC      ECX
0177:0041B1F1  JNZ      0041B1E8
0177:0041B1F3  MOV      DL,30
0177:0041B1F5  LEA      EDI,[ESP+14]
0177:0041B1F9  OR      ECX,BYTE -01
0177:0041B1FC  XOR      EAX,EAX
0177:0041B1FE  MOV      [ESP+14],DL
0177:0041B202  REPNE SCASB
0177:0041B204  NOT      ECX
0177:0041B206  DEC      ECX
0177:0041B207  CMP      ECX,BYTE +04
0177:0041B20A  JC      0041B1C7
0177:0041B20C  MOV      AL,[ESP+17]
0177:0041B210  MOV      CL,[ESP+16]
0177:0041B214  MOV      [ESP+19],AL
0177:0041B218  MOV      [ESP+18],CL
0177:0041B21C  MOV      CL,[ESP+15]
0177:0041B220  MOV      AL,BL
0177:0041B222  MOV      BYTE [ESP+1A],00
0177:0041B227  MOV      [ESP+17],CL
0177:0041B22B  MOV      [ESP+16],DL
0177:0041B22F  IMUL    DL
0177:0041B231  CMP      AL,41
0177:0041B233  JC      0041B239
0177:0041B235  CMP      AL,5A
0177:0041B237  JNA      0041B247
0177:0041B239  ADD      AL,4A
0177:0041B23B  CMP      AL,4F
0177:0041B23D  JZ      0041B243
0177:0041B23F  CMP      AL,49
0177:0041B241  JNZ      0041B231
0177:0041B243  ADD      AL,4A
0177:0041B245  JMP      SHORT 0041B231
0177:0041B247  MOV      [ESP+14],AL
0177:0041B24B  MOV      AL,[ESP+10]
0177:0041B24F  IMUL    CL
0177:0041B251  CMP      AL,30
0177:0041B253  JC      0041B259
0177:0041B255  CMP      AL,39
0177:0041B257  JNA      0041B25D
0177:0041B259  ADD      AL,4A
0177:0041B25B  JMP      SHORT 0041B251
0177:0041B25D  MOV      [ESP+15],AL
0177:0041B261  MOV      EAX,[EBP+64]              ------>把假的Registration放入EAX
0177:0041B264  LEA      EDX,[ESP+14]              ------>把真的Registration放入EDX
0177:0041B268  PUSH    EAX
0177:0041B269  PUSH    EDX
0177:0041B26A  CALL    `KERNEL32!lstrcmpA`      ------>比较           
0177:0041B270  TEST    EAX,EAX
0177:0041B272  JNZ      0041B281                  ------>不相等吗?去死吧!
0177:0041B274  POP      EDI



正确的注册码:
User Name:Edea
Serial Number:300
Registration:F00880