飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4409|回复: 7

菜鸟学习算法,破解Textanz 1.4.0

[复制链接]
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-8-6 14:28:49 | 显示全部楼层 |阅读模式
    破解软件】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
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-8-6 17:42:05 | 显示全部楼层
    不简单的算法~得静下心才能慢慢学会。

    wzwgp兄怎么不顺便把算法KeyGen源码放出来呀?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-6 23:05:15 | 显示全部楼层
    很复杂哦,偶菜鸟一个,看不懂啊~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-17 11:58:51 | 显示全部楼层
    太复杂了,很深奥
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-23 21:40:49 | 显示全部楼层
    哦,好象很难哦......恩,努力....
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-5-3 19:45
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2007-1-3 14:27:27 | 显示全部楼层
    前一部分还看的懂  
    ---------------
    后面的就。。。。。。。。
    呵呵~迷糊了~!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-8-5 21:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-9-10 00:02:10 | 显示全部楼层
    这个很锻炼一个人的耐心和韧劲!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-4-4 20:21:51 | 显示全部楼层
    005170D6  |.  E8 F9C0FFFF   |CALL tk.005131D4                        ;  跳出注册码输入框,输入假码:
    005170DB  |.  84C0          |TEST AL,AL                 1234567890223456 
    005170DD  |.  74 67         |JE SHORT tk.00517146
    005170DF  |.  55            |PUSH EBP
    貌似在第一个CALL处F7进去,然后把前两行的代码改成mov al,1和RETN也可以/:018
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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