• 标 题:一篇初级破解过程,很久没有动手了,大家不要笑我钝啊! (10千字)
  • 作 者:PowerBoy
  • 时 间:2003-1-11 22:08:39
  • 链 接:http://bbs.pediy.com

Nview, Nconvert & View2 v3.85
                              XnView v1.45
                              GFL SDK v1.85

注册名:powerboy
注册码:1720700947
注册码保存在:HKEY_CURRENT_USER\Software\XnView
我的同学买了一张盗版的盘中代的一个类似ACDSEE的看图软件,算法很普通不过由于很久没有动手破解软件了,就贴一篇吧!
Download :      http://perso.wanadoo.fr/pierre.g/download

0167:00452DAD  51                  PUSH      ECX
0167:00452DAE  68D1070000          PUSH      000007D1
0167:00452DB3  56                  PUSH      ESI
0167:00452DB4  FFD7                CALL      EDI
0167:00452DB6  8A442470            MOV      AL,[ESP+70]
0167:00452DBA  84C0                TEST      AL,AL
0167:00452DBC  0F843A010000        JZ        00452EFC
0167:00452DC2  8A442410            MOV      AL,[ESP+10]
0167:00452DC6  84C0                TEST      AL,AL
0167:00452DC8  0F842E010000        JZ        00452EFC
0167:00452DCE  8D542408            LEA      EDX,[ESP+08]
0167:00452DD2  8D442470            LEA      EAX,[ESP+70]
0167:00452DD6  52                  PUSH      EDX
0167:00452DD7  50                  PUSH      EAX
0167:00452DD8  E8633BFBFF          CALL      00406940------------>算法CALL
0167:00452DDD  8D4C2418            LEA      ECX,[ESP+18]
0167:00452DE1  51                  PUSH      ECX
0167:00452DE2  E8E44F0000          CALL      00457DCB------------>将输入的SN变成十六进制
0167:00452DE7  8B4C2414            MOV      ECX,[ESP+14]-------->正确的注册码
0167:00452DEB  83C40C              ADD      ESP,0C
0167:00452DEE  3BC8                CMP      ECX,EAX------------->输入SN的十六与注册码比较
0167:00452DF0  745D                JZ        00452E4F
0167:00452DF2  A16CA95600          MOV      EAX,[0056A96C]
0167:00452DF7  8D542430            LEA      EDX,[ESP+30]
0167:00452DFB  6A40                PUSH      40
0167:00452DFD  52                  PUSH      EDX
0167:00452DFE  6893130000          PUSH      00001393
0167:00452E03  50                  PUSH      EAX
0167:00452E04  FF153C555100        CALL      [USER32!LoadStringA]
0167:00452E0A  6A10                PUSH      10
0167:00452E0C  8D4C2434            LEA      ECX,[ESP+34]
0167:00452E10  68187A5600          PUSH      00567A18
0167:00452E15  51                  PUSH      ECX
0167:00452E16  56                  PUSH      ESI
0167:00452E17  FF15C4545100        CALL      [USER32!MessageBoxA]
0167:00452E1D  68D0070000          PUSH      000007D0
0167:00452E22  56                  PUSH      ESI
0167:00452E23  FF1550555100        CALL      [USER32!GetDlgItem]
0167:00452E29  50                  PUSH      EAX
0167:00452E2A  FF15B4545100        CALL      [USER32!SetFocus]
0167:00452E30  68187A5600          PUSH      00567A18
0167:00452E35  68D1070000          PUSH      000007D1
0167:00452E3A  56                  PUSH      ESI
0167:00452E3B  FF1540555100        CALL      [USER32!SetDlgItemTextA]
0167:00452E41  5F                  POP      EDI
0167:00452E42  B801000000          MOV      EAX,00000001
0167:00452E47  5E                  POP      ESI
0167:00452E48  81C468010000        ADD      ESP,00000168

========================================================================
0167:00406945  55                  PUSH      EBP
0167:00406946  56                  PUSH      ESI
0167:00406947  57                  PUSH      EDI
0167:00406948  8BFA                MOV      EDI,EDX
0167:0040694A  83C9FF              OR        ECX,-01
0167:0040694D  33C0                XOR      EAX,EAX
0167:0040694F  F2AE                REPNZ SCASB
0167:00406951  F7D1                NOT      ECX
0167:00406953  49                  DEC      ECX
0167:00406954  BEA0BC5400          MOV      ESI,0054BCA0
0167:00406959  8BE9                MOV      EBP,ECX
0167:0040695B  B905000000          MOV      ECX,00000005
0167:00406960  BF047A5600          MOV      EDI,00567A04
0167:00406965  F3A5                REPZ MOVSD
0167:00406967  8BF0                MOV      ESI,EAX
0167:00406969  7421                JZ        0040698C
       
        表1:0054BCA0 AA 89 C4 FE 46 78 F0 D0-03 E7 F7 FD F4 E7 B9 B5  ....Fx..........

0167:0040696B  8A0C16              MOV      CL,[EDX+ESI]
0167:0040696E  8AD9                MOV      BL,CL
0167:00406970  3298047A5600        XOR      BL,[EAX+00567A04]
0167:00406976  40                  INC      EAX
0167:00406977  83F805              CMP      EAX,05
0167:0040697A  881C16              MOV      [EDX+ESI],BL
0167:0040697D  8888037A5600        MOV      [EAX+00567A03],CL
0167:00406983  7502                JNZ      00406987
0167:00406985  33C0                XOR      EAX,EAX
0167:00406987  46                  INC      ESI
0167:00406988  3BF5                CMP      ESI,EBP
0167:0040698A  72DF                JB        0040696B
0167:0040698C  33FF                XOR      EDI,EDI
0167:0040698E  33C9                XOR      ECX,ECX
0167:00406990  85ED                TEST      EBP,EBP
0167:00406992  7626                JBE      004069BA

        表2:00567A09 78 F0 D0 03 E7 F7 FD F4-E7 B9 B5 1B C9 50 73 00  x............Ps.

0167:00406994  8A9F097A5600        MOV      BL,[EDI+00567A09]
0167:0040699A  8BF5                MOV      ESI,EBP
0167:0040699C  2BF1                SUB      ESI,ECX
0167:0040699E  4E                  DEC      ESI
0167:0040699F  8A0416              MOV      AL,[EDX+ESI]
0167:004069A2  32D8                XOR      BL,AL
0167:004069A4  47                  INC      EDI
0167:004069A5  881C16              MOV      [EDX+ESI],BL
0167:004069A8  8887087A5600        MOV      [EDI+00567A08],AL
0167:004069AE  83FF05              CMP      EDI,05
0167:004069B1  7502                JNZ      004069B5
0167:004069B3  33FF                XOR      EDI,EDI
0167:004069B5  41                  INC      ECX
0167:004069B6  3BCD                CMP      ECX,EBP
0167:004069B8  72DA                JB        00406994
0167:004069BA  33F6                XOR      ESI,ESI
0167:004069BC  33FF                XOR      EDI,EDI
0167:004069BE  85ED                TEST      EBP,EBP
0167:004069C0  7621                JBE      004069E3

        表3:00567A0E F7 FD F4 E7 B9 B5 1B C9-50 73 00 00 00 00 00 00  ........Ps......

0167:004069C2  8A0417              MOV      AL,[EDX+EDI]
0167:004069C5  8A8E0E7A5600        MOV      CL,[ESI+00567A0E]
0167:004069CB  32C8                XOR      CL,AL
0167:004069CD  46                  INC      ESI
0167:004069CE  880C17              MOV      [EDX+EDI],CL
0167:004069D1  88860D7A5600        MOV      [ESI+00567A0D],AL
0167:004069D7  83FE05              CMP      ESI,05
0167:004069DA  7502                JNZ      004069DE
0167:004069DC  33F6                XOR      ESI,ESI
0167:004069DE  47                  INC      EDI
0167:004069DF  3BFD                CMP      EDI,EBP
0167:004069E1  72DF                JB        004069C2
0167:004069E3  33FF                XOR      EDI,EDI
0167:004069E5  33C9                XOR      ECX,ECX
0167:004069E7  85ED                TEST      EBP,EBP
0167:004069E9  7626                JBE      00406A11

        表4:00567A13 B5 1B C9 50 73 00 00 00-00 00 00 00 00 06 00 00  ...Ps...........

0167:004069EB  8A9F137A5600        MOV      BL,[EDI+00567A13]
0167:004069F1  8BF5                MOV      ESI,EBP
0167:004069F3  2BF1                SUB      ESI,ECX
0167:004069F5  4E                  DEC      ESI
0167:004069F6  8A0416              MOV      AL,[EDX+ESI]
0167:004069F9  32D8                XOR      BL,AL
0167:004069FB  47                  INC      EDI
0167:004069FC  881C16              MOV      [EDX+ESI],BL
0167:004069FF  8887127A5600        MOV      [EDI+00567A12],AL
0167:00406A05  83FF05              CMP      EDI,05
0167:00406A08  7502                JNZ      00406A0C
0167:00406A0A  33FF                XOR      EDI,EDI
0167:00406A0C  41                  INC      ECX
0167:00406A0D  3BCD                CMP      ECX,EBP
0167:00406A0F  72DA                JB        004069EB
作最后的处理:
0167:00406A11  8B7C2418            MOV      EDI,[ESP+18]
0167:00406A15  33C0                XOR      EAX,EAX
0167:00406A17  85ED                TEST      EBP,EBP
0167:00406A19  C70700000000        MOV      DWORD PTR [EDI],00000000-->清理内存区域
0167:00406A1F  7617                JBE      00406A38
0167:00406A21  8BC8                MOV      ECX,EAX
0167:00406A23  83E103              AND      ECX,03
0167:00406A26  8A1C39              MOV      BL,[EDI+ECX]
0167:00406A29  8D3439              LEA      ESI,[EDI+ECX]
0167:00406A2C  8A0C10              MOV      CL,[EDX+EAX]
0167:00406A2F  02D9                ADD      BL,CL
0167:00406A31  40                  INC      EAX
0167:00406A32  3BC5                CMP      EAX,EBP
0167:00406A34  881E                MOV      [ESI],BL
0167:00406A36  72E9                JB        00406A21
0167:00406A38  5F                  POP      EDI
0167:00406A39  5E                  POP      ESI
0167:00406A3A  5D                  POP      EBP
0167:00406A3B  5B                  POP      EBX
0167:00406A3C  C3                  RET
---------------------------------------------------------------
算法整理:
表1:AA 89 C4 FE 46 ; 表2:78 F0 D0 03 E7 ; 表3:F7 FD F4 E7 B9 ; 表4:B5 1B C9 50 73;
步骤1:
powerboy:=70 6F 77 65 72 62 6F 79 XOR 表1(但当用户名大于5位时就用NAME[1] XOR NAME[6]以此类推)
70 XOR AA=DA 
6F XOR 89=E6
77 XOR C4=B3
65 XOR FE=9B
72 XOR 46=34
62 XOR 70=12
6F XOR 6F=00
79 XOR 77=0E
X1:=DA E6 B3 9B 34 12 00 0E
步骤2:
翻转X1 并XOR 表2:(但当X1大于5位时就用X1[1] XOR X1[6]以此类推)
0E XOR 78=76
00 XOR F0=F0
12 XOR D0=C2
34 XOR 03=37
9B XOR E7=7C
B3 XOR 0E=BD
E6 XOR 00=E6
DA XOR 12=C8
X2:=76 F0 C2 37 7C BD E6 C8
步骤3:
翻转X2 并XOR 表3:(但当X1大于5位时就用X2[1] XOR X2[6]以此类推)
C8 XOR F7=3F
E6 XOR FD=1B
BD XOR F4=49
7C XOR E7=9B
37 XOR B9=8E
C2 XOR C8=0A
F0 XOR E6=16
76 XOR BD=CB
X3:=3F 1B 49 9B 8E 0A 16 CB
步骤4:
翻转X3 并XOR 表4:(但当X1大于5位时就用X3[1] XOR X3[6]以此类推)
CB XOR B5=7E
16 XOR 1B=0D
0A XOR C9=C3
8E XOR 50=DE
9B XOR 73=E8
49 XOR CB=82
1B XOR 16=0D
3F XOR 0A=35
X4:=7E 0D C3 DE E8 82 0D 35
步骤5:
35 ADD 00=35
0D ADD 00=0D
82 ADD 00=82
E8 ADD 00=E8
DE ADD 35=113-->13
C3 ADD 0D=D0
0D ADD 82=8F
7E ADD E8=166-->66

X5:=13 D0 8F 66

668FD013--->变成十进制1720700947