您的位置:首页精文荟萃破解文章 → Publish-iT v2.4b -超级印刷工厂 算法分析

Publish-iT v2.4b -超级印刷工厂 算法分析

时间:2004/10/15 0:52:00来源:本站整理作者:蓝点我要评论(1)

 

 



软件名称: Publish-iT v2.4b -超级印刷工厂  


软件语言: 英文
界面预览:  
软件类型: 精品软件 / 图形处理 / 图像处理
运行环境: WinXP, Win2000, WinME
授权方式:
软件大小: 1.62 MB
软件等级:  
整理时间: 2003-4-4
开 发 商:  



软件简介
这程序能帮助你制作专业级的报纸、宣传册、广告单等等出版品,它结合了文书处理器、图形编辑软件、以及所有排版软体的优点于一身。你可以轻易的编排你的文字,加入任意的图片。「主页」的功能能让你的出版品有着一致性的外观。

下载地址:  http://www.ttdown.com/SoftView_3663.ht

【破解工具】:Ollydbg1.09 中文版
【过    程】:


呵呵,我们开工吧!唉!^-^我的水平很低,许多地方表达的有问题,烦请各位指教!
用ollydbg加载运行 ,在注册框中填注册试验码:789456 (软件提示只要5~6位数字)后下
bpx GetDlgItemTextA 后按OK键后不久就能来到这里:


00453AF4   CALL    DWORD PTR DS:[<&USER32.GetDlgIt>

; \GetDlgItemTextA  <---断点

00453AFA   PUSH    Publish.00495BD0     ;  ASCII "FARKEL"
00453AFF   LEA     EAX, [LOCAL.20]      ;  EAX<--0012E47C,(ASCII "789456")
00453B02   PUSH    EAX
00453B03   CALL    Publish.0047CB30    <---是否是死亡注册码 "FARKEL"

F8 ----------->
|
0047CB30  MOV     EDX, DWORD PTR SS:[ESP+4]  

; EDX<--0012E47C,(ASCII "789456")

0047CB34  MOV     ECX, DWORD PTR SS:[ESP+8]   ; 00495BD0  ASCII "FARKEL"
0047CB38  TEST    EDX, 3
0047CB3E  JNZ     SHORT Publish.0047CB7C
0047CB40  /MOV     EAX, DWORD PTR DS:[EDX]
0047CB42  |CMP     AL, BYTE PTR DS:[ECX]
0047CB44  |JNZ     SHORT Publish.0047CB74
0047CB46  |OR      AL, AL
0047CB48  |JE      SHORT Publish.0047CB70
0047CB4A  |CMP     AH, BYTE PTR DS:[ECX+1]
0047CB4D  |JNZ     SHORT Publish.0047CB74
0047CB4F  |OR      AH, AH
0047CB51  |JE      SHORT Publish.0047CB70
0047CB53  |SHR     EAX, 10
0047CB56  |CMP     AL, BYTE PTR DS:[ECX+2]
0047CB59  |JNZ     SHORT Publish.0047CB74
0047CB5B  |OR      AL, AL
0047CB5D  |JE      SHORT Publish.0047CB70
0047CB5F  |CMP     AH, BYTE PTR DS:[ECX+3]
0047CB62  |JNZ     SHORT Publish.0047CB74
0047CB64  |ADD     ECX, 4
0047CB67  |ADD     EDX, 4
0047CB6A  |OR      AH, AH
0047CB6C  \JNZ     SHORT Publish.0047CB40     ; 以上逐位比较
0047CB6E   MOV     EAX, EAX
0047CB70   XOR     EAX, EAX                   <--设标志为0
0047CB72   RETN
0047CB73   NOP
0047CB74   SBB     EAX, EAX
0047CB76   SHL     EAX, 1
0047CB78   INC     EAX                        <--设标志为非0
0047CB79   RETN
返回<-----------------

|
00453B08   ADD     ESP, 8
00453B0B   TEST    EAX, EAX                   <--判断
00453B0D   JNZ     SHORT Publish.00453B35    
00453B0F   MOV     WORD PTR DS:[49E280], 0
00453B18   MOV     BYTE PTR DS:[49E2F8], 0
00453B1F   PUSH    0                                    ; /Result = 0
00453B21   MOV     ECX, [ARG.1]                         ; |
00453B24   PUSH    ECX                                  ; |hWnd
00453B25   CALL    DWORD PTR DS:[<&USER32.EndDialog>]   ; \EndDialog
00453B2B   MOV     EAX, 1
00453B30   JMP     Publish.00453D24
00453B35   XOR     EDX, EDX
00453B37   MOV     DL, BYTE PTR DS:[49E2F8]
00453B3D   TEST    EDX, EDX
00453B3F   JE      SHORT Publish.00453B62
00453B41   MOVSX   EAX, WORD PTR DS:[49E280]
00453B48   TEST    EAX, EAX
00453B4A   JE      SHORT Publish.00453B62
00453B4C   PUSH    0                                    ; /Result = 0
00453B4E   MOV     ECX, [ARG.1]                         ; |
00453B51   PUSH    ECX                                  ; |hWnd
00453B52   CALL    DWORD PTR DS:[<&USER32.EndDialog>]   ; \EndDialog
00453B58   MOV     EAX, 1
00453B5D   JMP     Publish.00453D24
00453B62   CMP     DWORD PTR DS:[4A00B4], 8
00453B69   JLE     SHORT Publish.00453BA3
00453B6B   MOV     EDX, DWORD PTR DS:[4A00B4]
00453B71   ADD     EDX, 1
00453B74   MOV     DWORD PTR DS:[4A00B4], EDX
00453B7A   PUSH    0AF                                  ; /Arg2 = 000000AF
00453B7F   MOV     EAX, DWORD PTR DS:[49F0F4]           ; |
00453B84   PUSH    EAX                                  ; |Arg1 => 01310236
00453B85   CALL    Publish.00461D70                     ; \Publish.00461D70
00453B8A   ADD     ESP, 8
00453B8D   PUSH    0                                    ; /Result = 0
00453B8F   MOV     ECX, [ARG.1]                         ; |
00453B92   PUSH    ECX                                  ; |hWnd
00453B93   CALL    DWORD PTR DS:[<&USER32.EndDialog>]   ; \EndDialog
00453B99   MOV     EAX, 1
00453B9E   JMP     Publish.00453D24
00453BA3   MOV     BYTE PTR SS:[EBP-56], 0

以上会跳到这里:
|
00453BA7   LEA     EDX, [LOCAL.23]
00453BAA   PUSH    EDX                            
00453BAB   LEA     EAX, [LOCAL.20]    ; EAX<--0012E47C,(ASCII "789456")
00453BAE   PUSH    EAX                                  
00453BAF   CALL    Publish.00453EC2   ; 用试验码在表中取值 "789456"-->"6i56bm"
//我不知道这个字符串的作用,请大家看看.
F8 --------->
|
00453F3B   MOV     EDX, [ARG.1]             ;  EDX<--0012E47C,(ASCII "789456")
00453F3E   MOVSX   EAX, BYTE PTR DS:[EDX+3] ;  EAX<--DS:[EDX+3]=34 ('4') 第四位3]
00453F42   MOVSX   ECX, BYTE PTR DS:[EAX+495930];  ECX=DS:[EAX+495930]=39 ('9')
00453F49   SUB     ECX, 3
00453F4C   MOV     EDX, [ARG.2]
00453F4F   MOV     BYTE PTR DS:[EDX], CL      ;  CL=36 ('6')
00453F51   MOV     EAX, [ARG.1]               ;  EAX<--0012E47C,(ASCII "789456")
00453F54   MOVSX   ECX, BYTE PTR DS:[EAX]     ;  ECX<--DS:[EAX]=37 ('7') 第一位X]
00453F57   MOVSX   EDX, BYTE PTR DS:[ECX+495900] ;  EDX=DS:[ECX+495900]=68 ('h')
00453F5E   ADD     EDX, 1
00453F61   MOV     EAX, [ARG.2]
00453F64   MOV     BYTE PTR DS:[EAX+1], DL    ;  DL=69 ('i')
00453F67   MOV     ECX, [ARG.1]               ;  ECX<--0012E47C,(ASCII "789456")
00453F6A   MOVSX   EDX, BYTE PTR DS:[ECX+1]   ;  EDX=DS:[ECX+1]=38 ('8')
00453F6E   MOVSX   EAX, BYTE PTR DS:[EDX+495910] ;  EAX=DS:[EDX+495910]=34 ('4')
00453F75   ADD     EAX, 1
00453F78   MOV     ECX, [ARG.2]
00453F7B   MOV     BYTE PTR DS:[ECX+2], AL    ;  AL=35 ('5')
00453F7E   MOV     EDX, [ARG.1]               ;  EDX<--0012E47C,(ASCII "789456")
00453F81   MOVSX   EAX, BYTE PTR DS:[EDX+2]   ;  EAX=DS:[EDX+2]=39 ('9')
00453F85   MOVSX   ECX, BYTE PTR DS:[EAX+495920] ;  ECX=DS:[EAX+495920]=32 ('2')
00453F8C   ADD     ECX, 4
00453F8F   MOV     EDX, [ARG.2]
00453F92   MOV     BYTE PTR DS:[EDX+3], CL    ;  CL=36 ('6')
00453F95   MOV     EAX, [ARG.1]               ;  EAX<--0012E47C,(ASCII "789456")
00453F98   MOVSX   ECX, BYTE PTR DS:[EAX+5]   ;  ECX=DS:[EAX+5]=36 ('6')
00453F9C   MOVSX   EDX, BYTE PTR DS:[ECX+495950];  EDX=DS:[ECX+495950]=64 ('d')
00453FA3   SUB     EDX, 2
00453FA6   MOV     EAX, [ARG.2]
00453FA9   MOV     BYTE PTR DS:[EAX+4], DL    ;  DL=62 ('b')
00453FAC   MOV     ECX, [ARG.1]               ;  ECX<--0012E47C,(ASCII "789456")
00453FAF   MOVSX   EDX, BYTE PTR DS:[ECX+4]   ;  EDX=DS:[ECX+4]=35 ('5')
00453FB3   MOVSX   EAX, BYTE PTR DS:[EDX+495940];  EAX=DS:[EDX+495940]=68 ('h')
00453FBA   ADD     EAX, 5
00453FBD   MOV     ECX, [ARG.2]
00453FC0   MOV     BYTE PTR DS:[ECX+5], AL     ;  AL=6D ('m')
00453FC3   POP     EBP
00453FC4   RETN


--------------
|
内存数据:

00495930  61 7A 78 62 6B 69 67 68  azxbkigh
00495938  73 71 62 00 00 00 00 00  sqb.....
00495940  73 68 65 69 70 79 35 33  sheipy53
00495948  34 67 78 00 00 00 00 00  4gx.....
00495950  6C 6B 6A 76 64 71 64 72  lkjvdqdr
00495958  62 32 36 00 00 00 00 00  b26.....
00495960  77 69 78 35 39 71 61 63  wix59qac
00495968  66 67 65 00 00 00 00 00  fge.....
00495970  70 34 63 6B 71 68 62 6F  p4ckqhbo
00495978  62 62 79 00 00 00 00 00  bby.....
00495980  38 32 6E 63 74 71 64 61  82nctqda
00495988  76 69 64 00 52 63 00 00  vid.Rc..


返回<-----------------

|
00453BB4   ADD     ESP, 8
00453BB7   LEA     ECX, [LOCAL.20]            ;  ECX<--0012E47C,(ASCII "789456")
00453BBA   PUSH    ECX
00453BBB   CALL    Publish.0047E160           <---把它变成16进制lish.0

F8 -------------->
|
0047E0C0   PUSH    EBX
0047E0C1   PUSH    EBP
0047E0C2   PUSH    ESI
0047E0C3   PUSH    EDI
0047E0C4   MOV     EDI, DWORD PTR SS:[ESP+14] ;  EDI<--0012E47C,(ASCII "789456")
0047E0C8  /CMP     DWORD PTR DS:[49A664], 1
0047E0CF  |JLE     SHORT Publish.0047E0E2
0047E0D1  |XOR     EAX, EAX
0047E0D3  |PUSH    8
0047E0D5  |MOV     AL, BYTE PTR DS:[EDI]
0047E0D7  |PUSH    EAX
0047E0D8  |CALL    Publish.00485230
0047E0DD  |ADD     ESP, 8
0047E0E0  |JMP     SHORT Publish.0047E0F2
0047E0E2  |MOV     EDX, DWORD PTR DS:[49A458]  ;  Publish.0049A462
0047E0E8  |XOR     ECX, ECX
0047E0EA  |MOV     CL, BYTE PTR DS:[EDI]      

;  CL=DS:[EDI]=37 ('7')<--试验码的第一位

0047E0EC  |MOV     AL, BYTE PTR DS:[EDX+ECX*2]

;  AL=DS:[EDX+ECX*2]=84  EDX=49A462*  ECX=37

0047E0EF  |AND     EAX, 8
0047E0F2  |TEST    EAX, EAX
0047E0F4  |JE      SHORT Publish.0047E0F9
0047E0F6  |INC     EDI
0047E0F7  \JMP     SHORT Publish.0047E0C8
0047E0F9   XOR     EAX, EAX
0047E0FB   MOV     AL, BYTE PTR DS:[EDI]       ;  AL=DS:[EDI]=37 ('7')
0047E0FD   INC     EDI
0047E0FE   MOV     ESI, EAX
0047E100   CMP     ESI, 2D
0047E103   MOV     EBP, ESI
0047E105   JE      SHORT Publish.0047E10C
0047E107   CMP     ESI, 2B
0047E10A   JNZ     SHORT Publish.0047E113
0047E10C   XOR     ECX, ECX
0047E10E   MOV     CL, BYTE PTR DS:[EDI]
0047E110   INC     EDI
0047E111   MOV     ESI, ECX
0047E113   XOR     EBX, EBX
0047E115  /CMP     DWORD PTR DS:[49A664], 1
0047E11C  |JLE     SHORT Publish.0047E12B
0047E11E  |PUSH    4
0047E120  |PUSH    ESI
0047E121  |CALL    Publish.00485230
0047E126  |ADD     ESP, 8
0047E129  |JMP     SHORT Publish.0047E137
0047E12B  |MOV     EDX, DWORD PTR DS:[49A458]      ;  Publish.0049A462
0047E131  |MOV     AL, BYTE PTR DS:[EDX+ESI*2]
0047E134  |AND     EAX, 4
0047E137  |TEST    EAX, EAX
0047E139  |JE      SHORT Publish.0047E14B          ;  保证注册码是数字
0047E13B  |LEA     EAX, DWORD PTR DS:[EBX+EBX*4]
0047E13E  |XOR     ECX, ECX
0047E140  |MOV     CL, BYTE PTR DS:[EDI]           ;  CL=DS:[EDI]=38 ('8')
0047E142  |INC     EDI
0047E143  |LEA     EBX, DWORD PTR DS:[ESI+EAX*2-30];  EBX=DS:[ESI+EAX*2-30]=07...|==C0BD0
0047E147  |MOV     ESI, ECX                      //  把它变成16进制
0047E149  \JMP     SHORT Publish.0047E115        //  转变的方式是:前位*A+后一位
0047E14B   CMP     EBP, 2D
0047E14E   MOV     EAX, EBX
0047E150   JNZ     SHORT Publish.0047E154
0047E152   NEG     EAX
0047E154   POP     EDI
0047E155   POP     ESI
0047E156   POP     EBP
0047E157   POP     EBX
0047E158   RETN


Publish.0049A462 内存值:
|
0049A460        20 00 20 00 20 00     . . .
0049A468  20 00 20 00 20 00 20 00   . . . .
0049A470  20 00 20 00 28 00 28 00   . .(.(.
0049A478  28 00 28 00 28 00 20 00  (.(.(. .
0049A480  20 00 20 00 20 00 20 00   . . . .
0049A488  20 00 20 00 20 00 20 00   . . . .
0049A490  20 00 20 00 20 00 20 00   . . . .
0049A498  20 00 20 00 20 00 20 00   . . . .
0049A4A0  20 00 48 00 10 00 10 00   .H...
0049A4A8  10 00 10 00 10 00 10 00  ....
0049A4B0  10 00 10 00 10 00 10 00  ....
0049A4B8  10 00 10 00 10 00 10 00  ....
0049A4C0  10 00 84 00 84 00 84 00  .???
0049A4C8  84 00 84 00 84 00 84 00  ????
0049A4D0  84 00 84 00 84 00 10 00  ???.
0049A4D8  10 00 10 00 10 00 10 00  ....
0049A4E0  10 00 10 00 81 00 81 00  ..??
0049A4E8  81 00 81 00 81 00 81 00  ????
0049A4F0  01 00 01 00 01 00 01 00  ....
0049A4F8  01 00 01 00 01 00 01 00  ....
0049A500  01 00 01 00 01 00 01 00  ....
0049A508  01 00 01 00 01 00 01 00  ....
0049A510  01 00 01 00 01 00 01 00  ....
0049A518  10 00 10 00 10 00 10 00  ....
0049A520  10 00 10 00 82 00 82 00  ..??
0049A528  82 00 82 00 82 00 82 00  ????
0049A530  02 00 02 00 02 00 02 00  ....
0049A538  02 00 02 00 02 00 02 00  ....
0049A540  02 00 02 00 02 00 02 00  ....
0049A548  02 00 02 00 02 00 02 00  ....
0049A550  02 00 02 00 02 00 02 00  ....
0049A558  10 00 10 00 10 00 10 00  ....

以上计算的总结:注册码取值范围
1.第一个比较循环时用第二次计算的字符串的hex值*2作指针在以 0049A460 开始的内存中查表,得到的值 AND 8 ,比较得数如果是0就到第二个比较循环.
2.第二个比较循环用第二次计算的字符串的hex值*2作指针在以 0049A460 开始的内存中查表,得到的值 AND 4 ,比较得数如果是0就OVER.即查表得到的值 AND 4 不能=0
经过计算可以知道表中 0049A460 开始的十个值-'84 '符合条件,第一个84的偏移量=60h那么第二次计算的字符串的hex值的范围是60/2=30到3A即第二次计算的字符串的范围是0~9.

(以上是一个定式)

这样就能保证注册码是数字 .



返回<------------
|
00453BC0   ADD     ESP, 4
00453BC3   MOV     [LOCAL.24], EAX             ;  EAX=C0BD0  <--试验码变成的16进制
00453BC6   MOV     EDX, [LOCAL.24]             ;  EDX=C0BD0  <--试验码变成的16进制
00453BC9   ADD     EDX, 3D0C09                

;  EDX=C0BD0+3D0C09=4917D9 (注册码的第一次变换)

00453BCF   PUSH    EDX                                  
00453BD0   CALL    Publish.00453D2A            <---第1部分比较(去掉21天限制的比较)
00453BD5   ADD     ESP, 4
00453BD8   AND     EAX, 0FF                    <---取低位
00453BDD   TEST    EAX, EAX                    <---根据标志判断跳转
00453BDF   JE      SHORT Publish.00453C20
00453BE1   CALL    Publish.00453FC5
00453BE6   ADD     EAX, 15B30
00453BEB   MOV     DWORD PTR DS:[49EFF8], EAX
00453BF0   MOV     WORD PTR DS:[49E280], 1
00453BF9   PUSH    8167                                
00453BFE   MOV     EAX, [ARG.1]                      
00453C01   PUSH    EAX                                
00453C02   CALL    Publish.00461D8E           <---去除21天限制的提示            
00453C07   ADD     ESP, 8
00453C0A   PUSH    0                              
00453C0C   MOV     ECX, [ARG.1]                  
00453C0F   PUSH    ECX                                
00453C10   CALL    DWORD PTR DS:[<&USER32.EndDialog>]
00453C16   MOV     EAX, 1
00453C1B   JMP     Publish.00453D24
00453C20   MOV     EDX, [LOCAL.24]             ;  EDX=C0BD0<--试验码变成的16进制
00453C23   ADD     EDX, 3D0A43                    

;  EDX=C0BD0+3D0A43=  (注册码的第二次变换)

00453C29   PUSH    EDX                            ;  EDX= 491613
00453C2A   CALL    Publish.00453D2A        <---第二部分比较(去掉21天限制的比较)
00453C2F   ADD     ESP, 4
00453C32   AND     EAX, 0FF                 <---取低位
00453C37   TEST    EAX, EAX                 <---根据标志判断跳转
00453C39   JE      SHORT Publish.00453C81
00453C3B   MOV     BYTE PTR DS:[49E2F8], 1
00453C42   CALL    Publish.00453FC5
00453C47   ADD     EAX, 15194
00453C4C   MOV     DWORD PTR DS:[49EFF8], EAX
00453C51   MOV     WORD PTR DS:[49E280], 1
00453C5A   PUSH    8168                              
00453C5F   MOV     EAX, [ARG.1]                      
00453C62   PUSH    EAX                              
00453C63   CALL    Publish.00461D8E            <---注册成功正确的提示框
00453C68   ADD     ESP, 8
00453C6B   PUSH    0                                  
00453C6D   MOV     ECX, [ARG.1]                        
00453C70   PUSH    ECX                                
00453C71   CALL    DWORD PTR DS:[<&USER32.EndDialog>]  
00453C77   MOV     EAX, 1
00453C7C   JMP     Publish.00453D24
00453C81   MOV     EDX, [LOCAL.24]          ;  EDX=C0BD0<--试验码变成的16进制
00453C84   ADD     EDX, 3D09A7                    

;  EDX=C0BD0+3D09A7  (注册码的第三次变换)

00453C8A   PUSH    EDX                        ;  EDX= 00491577
00453C8B   CALL    Publish.00453D2A           <---第3部分比较(Pro版的比较)
00453C90   ADD     ESP, 4
00453C93   AND     EAX, 0FF                   <---取低位
00453C98   TEST    EAX, EAX                   <---根据标志判断跳转
00453C9A   JE      SHORT Publish.00453D03
00453C9C   MOVSX   EAX, WORD PTR DS:[49E280]
00453CA3   CMP     EAX, 1
00453CA6   JE      SHORT Publish.00453CC0      <---根据标志判断跳转
00453CA8   PUSH    8169                                
00453CAD   MOV     ECX, [ARG.1]                        
00453CB0   PUSH    ECX                                
00453CB1   CALL    Publish.00461D8E             <---OVER
00453CB6   ADD     ESP, 8
00453CB9   MOV     EAX, 1
00453CBE   JMP     SHORT Publish.00453D24
00453CC0   MOV     BYTE PTR DS:[49E2F8], 1
00453CC7   CALL    Publish.00453FC5                
00453CCC   ADD     EAX, 15194
00453CD1   MOV     DWORD PTR DS:[49EFF8], EAX
00453CD6   MOV     WORD PTR DS:[49E280], 1
00453CDF   PUSH    8168                              
00453CE4   MOV     EDX, [ARG.1]                        
00453CE7   PUSH    EDX                              
00453CE8   CALL    Publish.00461D8E            <---Pro版注册成功正确的提示框
00453CED   ADD     ESP, 8
00453CF0   PUSH    0                                  
00453CF2   MOV     EAX, [ARG.1]                      
00453CF5   PUSH    EAX                                
00453CF6   CALL    DWORD PTR DS:[<&USER32.EndDialog>]
00453CFC   MOV     EAX, 1
00453D01   JMP     SHORT Publish.00453D24
00453D03   PUSH    0AF                                
00453D08   MOV     ECX, DWORD PTR DS:[49F0F4]        
00453D0E   PUSH    ECX                                
00453D0F   CALL    Publish.00461D70                <---OVER
00453D14   ADD     ESP, 8
00453D17   MOV     EAX, 1
00453D1C   JMP     SHORT Publish.00453D24
00453D1E   XOR     EAX, EAX
00453D20   JMP     SHORT Publish.00453D24
00453D22   XOR     EAX, EAX
00453D24   MOV     ESP, EBP
00453D26   POP     EBP
00453D27   RETN    10

====================================================
CALL    Publish.00453D2A  <---重要部分计算和注册码比较的地方
|
00453D2A   PUSH    EBP
00453D2B   MOV     EBP, ESP
00453D2D   SUB     ESP, 14
00453D30   CALL    Publish.00453DF2

F8 ---------->
|
00453DF2   PUSH    EBP
00453DF3   MOV     EBP, ESP
00453DF5   SUB     ESP, 10
00453DF8   MOV     [LOCAL.4], 0
00453DFF   MOV     [LOCAL.3], 0
00453E06   JMP     SHORT Publish.00453E11
00453E08  /MOV     EAX, [LOCAL.3]
00453E0B  |ADD     EAX, 1
00453E0E  |MOV     [LOCAL.3], EAX
00453E11   CMP     [LOCAL.3], 0C
00453E15  |JGE     SHORT Publish.00453E49
00453E17  |PUSH    3
00453E19  |MOV     ECX, [LOCAL.3]
00453E1C  |MOV     EDX, DWORD PTR DS:[ECX*4+495BD8]
00453E23  |PUSH    EDX
00453E24  |PUSH    Publish.004958E8                    ;  ASCII "Apr  8 2003"
00453E29  |CALL    Publish.0047B4A0
00453E2E  |ADD     ESP, 0C
00453E31  |TEST    EAX, EAX
00453E33  |JNZ     SHORT Publish.00453E37
00453E35  |JMP     SHORT Publish.00453E49
00453E37  |MOV     EAX, [LOCAL.3]
00453E3A  |MOV     ECX, [LOCAL.4]
00453E3D  |ADD     ECX, DWORD PTR DS:[EAX*4+495900]
00453E44  |MOV     [LOCAL.4], ECX
00453E47  \JMP     SHORT Publish.00453E08
00453E49   PUSH    Publish.004958EC                     ;  ASCII " 8 2003"
00453E4E   CALL    Publish.0047E160                     ;  EAX=8 EBX=68CA38
00453E53   ADD     ESP, 4
00453E56   MOV     EDX, [LOCAL.4]                       ;  EDX=5A
00453E59   ADD     EDX, EAX                             ;  EDX=5A+8=62
00453E5B   MOV     [LOCAL.4], EDX
00453E5E   PUSH    Publish.004958EE                     ;  ASCII " 2003"
00453E63   CALL    Publish.0047E160                     ;  把"2003"变成16进制
00453E68   ADD     ESP, 4
00453E6B   SUB     EAX, 7B2                             ;  EAX=7D3-7B2=21
00453E70   MOV     [LOCAL.1], EAX                       ;  EAX=21
00453E73   MOV     EAX, [LOCAL.1]                       ;  EAX=21
00453E76   IMUL    EAX, EAX, 16D                        ;  EAX=21*16D=2F0D
00453E7C   MOV     ECX, [LOCAL.4]                       ;  ECX=62
00453E7F   ADD     ECX, EAX                             ;  ECX=2F0D+62=2F6F
00453E81   MOV     EAX, [LOCAL.1]                       ;  EAX=21
00453E84   CDQ
00453E85   AND     EDX, 3
00453E88   ADD     EAX, EDX
00453E8A   SAR     EAX, 2                               ;  EAX=8
00453E8D   ADD     ECX, EAX                             ;  ECX=2F6F+8=2F77
00453E8F   MOV     [LOCAL.4], ECX                       ;  ECX=2F6F+8=2F77
00453E92   MOV     EDX, [LOCAL.4]                       ;  EDX=2F6F+8=2F77
00453E95   SUB     EDX, 1
00453E98   IMUL    EDX, EDX, 18                         ;  EDX=2F76*18=
00453E9B   IMUL    EDX, EDX, 0E10                       ;  EDX=47310*E10=
00453EA1   MOV     [LOCAL.4], EDX                       ;  EDX=3E92110
00453EA4   LEA     EAX, [LOCAL.2]
00453EA7   PUSH    EAX
00453EA8   CALL    Publish.0047C6A0
00453EAD   ADD     ESP, 4
00453EB0   MOV     ECX, [LOCAL.2]                       ;  ECX=3E96D071
00453EB3   CMP     ECX, [LOCAL.4]                       ;  SS:[12E42C]=3E921100
00453EB6   JGE     SHORT Publish.00453EBC
00453EB8   XOR     AL, AL
00453EBA   JMP     SHORT Publish.00453EBE
00453EBC   MOV     AL, 1
00453EBE   MOV     ESP, EBP
00453EC0   POP     EBP
00453EC1   RETN

这个call是把字符 ASCII "Apr  8 2003"计算

返回<-----------
|
00453D35   AND     EAX, 0FF
00453D3A   TEST    EAX, EAX
00453D3C   JNZ     SHORT Publish.00453D45
00453D3E   XOR     AL, AL
00453D40   JMP     Publish.00453DEE
00453D45   LEA     EAX, [LOCAL.1]
00453D48   PUSH    EAX
00453D49   CALL    Publish.0047C6A0      <----计算参数并传送到内存特定的地址中
00453D4E   ADD     ESP, 4
00453D51   LEA     ECX, [LOCAL.1]
00453D54   PUSH    ECX
00453D55   CALL    Publish.0047E170      <----计算参数并传送到内存特定的地址中
00453D5A   ADD     ESP, 4
00453D5D   MOV     [LOCAL.4], EAX                       ;  EAX=4A1EC0
00453D60   MOV     EDX, [LOCAL.4]                       ;  EDX=4A1EC0
00453D63   MOV     EAX, DWORD PTR DS:[EDX+1C]
00453D66   CDQ
00453D67   MOV     ECX, 7
00453D6C   IDIV    ECX
00453D6E   ADD     EAX, 1
00453D71   MOV     [LOCAL.3], EAX
00453D74   MOV     EDX, [LOCAL.4]
00453D77   MOV     EAX, DWORD PTR DS:[EDX+14]           ;  EAX=67 ('g')
00453D7A   MOV     ECX, [LOCAL.3]
00453D7D   LEA     EDX, DWORD PTR DS:[EAX+ECX*4+76C]    

;  EDX=80F <---计算的基本参数(通过上面计算得到的)

00453D84   MOV     [LOCAL.2], EDX
00453D87   MOV     EAX, [LOCAL.2]
00453D8A   IMUL    EAX, [LOCAL.2]
00453D8E   MOV     [LOCAL.5], EAX          ;  EAX=40F0E1
00453D91   MOV     ECX, [LOCAL.2]          ;  ECX=80F
00453D94   IMUL    ECX, [LOCAL.2]          ;  ECX=ECX*ECX      
00453D98   CMP     [ARG.1], ECX                        

;  SS:[12E460]=4917D9 <--试验码计算的值     ECX=40F0E1(第一固定值)

00453D9B   JNZ     SHORT Publish.00453DA1
00453D9D   MOV     AL, 1                   <---设成功标志
00453D9F   JMP     SHORT Publish.00453DEE
00453DA1   MOV     EDX, [LOCAL.2]
00453DA4   ADD     EDX, 4                  ;  EDX=80F+4=813
00453DA7   MOV     [LOCAL.2], EDX
00453DAA   MOV     EAX, [LOCAL.2]    
00453DAD   IMUL    EAX, [LOCAL.2]          ;  EAX=EAX*EAX
00453DB1   CMP     [ARG.1], EAX                        

;  SS:[12E460]=4917D9 <--试验码计算的值    EAX=413169(第二固定值)

00453DB4   JNZ     SHORT Publish.00453DBA
00453DB6   MOV     AL, 1                   <---设成功标志
00453DB8   JMP     SHORT Publish.00453DEE
00453DBA   MOV     ECX, [LOCAL.2]
00453DBD   SUB     ECX, 8                   ;  ECX=813-8=80B
00453DC0   MOV     [LOCAL.2], ECX
00453DC3   MOV     EDX, [LOCAL.2]
00453DC6   IMUL    EDX, [LOCAL.2]           ;  EDX=EDX*EDX
00453DCA   CMP     [ARG.1], EDX                        

;  SS:[12E460]=4917D9 <--试验码计算的值     EDX=40B079(第三固定值)

00453DCD   JNZ     SHORT Publish.00453DD3
00453DCF   MOV     AL, 1                   <---设成功标志
00453DD1   JMP     SHORT Publish.00453DEE
00453DD3   MOV     EAX, [LOCAL.2]
00453DD6   SUB     EAX, 4                   ;  EAX=80D-4=809
00453DD9   MOV     [LOCAL.2], EAX
00453DDC   MOV     ECX, [LOCAL.2]
00453DDF   IMUL    ECX, [LOCAL.2]           ;  ECX=ECX*ECX
00453DE3   CMP     [ARG.1], ECX                        

;  SS:[12E460]=4917D9 <--试验码计算的值   ECX=407031(第四固定值)

00453DE6   JNZ     SHORT Publish.00453DEC
00453DE8   MOV     AL, 1                    <---设成功标志
00453DEA   JMP     SHORT Publish.00453DEE
00453DEC   XOR     AL, AL
00453DEE   MOV     ESP, EBP
00453DF0   POP     EBP
00453DF1   RETN

****************************************

以下是基本参数计算的地方,过于复杂.不过得到的值是固定的所以就不分析了
|
0047C742  |>  8B5424 00     MOV     EDX, DWORD PTR SS:[ESP]
0047C746  |.  8B4C24 04     MOV     ECX, DWORD PTR SS:[ESP+4]
0047C74A  |.  8915 C81B4A00 MOV     DWORD PTR DS:[4A1BC8], EDX
0047C750  |.  8B5424 08     MOV     EDX, DWORD PTR SS:[ESP+8]
0047C754  |.  890D CC1B4A00 MOV     DWORD PTR DS:[4A1BCC], ECX
0047C75A  |.  8B4C24 0C     MOV     ECX, DWORD PTR SS:[ESP+C]
0047C75E  |.  A3 C01B4A00   MOV     DWORD PTR DS:[4A1BC0], EAX
0047C763  |.  8915 D01B4A00 MOV     DWORD PTR DS:[4A1BD0], EDX
0047C769  |.  890D D41B4A00 MOV     DWORD PTR DS:[4A1BD4], ECX
0047C76F  |>  8B5424 1C     MOV     EDX, DWORD PTR SS:[ESP+1C]
0047C773  |.  8B4C24 18     MOV     ECX, DWORD PTR SS:[ESP+18]
0047C777  |.  50            PUSH    EAX
0047C778  |.  8B4424 1E     MOV     EAX, DWORD PTR SS:[ESP+1E]
0047C77C  |.  81E2 FFFF0000 AND     EDX, 0FFFF
0047C782  |.  25 FFFF0000   AND     EAX, 0FFFF
0047C787  |.  52            PUSH    EDX
0047C788  |.  8B5424 1E     MOV     EDX, DWORD PTR SS:[ESP+1E]
0047C78C  |.  81E1 FFFF0000 AND     ECX, 0FFFF
0047C792  |.  50            PUSH    EAX
0047C793  |.  8B4424 1E     MOV     EAX, DWORD PTR SS:[ESP+1E]
0047C797  |.  51            PUSH    ECX
0047C798  |.  8B4C24 20     MOV     ECX, DWORD PTR SS:[ESP+20]
0047C79C  |.  81E2 FFFF0000 AND     EDX, 0FFFF
0047C7A2  |.  25 FFFF0000   AND     EAX, 0FFFF
0047C7A7  |.  52            PUSH    EDX
0047C7A8  |.  81E1 FFFF0000 AND     ECX, 0FFFF
0047C7AE  |.  50            PUSH    EAX
0047C7AF  |.  51            PUSH    ECX
0047C7B0  |.  E8 1B810000   CALL    Publish.004848D0
0047C7B5  |.  8B8C24 EC0000>MOV     ECX, DWORD PTR SS:[ESP+EC]
0047C7BC  |.  83C4 1C       ADD     ESP, 1C
0047C7BF  |.  85C9          TEST    ECX, ECX
0047C7C1  |.  74 02         JE      SHORT Publish.0047C7C5
0047C7C3  |.  8901          MOV     DWORD PTR DS:[ECX], EAX
0047C7C5  |>  81C4 CC000000 ADD     ESP, 0CC
0047C7CB  \.  C3            RETN


00487330  /$  53            PUSH    EBX
00487331  |.  8B5C24 08     MOV     EBX, DWORD PTR SS:[ESP+8]
00487335  |.  56            PUSH    ESI
00487336  |.  33F6          XOR     ESI, ESI
00487338  |.  8B0B          MOV     ECX, DWORD PTR DS:[EBX]
0048733A  |.  85C9          TEST    ECX, ECX
0048733C  |.  7D 05         JGE     SHORT Publish.00487343
0048733E  |.  33C0          XOR     EAX, EAX
00487340  |.  5E            POP     ESI
00487341  |.  5B            POP     EBX
00487342  |.  C3            RETN
00487343  |>  B8 792D0311   MOV     EAX, 11032D79
00487348  |.  57            PUSH    EDI
00487349  |.  F7E9          IMUL    ECX
0048734B  |.  C1FA 17       SAR     EDX, 17
0048734E  |.  8BC2          MOV     EAX, EDX
00487350  |.  55            PUSH    EBP
00487351  |.  C1E8 1F       SHR     EAX, 1F
00487354  |.  03D0          ADD     EDX, EAX
00487356  |.  8BC2          MOV     EAX, EDX
00487358  |.  69C0 80E079F8 IMUL    EAX, EAX, F879E080
0048735E  |.  03C8          ADD     ECX, EAX
00487360  |.  8D0495 460000>LEA     EAX, DWORD PTR DS:[EDX*4+46]
00487367  |.  81F9 8033E101 CMP     ECX, 1E13380
0048736D  |.  7C 2C         JL      SHORT Publish.0048739B
0048736F  |.  81E9 8033E101 SUB     ECX, 1E13380
00487375  |.  40            INC     EAX
00487376  |.  81F9 8033E101 CMP     ECX, 1E13380
0048737C  |.  7C 1D         JL      SHORT Publish.0048739B
0048737E  |.  81E9 8033E101 SUB     ECX, 1E13380
00487384  |.  40            INC     EAX
00487385  |.  81F9 0085E201 CMP     ECX, 1E28500
0048738B  |.  7C 09         JL      SHORT Publish.00487396
0048738D  |.  40            INC     EAX
0048738E  |.  81E9 0085E201 SUB     ECX, 1E28500
00487394  |.  EB 05         JMP     SHORT Publish.0048739B
00487396  |>  BE 01000000   MOV     ESI, 1
0048739B  |>  A3 D41E4A00   MOV     DWORD PTR DS:[4A1ED4], EAX
004873A0  |.  B8 07452EC2   MOV     EAX, C22E4507
004873A5  |.  F7E9          IMUL    ECX
004873A7  |.  8BC2          MOV     EAX, EDX
004873A9  |.  BF F0A94900   MOV     EDI, Publish.0049A9F0
004873AE  |.  03C1          ADD     EAX, ECX
004873B0  |.  C1F8 10       SAR     EAX, 10
004873B3  |.  8BD0          MOV     EDX, EAX
004873B5  |.  C1EA 1F       SHR     EDX, 1F
004873B8  |.  03C2          ADD     EAX, EDX
004873BA  |.  8BD0          MOV     EDX, EAX
004873BC  |.  A3 DC1E4A00   MOV     DWORD PTR DS:[4A1EDC], EAX
004873C1  |.  C1E2 04       SHL     EDX, 4
004873C4  |.  2BD0          SUB     EDX, EAX
004873C6  |.  F7DA          NEG     EDX
004873C8  |.  8D1492        LEA     EDX, DWORD PTR DS:[EDX+EDX*4]
004873CB  |.  8D14D2        LEA     EDX, DWORD PTR DS:[EDX+EDX*8]
004873CE  |.  C1E2 07       SHL     EDX, 7
004873D1  |.  03CA          ADD     ECX, EDX
004873D3  |.  85F6          TEST    ESI, ESI
004873D5  |.  75 05         JNZ     SHORT Publish.004873DC
004873D7  |.  BF 28AA4900   MOV     EDI, Publish.0049AA28
004873DC  |>  8B6F 04       MOV     EBP, DWORD PTR DS:[EDI+4]
004873DF  |.  8D77 04       LEA     ESI, DWORD PTR DS:[EDI+4]
004873E2  |.  3BE8          CMP     EBP, EAX
004873E4  |.  BA 01000000   MOV     EDX, 1
004873E9  |.  7D 0B         JGE     SHORT Publish.004873F6
004873EB  |>  8B6E 04       /MOV     EBP, DWORD PTR DS:[ESI+4]
004873EE  |.  83C6 04       |ADD     ESI, 4
004873F1  |.  42            |INC     EDX
004873F2  |.  3BE8          |CMP     EBP, EAX
004873F4  |.^ 7C F5         \JL      SHORT Publish.004873EB
004873F6  |>  8B6C97 FC     MOV     EBP, DWORD PTR DS:[EDI+EDX*4-4]
004873FA  |.  4A            DEC     EDX
004873FB  |.  2BC5          SUB     EAX, EBP
004873FD  |.  8915 D01E4A00 MOV     DWORD PTR DS:[4A1ED0], EDX
00487403  |.  A3 CC1E4A00   MOV     DWORD PTR DS:[4A1ECC], EAX
00487408  |.  8B33          MOV     ESI, DWORD PTR DS:[EBX]
0048740A  |.  B8 07452EC2   MOV     EAX, C22E4507
0048740F  |.  5D            POP     EBP
00487410  |.  F7EE          IMUL    ESI
00487412  |.  03D6          ADD     EDX, ESI
00487414  |.  BE 07000000   MOV     ESI, 7
00487419  |.  C1FA 10       SAR     EDX, 10
0048741C  |.  8BC2          MOV     EAX, EDX
0048741E  |.  5F            POP     EDI
0048741F  |.  C1E8 1F       SHR     EAX, 1F
00487422  |.  C705 E01E4A00>MOV     DWORD PTR DS:[4A1EE0], 0
0048742C  |.  8D4402 04     LEA     EAX, DWORD PTR DS:[EDX+EAX+4]
00487430  |.  99            CDQ
00487431  |.  F7FE          IDIV    ESI
00487433  |.  B8 C5B3A291   MOV     EAX, 91A2B3C5
00487438  |.  5E            POP     ESI
00487439  |.  5B            POP     EBX
0048743A  |.  8915 D81E4A00 MOV     DWORD PTR DS:[4A1ED8], EDX
00487440  |.  F7E9          IMUL    ECX
00487442  |.  03D1          ADD     EDX, ECX
00487444  |.  C1FA 0B       SAR     EDX, 0B
00487447  |.  8BC2          MOV     EAX, EDX
00487449  |.  C1E8 1F       SHR     EAX, 1F
0048744C  |.  03D0          ADD     EDX, EAX
0048744E  |.  B8 89888888   MOV     EAX, 88888889
00487453  |.  8915 C81E4A00 MOV     DWORD PTR DS:[4A1EC8], EDX
00487459  |.  69D2 F0F1FFFF IMUL    EDX, EDX, -0E10
0048745F  |.  03CA          ADD     ECX, EDX
00487461  |.  F7E9          IMUL    ECX
00487463  |.  03D1          ADD     EDX, ECX
00487465  |.  C1FA 05       SAR     EDX, 5
00487468  |.  8BC2          MOV     EAX, EDX
0048746A  |.  C1E8 1F       SHR     EAX, 1F
0048746D  |.  03D0          ADD     EDX, EAX
0048746F  |.  8915 C41E4A00 MOV     DWORD PTR DS:[4A1EC4], EDX
00487475  |.  8D0452        LEA     EAX, DWORD PTR DS:[EDX+EDX*2]
00487478  |.  8D1480        LEA     EDX, DWORD PTR DS:[EAX+EAX*4]
0048747B  |.  B8 C01E4A00   MOV     EAX, Publish.004A1EC0
00487480  |.  C1E2 02       SHL     EDX, 2
00487483  |.  2BCA          SUB     ECX, EDX
00487485  |.  890D C01E4A00 MOV     DWORD PTR DS:[4A1EC0], ECX
0048748B  \.  C3            RETN

====================================================

 到这里注册码的算法跟踪完成,下面来分析注册码的计算方法.
 (按照提示长度是5~6位数字)

 经过分析可以知道,注册码分三种情况.每种有4个符合条件的注册码

     1.去除21天限制版,价值$12.
         计算方法:
         1.)注册码的16进制值+3D0C09 = 40F0E1
          可逆的计算是注册码=40F0E1-3D0C09=3E4D8(H)==> 255192      
         2.)注册码的16进制值+3D0C09 = 413169
          可逆的计算是注册码=413169-3D0C09=4258D(H)==> 271757  
         3.)注册码的16进制值+3D0C09 = 40B079
          可逆的计算是注册码=40B079-3D0C09=3A470(H)==> 238704  
         4.)注册码的16进制值+3D0C09 = 407031
          可逆的计算是注册码=407031-3D0C09=36428(H)==> 222248


     2.去除21天限制版,价值$15.
         计算方法:
         1.)注册码的16进制值+3D0A43 = 40F0E1
          可逆的计算是注册码=40F0E1-3D0A43=3E69E(H)==> 255646      
         2.)注册码的16进制值+3D0C09 = 413169
          可逆的计算是注册码=413169-3D0A43=42726(H)==> 272166  
         3.)注册码的16进制值+3D0C09 = 40B079
          可逆的计算是注册码=40B079-3D0A43=3A636(H)==> 239158
         4.)注册码的16进制值+3D0C09 = 407031
          可逆的计算是注册码=407031-3D0A43=365EE(H)==> 222702

      3.PRO版,价值$200.
         计算方法:
         1.)注册码的16进制值+3D09A7 = 40F0E1
          可逆的计算是注册码=40F0E1-3D09A7=3E73A(H)==> 255802      
         2.)注册码的16进制值+3D0C09 = 413169
          可逆的计算是注册码=413169-3D09A7=427C2(H)==> 272322  
         3.)注册码的16进制值+3D0C09 = 40B079
          可逆的计算是注册码=40B079-3D09A7=3A6D2(H)==> 239314  
         4.)注册码的16进制值+3D0C09 = 407031
          可逆的计算是注册码=407031-3D09A7=3668A(H)==> 222858



                                                       Cracded  fxyang[OCN]

                                                              2003.4.12


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程