【破解软件】Textanz 1.4.0 
【下载地址】http://www.newhua.com/soft/50797.htm
【运行环境】Win9x/Me/NT/2000/XP/2003
【软件类别】国外软件/共享版/编辑软件
【保护方式】UPX壳+注册码 
【作者声明】初学Crack,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
【调试工具】OllyDBD、PEiD
【软件信息】是一款统计词语使用频率的软件。可以扫描文本文件,统计单词、词组在文章中的使用频率。可以减少大量重复性工作,有多种

统计方式,界面友好。 

一、破解过程

PEiD查壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
脱壳过程略。
字串参考:"Code is valid. Thank you for registration !"   地址=00517109

在005170B0处下断,F9 点击help --> Registration  断下 

005170B0  /$  55            PUSH EBP
005170B1  |.  8BEC          MOV EBP,ESP
005170B3  |.  6A 00         PUSH 0
005170B5  |.  6A 00         PUSH 0
005170B7  |.  6A 00         PUSH 0
005170B9  |.  53            PUSH EBX
005170BA  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
005170BD  |.  8D5D FC       LEA EBX,DWORD PTR SS:[EBP-4]
005170C0  |.  33C0          XOR EAX,EAX
005170C2  |.  55            PUSH EBP
005170C3  |.  68 61715100   PUSH tk.00517161
005170C8  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
005170CB  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
005170CE  |>  8D55 F8       /LEA EDX,DWORD PTR SS:[EBP-8]
005170D1  |.  8B03          |MOV EAX,DWORD PTR DS:[EBX]
005170D3  |.  8B40 64       |MOV EAX,DWORD PTR DS:[EAX+64]
005170D6  |.  E8 F9C0FFFF   |CALL tk.005131D4                        ;  跳出注册码输入框,输入假码:
005170DB  |.  84C0          |TEST AL,AL                 1234567890223456 
005170DD  |.  74 67         |JE SHORT tk.00517146
005170DF  |.  55            |PUSH EBP
005170E0  |.  E8 43FFFFFF   |CALL tk.00517028                        ;  假码写入Textanz.ini文件
005170E5  |.  59            |POP ECX
005170E6  |.  33D2          |XOR EDX,EDX
005170E8  |.  8B03          |MOV EAX,DWORD PTR DS:[EBX]
005170EA  |.  E8 E9000000   |CALL tk.005171D8                        ;  关键Call F7进入
005170EF  |.  8B03          |MOV EAX,DWORD PTR DS:[EBX]
005170F1  |.  8A40 60       |MOV AL,BYTE PTR DS:[EAX+60]
005170F4  |   2C 01         |SUB AL,1
005170F6  |   72 06         |JB SHORT tk.005170FE                    ;  跳注册成功
005170F8  |.  FEC8          |DEC AL
005170FA  |.  74 19         |JE SHORT tk.00517115
005170FC  |.  EB 26         |JMP SHORT tk.00517124
005170FE  |>  6A 00         |PUSH 0                              ;  Case 0 of switch 005170F4
00517100  |.  66:8B0D 70715>|MOV CX,WORD PTR DS:[517170]
00517107  |.  B2 02         |MOV DL,2
00517109  |.  B8 7C715100   |MOV EAX,tk.0051717C        ;   "Code is valid. Thank you forregistration !"
0051710E  |.  E8 5580F7FF   |CALL tk.0048F168
00517113  |.  EB 31         |JMP SHORT tk.00517146
00517115  |>  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]            ;  Case 2 of switch 005170F4
00517118  |.  BA B0715100   |MOV EDX,tk.005171B0                     ;  ASCII "Code expired"
0051711D  |.  E8 8ACCEEFF   |CALL tk.00403DAC
00517122  |.  EB 0D         |JMP SHORT tk.00517131
00517124  |>  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]            ;  Default case of switch 005170F4
00517127  |.  BA C8715100   |MOV EDX,tk.005171C8                     ;  ASCII "Invalid code"
0051712C  |.  E8 7BCCEEFF   |CALL tk.00403DAC
00517131  |>  6A 00         |PUSH 0
00517133  |.  66:8B0D 70715>|MOV CX,WORD PTR DS:[517170]
0051713A  |.  33D2          |XOR EDX,EDX
0051713C  |.  8B45 F4       |MOV EAX,DWORD PTR SS:[EBP-C]
0051713F  |.  E8 2480F7FF   |CALL tk.0048F168
00517144  |.^ EB 88         \JMP SHORT tk.005170CE
00517146  |>  33C0          XOR EAX,EAX
00517148  |.  5A            POP EDX
00517149  |.  59            POP ECX
0051714A  |.  59            POP ECX
0051714B  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0051714E  |.  68 68715100   PUSH tk.00517168
00517153  |>  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00517156  |.  BA 02000000   MOV EDX,2
0051715B  |.  E8 D8CBEEFF   CALL tk.00403D38
00517160  \.  C3            RETN

005170EA 关键Call F7进入

005171D8  /$  53            PUSH EBX
005171D9  |.  56            PUSH ESI
005171DA  |.  8BDA          MOV EBX,EDX
005171DC  |.  8BF0          MOV ESI,EAX
005171DE  |.  B2 01         MOV DL,1
005171E0  |.  8B46 50       MOV EAX,DWORD PTR DS:[ESI+50]
005171E3  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
005171E5  |.  FF51 30       CALL NEAR DWORD PTR DS:[ECX+30]          ;  F7进入
005171E8  |.  807E 60 00    CMP BYTE PTR DS:[ESI+60],0
005171EC  |.  0F95C0        SETNE AL                                 ;  Al=0 注册失败
005171EF  |.  84D8          TEST AL,BL
005171F1  |.  74 0D         JE SHORT tk.00517200

005171E5 处F7来到下面:

0050E4A8   .  53            PUSH EBX
0050E4A9   .  56            PUSH ESI
0050E4AA   .  83C4 DC       ADD ESP,-24
0050E4AD   .  881424        MOV BYTE PTR SS:[ESP],DL
0050E4B0   .  8BF0          MOV ESI,EAX
0050E4B2   .  C64424 01 00  MOV BYTE PTR SS:[ESP+1],0
0050E4B7   .  8D5424 0A     LEA EDX,DWORD PTR SS:[ESP+A]
0050E4BB   .  8BC6          MOV EAX,ESI
0050E4BD   .  66:BB EEFF    MOV BX,0FFEE
0050E4C1   .  E8 2A4DEFFF   CALL tk.004031F0
0050E4C6   .  8D5424 02     LEA EDX,DWORD PTR SS:[ESP+2]
0050E4CA   .  8BC6          MOV EAX,ESI
0050E4CC   .  66:BB EFFF    MOV BX,0FFEF
0050E4D0   .  E8 1B4DEFFF   CALL tk.004031F0                         ;  检查假码
0050E4D5   .  8BC6          MOV EAX,ESI
0050E4D7   .  66:BB EDFF    MOV BX,0FFED
0050E4DB   .  E8 104DEFFF   CALL tk.004031F0                         
0050E4E0   .  8D5424 0A     LEA EDX,DWORD PTR SS:[ESP+A]             ;  [ESP+A]4个常数地址(n1 n2 n3 n4)
0050E4E4   .  B9 10000000   MOV ECX,10
0050E4E9   .  E8 D2FAFFFF   CALL tk.0050DFC0
0050E4EE   .  8D5424 02     LEA EDX,DWORD PTR SS:[ESP+2]       ;  [ESP+2]假码地址
0050E4F2   .  8D4424 0A     LEA EAX,DWORD PTR SS:[ESP+A]
0050E4F6   .  E8 A1010000   CALL tk.0050E69C                         ;  运算假码
0050E4FB   .  84C0          TEST AL,AL                               ;  AL=0 注册码错误
0050E4FD   .  75 07         JNZ SHORT tk.0050E506                    ;  AL=01 注册码正确跳
0050E4FF   .  C64424 01 01  MOV BYTE PTR SS:[ESP+1],1
0050E504   .  EB 25         JMP SHORT tk.0050E52B

-------------------中间省略--------------------------

0050E544   .  83C4 24       ADD ESP,24
0050E547   .  5E            POP ESI
0050E548   .  5B            POP EBX
0050E549   .  C3            RETN                                     ;  返回到 005171E8

检查假码:
0050E4D0 处 CALL tk.004031F0  F7 --->
0050E130 处 CALL NEAR DWORD PTR DS:[EBX+40]   F7 --->
00516D24 处 E8 F369FFFF   CALL tk.0050D71C    F7到下面:

0050D71C  /$  55            PUSH EBP
0050D71D  |.  8BEC          MOV EBP,ESP
0050D71F  |.  83C4 E0       ADD ESP,-20
0050D722  |.  53            PUSH EBX

-------------------中间省略--------------------------

0050D73E  |.  68 16D85000   PUSH tk.0050D816
0050D743  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0050D746  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0050D749  |.  C645 F7 00    MOV BYTE PTR SS:[EBP-9],0
0050D74D  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
0050D750  |.  E8 BF65EFFF   CALL tk.00403D14
0050D755  |.  8BC7          MOV EAX,EDI
0050D757  |.  E8 3868EFFF   CALL tk.00403F94                       ;  取得假码位数
0050D75C  |.  8BD8          MOV EBX,EAX                            
0050D75E  |.  85DB          TEST EBX,EBX
0050D760  |.  7E 35         JLE SHORT tk.0050D797
0050D762  |.  BE 01000000   MOV ESI,1
0050D767  |>  8A4437 FF     /MOV AL,BYTE PTR DS:[EDI+ESI-1]        ;  逐位取假码
0050D76B  |.  E8 0453EFFF   |CALL tk.00402A74
0050D770  |.  04 D0         |ADD AL,0D0
0050D772  |.  2C 0A         |SUB AL,0A
0050D774  |.  72 06         |JB SHORT tk.0050D77C                  ;  [0..9]在此跳下保留
0050D776  |.  04 F9         |ADD AL,0F9
0050D778  |.  2C 06         |SUB AL,6
0050D77A  |.  73 17         |JNB SHORT tk.0050D793                 ;  [A..F]不跳保留,其余字符跳下剔除
0050D77C  |>  8D45 E8       |LEA EAX,DWORD PTR SS:[EBP-18]
0050D77F  |.  8A5437 FF     |MOV DL,BYTE PTR DS:[EDI+ESI-1]        ;  [EDI+ESI-1]假码地址
0050D783  |.  E8 3467EFFF   |CALL tk.00403EBC
0050D788  |.  8B55 E8       |MOV EDX,DWORD PTR SS:[EBP-18]
0050D78B  |.  8D45 EC       |LEA EAX,DWORD PTR SS:[EBP-14]
0050D78E  |.  E8 0968EFFF   |CALL tk.00403F9C
0050D793  |>  46            |INC ESI
0050D794  |.  4B            |DEC EBX                               ;  EBX 计数器
0050D795  |.^ 75 D0         \JNZ SHORT tk.0050D767                 
0050D797  |>  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]          ;  [EBP-14]保留的假码
0050D79A  |.  E8 F567EFFF   CALL tk.00403F94                       ;  EAX=保留的假码位数
0050D79F  |.  D1F8          SAR EAX,1                              ;  算术右移1位
0050D7A1  |.  79 03         JNS SHORT tk.0050D7A6
0050D7A3  |.  83D0 00       ADC EAX,0
0050D7A6  |>  3B45 F8       CMP EAX,DWORD PTR SS:[EBP-8]           ;  比较位数是否=8
0050D7A9  |.  75 50         JNZ SHORT tk.0050D7FB
0050D7AB  |.  8B5D F8       MOV EBX,DWORD PTR SS:[EBP-8]           ;  [EBP-8]=8
0050D7AE  |.  4B            DEC EBX
0050D7AF  |.  85DB          TEST EBX,EBX
0050D7B1  |.  7C 44         JL SHORT tk.0050D7F7
0050D7B3  |.  43            INC EBX
0050D7B4  |.  33F6          XOR ESI,ESI
0050D7B6  |.  8B7D FC       MOV EDI,DWORD PTR SS:[EBP-4]           
0050D7B9  |>  8D45 E0       /LEA EAX,DWORD PTR SS:[EBP-20]
0050D7BC  |.  50            |PUSH EAX
0050D7BD  |.  8BD6          |MOV EDX,ESI
0050D7BF  |.  03D2          |ADD EDX,EDX
0050D7C1  |.  42            |INC EDX
0050D7C2  |.  B9 02000000   |MOV ECX,2
0050D7C7  |.  8B45 EC       |MOV EAX,DWORD PTR SS:[EBP-14]         ;  [EBP-14]保留的假码
0050D7CA  |.  E8 CD69EFFF   |CALL tk.0040419C
0050D7CF  |.  8B4D E0       |MOV ECX,DWORD PTR SS:[EBP-20]         ;  [EBP-20]=24($)
0050D7D2  |.  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]
0050D7D5  |.  BA 30D85000   |MOV EDX,tk.0050D830
0050D7DA  |.  E8 0168EFFF   |CALL tk.00403FE0
0050D7DF  |.  8B45 E4       |MOV EAX,DWORD PTR SS:[EBP-1C]
0050D7E2  |.  8D55 F0       |LEA EDX,DWORD PTR SS:[EBP-10]
0050D7E5  |.  E8 F654EFFF   |CALL tk.00402CE0                      ;  2位假码并成1位
0050D7EA  |.  8807          |MOV BYTE PTR DS:[EDI],AL              ;  保存
0050D7EC  |.  837D F0 00    |CMP DWORD PTR SS:[EBP-10],0
0050D7F0  |.  75 09         |JNZ SHORT tk.0050D7FB
0050D7F2  |.  46            |INC ESI
0050D7F3  |.  47            |INC EDI
0050D7F4  |.  4B            |DEC EBX
0050D7F5  |.^ 75 C2         \JNZ SHORT tk.0050D7B9
0050D7F7  |>  C645 F7 01    MOV BYTE PTR SS:[EBP-9],1
0050D7FB  |>  33C0          XOR EAX,EAX
0050D7FD  |.  5A            POP EDX
0050D7FE  |.  59            POP ECX
0050D7FF  |.  59            POP ECX
0050D800  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0050D803  |.  68 1DD85000   PUSH tk.0050D81D
0050D808  |>  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
0050D80B  |.  BA 04000000   MOV EDX,4
0050D810  |.  E8 2365EFFF   CALL tk.00403D38
0050D815  \.  C3            RETN
0050D816   .- E9 595FEFFF   JMP tk.00403774
0050D81B   .^ EB EB         JMP SHORT tk.0050D808
0050D81D   .  8A45 F7       MOV AL,BYTE PTR SS:[EBP-9]
0050D820   .  5F            POP EDI
0050D821   .  5E            POP ESI
0050D822   .  5B            POP EBX
0050D823   .  8BE5          MOV ESP,EBP
0050D825   .  5D            POP EBP
0050D826   .  C3            RETN                                   ;  返回到 00516D29 
  这段是将假码中的非法字符剔除并由16压缩成8位,4位一组记为:s1、s2。

0050E4F6 处 CALL tk.0050E69C 来到下面:

0050E69C  /$  83C4 F8       ADD ESP,-8
0050E69F  |.  8B0A          MOV ECX,DWORD PTR DS:[EDX]
0050E6A1  |.  890C24        MOV DWORD PTR SS:[ESP],ECX
0050E6A4  |.  8B4A 04       MOV ECX,DWORD PTR DS:[EDX+4]
0050E6A7  |.  894C24 04     MOV DWORD PTR SS:[ESP+4],ECX
0050E6AB  |.  8BD4          MOV EDX,ESP
0050E6AD  |.  33C9          XOR ECX,ECX
0050E6AF  |.  E8 C8F7FFFF   CALL tk.0050DE7C                         ;  算法Call
0050E6B4  |.  66:813C24 693>CMP WORD PTR SS:[ESP],3C69               ;  [ESP]=3C69注册成功
0050E6BA  |.  0F94C0        SETE AL                                  
0050E6BD  |.  59            POP ECX
0050E6BE  |.  5A            POP EDX
0050E6BF  \.  C3            RETN                                     ;  返回到 0050E4FB

0050E6AF处 CALL tk.0050DE7C(算法Call)  F7进入

0050DE7C  /$  53            PUSH EBX
0050DE7D  |.  56            PUSH ESI
0050DE7E  |.  57            PUSH EDI
0050DE7F  |.  83C4 E8       ADD ESP,-18
0050DE82  |.  884C24 08     MOV BYTE PTR SS:[ESP+8],CL
0050DE86  |.  895424 04     MOV DWORD PTR SS:[ESP+4],EDX
0050DE8A  |.  890424        MOV DWORD PTR SS:[ESP],EAX
0050DE8D  |.  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]
0050DE91  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0050DE93  |.  894424 0C     MOV DWORD PTR SS:[ESP+C],EAX
0050DE97  |.  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]
0050DE9B  |.  8B40 04       MOV EAX,DWORD PTR DS:[EAX+4]
0050DE9E  |.  894424 10     MOV DWORD PTR SS:[ESP+10],EAX
0050DEA2  |.  C74424 14 040>MOV DWORD PTR SS:[ESP+14],4
0050DEAA  |.  BE 549B5300   MOV ESI,tk.00539B54
0050DEAF  |>  8B5424 0C     /MOV EDX,DWORD PTR SS:[ESP+C]         ;  [ESP+C]=s1、06667B5C、A53ECB4C、FABF3DD5
0050DEB3  |.  33C0          |XOR EAX,EAX
0050DEB5  |.  8A4424 08     |MOV AL,BYTE PTR SS:[ESP+8]
0050DEB9  |.  8BD8          |MOV EBX,EAX
0050DEBB  |.  03DB          |ADD EBX,EBX
0050DEBD  |.  8D1C5B        |LEA EBX,DWORD PTR DS:[EBX+EBX*2]
0050DEC0  |.  8B04DE        |MOV EAX,DWORD PTR DS:[ESI+EBX*8]     ;  [ESI+EBX*8]=0、2、1、3
0050DEC3  |.  8B0C24        |MOV ECX,DWORD PTR SS:[ESP]
0050DEC6  |.  8B0C81        |MOV ECX,DWORD PTR DS:[ECX+EAX*4]     ;  [ECX+EAX*4]=n1、n3、n2、n4
0050DEC9  |.  8B44DE 04     |MOV EAX,DWORD PTR DS:[ESI+EBX*8+4]   ;  [ESI+EBX*8+4]=3、1、0、2
0050DECD  |.  8B3C24        |MOV EDI,DWORD PTR SS:[ESP]
0050DED0  |.  8B0487        |MOV EAX,DWORD PTR DS:[EDI+EAX*4]     ;  [EDI+EAX*4]=n4、n2、n1、n3
0050DED3  |.  8B5CDE 08     |MOV EBX,DWORD PTR DS:[ESI+EBX*8+8]   ;  [ESI+EBX*8+8]=1、3、2、0
0050DED7  |.  8B3C24        |MOV EDI,DWORD PTR SS:[ESP]
0050DEDA  |.  8B1C9F        |MOV EBX,DWORD PTR DS:[EDI+EBX*4]     ;  [EDI+EBX*4]=n2、n4、n3、n1
0050DEDD  |.  03D3          |ADD EDX,EBX                          ;  EDX=s1+n3=620C08BD
0050DEDF  |.  03DA          |ADD EBX,EDX                          ;  EBX=n3+620C08BD=4BC1DD68
0050DEE1  |.  8BFA          |MOV EDI,EDX
0050DEE3  |.  C1EF 07       |SHR EDI,7                            ;  EDI=620C08BD shr 7=C41811
0050DEE6  |.  33D7          |XOR EDX,EDI                          ;  EDX=620C08BD xor C41811=62C810AC
0050DEE8  |.  03CA          |ADD ECX,EDX                          ;  ECX=n1+62C810AC=68378A7F
0050DEEA  |.  03D1          |ADD EDX,ECX
0050DEEC  |.  8BF9          |MOV EDI,ECX
0050DEEE  |.  C1E7 0D       |SHL EDI,0D
0050DEF1  |.  33CF          |XOR ECX,EDI
0050DEF3  |.  03C1          |ADD EAX,ECX
0050DEF5  |.  03C8          |ADD ECX,EAX
0050DEF7  |.  8BF8          |MOV EDI,EAX
0050DEF9  |.  C1EF 11       |SHR EDI,11
0050DEFC  |.  33C7          |XOR EAX,EDI
0050DEFE  |.  03D8          |ADD EBX,EAX
0050DF00  |.  03C3          |ADD EAX,EBX
0050DF02  |.  8BFB          |MOV EDI,EBX
0050DF04  |.  C1E7 09       |SHL EDI,9
0050DF07  |.  33DF          |XOR EBX,EDI
0050DF09  |.  03D3          |ADD EDX,EBX
0050DF0B  |.  03DA          |ADD EBX,EDX
0050DF0D  |.  8BFA          |MOV EDI,EDX
0050DF0F  |.  C1EF 03       |SHR EDI,3
0050DF12  |.  33D7          |XOR EDX,EDI
0050DF14  |.  03CA          |ADD ECX,EDX
0050DF16  |.  8BD1          |MOV EDX,ECX
0050DF18  |.  C1E2 07       |SHL EDX,7
0050DF1B  |.  33CA          |XOR ECX,EDX
0050DF1D  |.  03C1          |ADD EAX,ECX
0050DF1F  |.  8BD3          |MOV EDX,EBX
0050DF21  |.  C1EA 0F       |SHR EDX,0F
0050DF24  |.  33C2          |XOR EAX,EDX
0050DF26  |.  03D8          |ADD EBX,EAX
0050DF28  |.  8BC3          |MOV EAX,EBX
0050DF2A  |.  C1E0 0B       |SHL EAX,0B
0050DF2D  |.  33D8          |XOR EBX,EAX
0050DF2F  |.  8B4424 10     |MOV EAX,DWORD PTR SS:[ESP+10]        ;  [ESP+10]=s2、s1、06667B5C、A53ECB4C
0050DF33  |.  33C3          |XOR EAX,EBX                          ;  EBX=505259CC、DD68FF5E、FCD94689、3FF02E52
0050DF35  |.  8B5424 0C     |MOV EDX,DWORD PTR SS:[ESP+C]         ;  [ESP+C]=s1、06667B5C、A53ECB4C、FABF3DD5
0050DF39  |.  895424 10     |MOV DWORD PTR SS:[ESP+10],EDX
0050DF3D  |.  894424 0C     |MOV DWORD PTR SS:[ESP+C],EAX         ;  EAX=06667B5C、A53ECB4C、FABF3DD5、9ACEE51E
0050DF41  |.  83C6 0C       |ADD ESI,0C
0050DF44  |.  FF4C24 14     |DEC DWORD PTR SS:[ESP+14]            ;  [ESP+14]=4 (循环次数)
0050DF48  |.^ 0F85 61FFFFFF \JNZ tk.0050DEAF
0050DF4E  |.  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]          ;  [ESP+4]=假码
0050DF52  |.  8B5424 10     MOV EDX,DWORD PTR SS:[ESP+10]         ;  [ESP+10]=FABF3DD5
0050DF56  |.  8910          MOV DWORD PTR DS:[EAX],EDX            ;  替换假码前4位
0050DF58  |.  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]
0050DF5C  |.  8B5424 0C     MOV EDX,DWORD PTR SS:[ESP+C]          ;  [ESP+C]=9ACEE51E
0050DF60  |.  8950 04       MOV DWORD PTR DS:[EAX+4],EDX          ;  替换假码后4位
0050DF63  |.  83C4 18       ADD ESP,18
0050DF66  |.  5F            POP EDI
0050DF67  |.  5E            POP ESI
0050DF68  |.  5B            POP EBX
0050DF69  \.  C3            RETN                                  ;  返回到 0050E6B4  0050E5F3



算法小结:

1.注册码要求16位,范围是(0 、1 ……E、F)16进制数的基本元素。
2.将16位注册码压缩为8位。
 若输入注册码:1234567A9F223456 进行如下压缩。
 内存中存储的次序:
        (0x 31 32 33 34 35 36 37 41 39 46 32 32 33 34 35 36)
  变成 (0x 12 34 56 7A 9F 22 34 56)   
3.压缩后注册码分成2组:
 s1=7A563412  s2=5634229F
4.s1、s2与4个常数(n1=056F79E2 n2=E9B5D4AB n3=9F6E0C3B n4=C6DE0DCC)
  进行4轮循环运算。
5.运算结果的第3、4位如果等于3C69,则注册成功。
6.一组通过验证的注册码:75457544B77FDE8E