【文章标题】: Alligator Flash Designer 5的算法分析[逆推]
【文章作者】: oczhao[OCN]
【作者邮箱】: ocnzhao@newhua.com
【软件名称】: Selteco Flash Designer 5.0.30_0624
【软件大小】: 1.65M
【下载地址】: http://www.onlinedown.net/soft/8902.htm
【加壳方式】: none
【保护方式】: 序列号
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OllyDBG 1.10[1208] caocong汉化第二版;PEID 0.94
【操作平台】: XP SP2 
【软件介绍】:  Selteco Flash Designer 可以帮助你为你的网页创建
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  首先对第一段注册码作处理:
  00407AF0  /$  83EC 3C       SUB ESP,3C
  00407AF3  |.  8B4C24 40     MOV ECX,DWORD PTR SS:[ESP+40]
  00407AF7  |.  B8 8F588B4F   MOV EAX,4F8B588F
  00407AFC  |.  F7E1          MUL ECX                                  ;  4F8B588F*SN1
  00407AFE  |.  8BC1          MOV EAX,ECX
  00407B00  |.  53            PUSH EBX
  00407B01  |.  2BC2          SUB EAX,EDX                              
  00407B03  |.  55            PUSH EBP
  00407B04  |.  D1E8          SHR EAX,1
  00407B06  |.  03C2          ADD EAX,EDX
  00407B08  |.  56            PUSH ESI
  00407B09  |.  C1E8 10       SHR EAX,10
  00407B0C  |.  33D2          XOR EDX,EDX
  00407B0E  |.  BE 0A000000   MOV ESI,0A
  00407B13  |.  F7F6          DIV ESI
  00407B15  |.  57            PUSH EDI
  00407B16  |.  B8 5917B7D1   MOV EAX,D1B71759
  00407B1B  |.  8BFA          MOV EDI,EDX
  00407B1D  |.  F7E1          MUL ECX                                  ;  SN1*D1B71759
  00407B1F  |.  8BC2          MOV EAX,EDX
  00407B21  |.  33D2          XOR EDX,EDX
  00407B23  |.  C1E8 0D       SHR EAX,0D
  00407B26  |.  F7F6          DIV ESI
  00407B28  |.  B8 D34D6210   MOV EAX,10624DD3                         ;  10624DD3*SN1
  00407B2D  |.  895424 14     MOV DWORD PTR SS:[ESP+14],EDX
  00407B31  |.  F7E1          MUL ECX
  00407B33  |.  8BC2          MOV EAX,EDX
  00407B35  |.  33D2          XOR EDX,EDX
  00407B37  |.  C1E8 06       SHR EAX,6
  00407B3A  |.  F7F6          DIV ESI
  00407B3C  |.  B8 1F85EB51   MOV EAX,51EB851F                         ;  51EB851F*SN1
  00407B41  |.  895424 18     MOV DWORD PTR SS:[ESP+18],EDX
  00407B45  |.  F7E1          MUL ECX
  00407B47  |.  8BC2          MOV EAX,EDX
  00407B49  |.  33D2          XOR EDX,EDX
  00407B4B  |.  C1E8 05       SHR EAX,5
  00407B4E  |.  F7F6          DIV ESI
  00407B50  |.  B8 CDCCCCCC   MOV EAX,CCCCCCCD                         ;  CCCCCCCD*SN1
  00407B55  |.  8BDA          MOV EBX,EDX
  00407B57  |.  F7E1          MUL ECX
  00407B59  |.  8BC2          MOV EAX,EDX
  00407B5B  |.  33D2          XOR EDX,EDX
  00407B5D  |.  C1E8 03       SHR EAX,3
  00407B60  |.  F7F6          DIV ESI
  00407B62  |.  8BC1          MOV EAX,ECX
  00407B64  |.  8BCE          MOV ECX,ESI
  00407B66  |.  8BEA          MOV EBP,EDX
  00407B68  |.  33D2          XOR EDX,EDX
  00407B6A  |.  F7F1          DIV ECX
  00407B6C  |.  8B4C24 54     MOV ECX,DWORD PTR SS:[ESP+54]
  00407B70  |.  B8 893BE655   MOV EAX,55E63B89
  00407B75  |.  895424 24     MOV DWORD PTR SS:[ESP+24],EDX
  00407B79  |.  F7E1          MUL ECX                                  ;  55E63B89*SN1
  00407B7B  |.  8BC2          MOV EAX,EDX
  00407B7D  |.  33D2          XOR EDX,EDX
  00407B7F  |.  C1E8 19       SHR EAX,19
  00407B82  |.  F7F6          DIV ESI
  00407B84  |.  B8 6BCA5F6B   MOV EAX,6B5FCA6B
  00407B89  |.  895424 28     MOV DWORD PTR SS:[ESP+28],EDX
  00407B8D  |.  F7E1          MUL ECX                                  ;  6B5FCA6B*SN1
  00407B8F  |.  8BC2          MOV EAX,EDX
  00407B91  |.  33D2          XOR EDX,EDX
  00407B93  |.  C1E8 16       SHR EAX,16
  00407B96  |.  F7F6          DIV ESI
  00407B98  |.  B8 83DE1B43   MOV EAX,431BDE83
  00407B9D  |.  895424 2C     MOV DWORD PTR SS:[ESP+2C],EDX
  00407BA1  |.  F7E1          MUL ECX                                  ;  431BDE83*SN1
  00407BA3  |.  8BC2          MOV EAX,EDX
  00407BA5  |.  33D2          XOR EDX,EDX
  00407BA7  |.  C1E8 12       SHR EAX,12
  00407BAA  |.  F7F6          DIV ESI
  00407BAC  |.  B8 8F588B4F   MOV EAX,4F8B588F
  00407BB1  |.  895424 30     MOV DWORD PTR SS:[ESP+30],EDX
  00407BB5  |.  F7E1          MUL ECX
  00407BB7  |.  8BC1          MOV EAX,ECX                              ;  4F8B588F*SN1
  00407BB9  |.  2BC2          SUB EAX,EDX
  00407BBB  |.  D1E8          SHR EAX,1
  00407BBD  |.  03C2          ADD EAX,EDX
  00407BBF  |.  33D2          XOR EDX,EDX
  00407BC1  |.  C1E8 10       SHR EAX,10
  00407BC4  |.  F7F6          DIV ESI
  00407BC6  |.  895424 34     MOV DWORD PTR SS:[ESP+34],EDX
  00407BCA  |.  B8 5917B7D1   MOV EAX,D1B71759                         ;  D1B71759*SN1
  00407BCF  |.  F7E1          MUL ECX
  00407BD1  |.  8BC2          MOV EAX,EDX
  00407BD3  |.  33D2          XOR EDX,EDX
  00407BD5  |.  C1E8 0D       SHR EAX,0D
  00407BD8  |.  F7F6          DIV ESI
  00407BDA  |.  B8 D34D6210   MOV EAX,10624DD3
  00407BDF  |.  895424 38     MOV DWORD PTR SS:[ESP+38],EDX
  00407BE3  |.  F7E1          MUL ECX                                  ;  10624DD3*SN1
  00407BE5  |.  8BC2          MOV EAX,EDX
  00407BE7  |.  33D2          XOR EDX,EDX
  00407BE9  |.  C1E8 06       SHR EAX,6
  00407BEC  |.  F7F6          DIV ESI
  00407BEE  |.  B8 1F85EB51   MOV EAX,51EB851F
  00407BF3  |.  895424 3C     MOV DWORD PTR SS:[ESP+3C],EDX
  00407BF7  |.  F7E1          MUL ECX                                  ;  51EB851F*SN1
  00407BF9  |.  8BC2          MOV EAX,EDX
  00407BFB  |.  33D2          XOR EDX,EDX
  00407BFD  |.  C1E8 05       SHR EAX,5
  00407C00  |.  F7F6          DIV ESI
  00407C02  |.  B8 CDCCCCCC   MOV EAX,CCCCCCCD
  00407C07  |.  895424 40     MOV DWORD PTR SS:[ESP+40],EDX
  00407C0B  |.  F7E1          MUL ECX                                  ;  CCCCCCCD*SN1
  00407C0D  |.  8BC2          MOV EAX,EDX
  00407C0F  |.  33D2          XOR EDX,EDX
  00407C11  |.  C1E8 03       SHR EAX,3
  00407C14  |.  F7F6          DIV ESI
  00407C16  |.  8BC1          MOV EAX,ECX
  00407C18  |.  895424 44     MOV DWORD PTR SS:[ESP+44],EDX
  00407C1C  |.  33D2          XOR EDX,EDX
  00407C1E  |.  F7F6          DIV ESI
  ---------------------------------------------------------------------------------------
  上面的代码就是取出注册码第一段的2,3位和注册码第二段的1,3,4,6,9位,都保存到堆栈
  ---------------------------------------------------------------------------------------
  00407C20  |.  8B4424 3C     MOV EAX,DWORD PTR SS:[ESP+3C]            ;  0
  00407C24  |.  8D3402        LEA ESI,DWORD PTR DS:[EDX+EAX]           ;  9
  00407C27  |.  8B4424 34     MOV EAX,DWORD PTR SS:[ESP+34]            ;  5
  00407C2B  |.  8B5424 30     MOV EDX,DWORD PTR SS:[ESP+30]
  00407C2F  |.  03F0          ADD ESI,EAX                              ;  9+5
  00407C31  |.  8B4424 28     MOV EAX,DWORD PTR SS:[ESP+28]
  00407C35  |.  03F2          ADD ESI,EDX                              ;  9+5+4
  00407C37  |.  8B5424 24     MOV EDX,DWORD PTR SS:[ESP+24]
  00407C3B  |.  03F0          ADD ESI,EAX                              ;  9541
  00407C3D  |.  03F2          ADD ESI,EDX                              ;  9+5+4+1+2
  00407C3F  |.  03F3          ADD ESI,EBX                              ;  0x13+4
  00407C41  |.  03F7          ADD ESI,EDI                              ;  32=0X1F
  00407C43  |.  BF 0A000000   MOV EDI,0A
  00407C48  |.  8D46 04       LEA EAX,DWORD PTR DS:[ESI+4]             ;  36
  00407C4B      99            CDQ
  ---------------------------------------------------------------------------------------
  这一段的意思是把取出的几位注册码加起来,假设注册码是123456-SFDL-223456789,注册码第一段
  的2,3位和注册码第二段的1,3,4,6,9位加起来的和是0x23=35,note sum.
  ---------------------------------------------------------------------------------------
  00407C4C  |.  F7FF          IDIV EDI                                 ;  % A
  00407C4E  |.  3BD5          CMP EDX,EBP                              ; 第一段的第五位等于s1=sum % A
  00407C50      74 0C         JE SHORT sfld.00407C5E                   ; 相等跳
  00407C52  |.  5F            POP EDI
  00407C53  |.  5E            POP ESI
  00407C54  |.  5D            POP EBP
  00407C55  |.  33C0          XOR EAX,EAX
  00407C57  |.  5B            POP EBX
  00407C58  |.  83C4 3C       ADD ESP,3C
  00407C5B  |.  C2 0800       RETN 8
  00407C5E  |>  03F2          ADD ESI,EDX                              ;  sum+sum % A
  00407C60  |.  BF 0A000000   MOV EDI,0A
  00407C65  |.  8D46 07       LEA EAX,DWORD PTR DS:[ESI+7]             ;  sum+sum % A+7
  00407C68  |.  99            CDQ
  00407C69  |.  F7FF          IDIV EDI                                 ;  % A
  00407C6B  |.  3B5424 18     CMP EDX,DWORD PTR SS:[ESP+18]            ;  第一段的第三位等于s2=(sum+sum % A+7) % A
  00407C6F      74 0C         JE SHORT sfld.00407C7D
  00407C71  |.  5F            POP EDI
  00407C72  |.  5E            POP ESI
  00407C73  |.  5D            POP EBP
  00407C74  |.  33C0          XOR EAX,EAX
  00407C76  |.  5B            POP EBX
  00407C77  |.  83C4 3C       ADD ESP,3C
  00407C7A  |.  C2 0800       RETN 8
  00407C7D  |>  03F2          ADD ESI,EDX                              ;  加上上面计算出的余数
  00407C7F  |.  BF 0A000000   MOV EDI,0A
  00407C84  |.  8D46 05       LEA EAX,DWORD PTR DS:[ESI+5]             ;  再加5
  00407C87  |.  99            CDQ
  00407C88  |.  F7FF          IDIV EDI                                 ;  % A
  00407C8A  |.  3B5424 2C     CMP EDX,DWORD PTR SS:[ESP+2C]            ;  等于第二段的第二位
  00407C8E      74 0C         JE SHORT sfld.00407C9C
  00407C90  |.  5F            POP EDI
  00407C91  |.  5E            POP ESI
  00407C92  |.  5D            POP EBP
  00407C93  |.  33C0          XOR EAX,EAX
  00407C95  |.  5B            POP EBX
  00407C96  |.  83C4 3C       ADD ESP,3C
  00407C99  |.  C2 0800       RETN 8
  00407C9C  |>  03F2          ADD ESI,EDX                              ;  加上上面计算出的余数
  00407C9E  |.  BF 0A000000   MOV EDI,0A
  00407CA3  |.  8D46 09       LEA EAX,DWORD PTR DS:[ESI+9]             ;  再加9
  00407CA6  |.  99            CDQ
  00407CA7  |.  F7FF          IDIV EDI                                 ;  % A
  00407CA9  |.  3B5424 40     CMP EDX,DWORD PTR SS:[ESP+40]            ;  等于第二段的第七位
  00407CAD      74 0C         JE SHORT sfld.00407CBB
  00407CAF  |.  5F            POP EDI
  00407CB0  |.  5E            POP ESI
  00407CB1  |.  5D            POP EBP
  00407CB2  |.  33C0          XOR EAX,EAX
  00407CB4  |.  5B            POP EBX
  00407CB5  |.  83C4 3C       ADD ESP,3C
  00407CB8  |.  C2 0800       RETN 8
  00407CBB  |>  03F2          ADD ESI,EDX                              ;  加上上面计算出的余数
  00407CBD  |.  BF 0A000000   MOV EDI,0A
  00407CC2  |.  8D46 03       LEA EAX,DWORD PTR DS:[ESI+3]             ;  再加3
  00407CC5  |.  99            CDQ
  00407CC6  |.  F7FF          IDIV EDI                                 ;  % A
  00407CC8  |.  3B5424 44     CMP EDX,DWORD PTR SS:[ESP+44]            ;  等于第二段的第八位
  00407CCC      74 0C         JE SHORT sfld.00407CDA
  00407CCE  |.  5F            POP EDI
  00407CCF  |.  5E            POP ESI
  00407CD0  |.  5D            POP EBP
  00407CD1  |.  33C0          XOR EAX,EAX
  00407CD3  |.  5B            POP EBX
  00407CD4  |.  83C4 3C       ADD ESP,3C
  00407CD7  |.  C2 0800       RETN 8
  00407CDA  |>  03F2          ADD ESI,EDX                              ;  加上上面计算出的余数
  00407CDC  |.  BF 0A000000   MOV EDI,0A
  00407CE1  |.  8D46 02       LEA EAX,DWORD PTR DS:[ESI+2]             ;  再加2
  00407CE4  |.  99            CDQ
  00407CE5  |.  F7FF          IDIV EDI                                 ;  % A
  00407CE7  |.  3B5424 38     CMP EDX,DWORD PTR SS:[ESP+38]            ;  等于第二段的第五位
  00407CEB      74 0C         JE SHORT sfld.00407CF9
  00407CED  |.  5F            POP EDI
  00407CEE  |.  5E            POP ESI
  00407CEF  |.  5D            POP EBP
  00407CF0  |.  33C0          XOR EAX,EAX
  00407CF2  |.  5B            POP EBX
  00407CF3  |.  83C4 3C       ADD ESP,3C
  00407CF6  |.  C2 0800       RETN 8
  00407CF9  |>  8D4432 08     LEA EAX,DWORD PTR DS:[EDX+ESI+8]         ;  加上上面计算出的余数,再加8
  00407CFD  |.  BE 0A000000   MOV ESI,0A
  00407D02  |.  99            CDQ
  00407D03  |.  F7FE          IDIV ESI                                 ;  % A
  00407D05  |.  3B5424 14     CMP EDX,DWORD PTR SS:[ESP+14]            ;  等于第一段的第二位
  00407D09  |.  74 0C         JE SHORT sfld.00407D17
  00407D0B  |.  5F            POP EDI
  00407D0C  |.  5E            POP ESI
  00407D0D  |.  5D            POP EBP
  00407D0E  |.  33C0          XOR EAX,EAX
  00407D10  |.  5B            POP EBX
  00407D11  |.  83C4 3C       ADD ESP,3C
  00407D14  |.  C2 0800       RETN 8
  ---------------------------------------------------------------------------------------
  这一段的意思是第一段的5,3,2位和第二段的2,7,8,5位要等于注册程序计算出来的值,最后给了一种
  找到可用注册码的一种苯的方法
  ---------------------------------------------------------------------------------------
  00407D17  |>  81F9 4DEF3406 CMP ECX,634EF4D
  00407D1D  |.  75 0C         JNZ SHORT sfld.00407D2B
  00407D1F  |.  5F            POP EDI
  00407D20  |.  5E            POP ESI
  00407D21  |.  5D            POP EBP
  00407D22  |.  33C0          XOR EAX,EAX
  00407D24  |.  5B            POP EBX
  00407D25  |.  83C4 3C       ADD ESP,3C
  00407D28  |.  C2 0800       RETN 8
  00407D2B  |>  81F9 21BF5C18 CMP ECX,185CBF21
  00407D31  |.  75 0C         JNZ SHORT sfld.00407D3F
  00407D33  |.  5F            POP EDI
  00407D34  |.  5E            POP ESI
  00407D35  |.  5D            POP EBP
  00407D36  |.  33C0          XOR EAX,EAX
  00407D38  |.  5B            POP EBX
  00407D39  |.  83C4 3C       ADD ESP,3C
  00407D3C  |.  C2 0800       RETN 8
  00407D3F  |>  81F9 C830901A CMP ECX,1A9030C8
  00407D45  |.  75 0C         JNZ SHORT sfld.00407D53
  00407D47  |.  5F            POP EDI
  00407D48  |.  5E            POP ESI
  00407D49  |.  5D            POP EBP
  00407D4A  |.  33C0          XOR EAX,EAX
  00407D4C  |.  5B            POP EBX
  00407D4D  |.  83C4 3C       ADD ESP,3C
  00407D50  |.  C2 0800       RETN 8
  00407D53  |>  81F9 07B27E1F CMP ECX,1F7EB207
  00407D59  |.  75 0C         JNZ SHORT sfld.00407D67
  00407D5B  |.  5F            POP EDI
  00407D5C  |.  5E            POP ESI
  00407D5D  |.  5D            POP EBP
  00407D5E  |.  33C0          XOR EAX,EAX
  00407D60  |.  5B            POP EBX
  00407D61  |.  83C4 3C       ADD ESP,3C
  00407D64  |.  C2 0800       RETN 8
  00407D67  |>  81F9 8E0CD127 CMP ECX,27D10C8E
  00407D6D  |.  75 0C         JNZ SHORT sfld.00407D7B
  00407D6F  |.  5F            POP EDI
  00407D70  |.  5E            POP ESI
  00407D71  |.  5D            POP EBP
  00407D72  |.  33C0          XOR EAX,EAX
  00407D74  |.  5B            POP EBX
  00407D75  |.  83C4 3C       ADD ESP,3C
  00407D78  |.  C2 0800       RETN 8
  00407D7B  |>  81F9 487D900E CMP ECX,0E907D48
  00407D81  |.  75 0C         JNZ SHORT sfld.00407D8F
  00407D83  |.  5F            POP EDI
  00407D84  |.  5E            POP ESI
  00407D85  |.  5D            POP EBP
  00407D86  |.  33C0          XOR EAX,EAX
  00407D88  |.  5B            POP EBX
  00407D89  |.  83C4 3C       ADD ESP,3C
  00407D8C  |.  C2 0800       RETN 8
  00407D8F  |>  81F9 A6D3B201 CMP ECX,1B2D3A6
  00407D95  |.  75 0C         JNZ SHORT sfld.00407DA3
  00407D97  |.  5F            POP EDI
  00407D98  |.  5E            POP ESI
  00407D99  |.  5D            POP EBP
  00407D9A  |.  33C0          XOR EAX,EAX
  00407D9C  |.  5B            POP EBX
  00407D9D  |.  83C4 3C       ADD ESP,3C
  00407DA0  |.  C2 0800       RETN 8
  00407DA3  |>  81F9 F6C5D122 CMP ECX,22D1C5F6
  00407DA9  |.  75 0C         JNZ SHORT sfld.00407DB7
  00407DAB  |.  5F            POP EDI
  00407DAC  |.  5E            POP ESI
  00407DAD  |.  5D            POP EBP
  00407DAE  |.  33C0          XOR EAX,EAX
  00407DB0  |.  5B            POP EBX
  00407DB1  |.  83C4 3C       ADD ESP,3C
  00407DB4  |.  C2 0800       RETN 8
  00407DB7  |>  81F9 287B9A26 CMP ECX,269A7B28
  00407DBD  |.  75 0C         JNZ SHORT sfld.00407DCB
  00407DBF  |.  5F            POP EDI
  00407DC0  |.  5E            POP ESI
  00407DC1  |.  5D            POP EBP
  00407DC2  |.  33C0          XOR EAX,EAX
  00407DC4  |.  5B            POP EBX
  00407DC5  |.  83C4 3C       ADD ESP,3C
  00407DC8  |.  C2 0800       RETN 8
  00407DCB  |>  81F9 05F8970F CMP ECX,0F97F805
  00407DD1  |.  75 0C         JNZ SHORT sfld.00407DDF
  00407DD3  |.  5F            POP EDI
  00407DD4  |.  5E            POP ESI
  00407DD5  |.  5D            POP EBP
  00407DD6  |.  33C0          XOR EAX,EAX
  00407DD8  |.  5B            POP EBX
  00407DD9  |.  83C4 3C       ADD ESP,3C
  00407DDC  |.  C2 0800       RETN 8
  00407DDF  |>  81F9 E95B8800 CMP ECX,885BE9
  00407DE5  |.  75 0C         JNZ SHORT sfld.00407DF3
  00407DE7  |.  5F            POP EDI
  00407DE8  |.  5E            POP ESI
  00407DE9  |.  5D            POP EBP
  00407DEA  |.  33C0          XOR EAX,EAX
  00407DEC  |.  5B            POP EBX
  00407DED  |.  83C4 3C       ADD ESP,3C
  00407DF0  |.  C2 0800       RETN 8
  00407DF3  |>  81F9 3C7CBD2E CMP ECX,2EBD7C3C
  00407DF9  |.  75 0C         JNZ SHORT sfld.00407E07
  00407DFB  |.  5F            POP EDI
  00407DFC  |.  5E            POP ESI
  00407DFD  |.  5D            POP EBP
  00407DFE  |.  33C0          XOR EAX,EAX
  00407E00  |.  5B            POP EBX
  00407E01  |.  83C4 3C       ADD ESP,3C
  00407E04  |.  C2 0800       RETN 8
  00407E07  |>  81F9 38B40D1F CMP ECX,1F0DB438
  00407E0D  |.  75 0C         JNZ SHORT sfld.00407E1B
  00407E0F  |.  5F            POP EDI
  00407E10  |.  5E            POP ESI
  00407E11  |.  5D            POP EBP
  00407E12  |.  33C0          XOR EAX,EAX
  00407E14  |.  5B            POP EBX
  00407E15  |.  83C4 3C       ADD ESP,3C
  00407E18  |.  C2 0800       RETN 8
  00407E1B  |>  81F9 3EC13F18 CMP ECX,183FC13E
  00407E21  |.  75 0C         JNZ SHORT sfld.00407E2F
  00407E23  |.  5F            POP EDI
  00407E24  |.  5E            POP ESI
  00407E25  |.  5D            POP EBP
  00407E26  |.  33C0          XOR EAX,EAX
  00407E28  |.  5B            POP EBX
  00407E29  |.  83C4 3C       ADD ESP,3C
  00407E2C  |.  C2 0800       RETN 8
  00407E2F  |>  81F9 ECA0D41B CMP ECX,1BD4A0EC
  00407E35  |.  75 0C         JNZ SHORT sfld.00407E43
  00407E37  |.  5F            POP EDI
  00407E38  |.  5E            POP ESI
  00407E39  |.  5D            POP EBP
  00407E3A  |.  33C0          XOR EAX,EAX
  00407E3C  |.  5B            POP EBX
  00407E3D  |.  83C4 3C       ADD ESP,3C
  00407E40  |.  C2 0800       RETN 8
  00407E43  |>  81F9 05843306 CMP ECX,6338405
  00407E49  |.  75 0C         JNZ SHORT sfld.00407E57
  00407E4B  |.  5F            POP EDI
  00407E4C  |.  5E            POP ESI
  00407E4D  |.  5D            POP EBP
  00407E4E  |.  33C0          XOR EAX,EAX
  00407E50  |.  5B            POP EBX
  00407E51  |.  83C4 3C       ADD ESP,3C
  00407E54  |.  C2 0800       RETN 8
  00407E57  |>  81F9 2D9CB621 CMP ECX,21B69C2D
  00407E5D  |.  75 0C         JNZ SHORT sfld.00407E6B
  00407E5F  |.  5F            POP EDI
  00407E60  |.  5E            POP ESI
  00407E61  |.  5D            POP EBP
  00407E62  |.  33C0          XOR EAX,EAX
  00407E64  |.  5B            POP EBX
  00407E65  |.  83C4 3C       ADD ESP,3C
  00407E68  |.  C2 0800       RETN 8
  00407E6B  |>  81F9 9C012D12 CMP ECX,122D019C
  00407E71  |.  75 0C         JNZ SHORT sfld.00407E7F
  00407E73  |.  5F            POP EDI
  00407E74  |.  5E            POP ESI
  00407E75  |.  5D            POP EBP
  00407E76  |.  33C0          XOR EAX,EAX
  00407E78  |.  5B            POP EBX
  00407E79  |.  83C4 3C       ADD ESP,3C
  00407E7C  |.  C2 0800       RETN 8
  00407E7F  |>  81F9 8D42D72F CMP ECX,2FD7428D
  00407E85  |.  75 0C         JNZ SHORT sfld.00407E93
  00407E87  |.  5F            POP EDI
  00407E88  |.  5E            POP ESI
  00407E89  |.  5D            POP EBP
  00407E8A  |.  33C0          XOR EAX,EAX
  00407E8C  |.  5B            POP EBX
  00407E8D  |.  83C4 3C       ADD ESP,3C
  00407E90  |.  C2 0800       RETN 8
  00407E93  |>  81F9 205BD034 CMP ECX,34D05B20
  00407E99  |.  75 0C         JNZ SHORT sfld.00407EA7
  00407E9B  |.  5F            POP EDI
  00407E9C  |.  5E            POP ESI
  00407E9D  |.  5D            POP EBP
  00407E9E  |.  33C0          XOR EAX,EAX
  00407EA0  |.  5B            POP EBX
  00407EA1  |.  83C4 3C       ADD ESP,3C
  00407EA4  |.  C2 0800       RETN 8
  00407EA7  |>  81F9 1BCAD735 CMP ECX,35D7CA1B
  00407EAD  |.  75 0C         JNZ SHORT sfld.00407EBB
  00407EAF  |.  5F            POP EDI
  00407EB0  |.  5E            POP ESI
  00407EB1  |.  5D            POP EBP
  00407EB2  |.  33C0          XOR EAX,EAX
  00407EB4  |.  5B            POP EBX
  00407EB5  |.  83C4 3C       ADD ESP,3C
  00407EB8  |.  C2 0800       RETN 8
  00407EBB  |>  81F9 858A9033 CMP ECX,33908A85
  00407EC1  |.  75 0C         JNZ SHORT sfld.00407ECF
  00407EC3  |.  5F            POP EDI
  00407EC4  |.  5E            POP ESI
  00407EC5  |.  5D            POP EBP
  00407EC6  |.  33C0          XOR EAX,EAX
  00407EC8  |.  5B            POP EBX
  00407EC9  |.  83C4 3C       ADD ESP,3C
  00407ECC  |.  C2 0800       RETN 8
  00407ECF  |>  81F9 609D9A1B CMP ECX,1B9A9D60
  00407ED5  |.  75 0C         JNZ SHORT sfld.00407EE3
  00407ED7  |.  5F            POP EDI
  00407ED8  |.  5E            POP ESI
  00407ED9  |.  5D            POP EBP
  00407EDA  |.  33C0          XOR EAX,EAX
  00407EDC  |.  5B            POP EBX
  00407EDD  |.  83C4 3C       ADD ESP,3C
  00407EE0  |.  C2 0800       RETN 8
  00407EE3  |>  81F9 677B7B3A CMP ECX,3A7B7B67
  00407EE9  |.  75 0C         JNZ SHORT sfld.00407EF7
  00407EEB  |.  5F            POP EDI
  00407EEC  |.  5E            POP ESI
  00407EED  |.  5D            POP EBP
  00407EEE  |.  33C0          XOR EAX,EAX
  00407EF0  |.  5B            POP EBX
  00407EF1  |.  83C4 3C       ADD ESP,3C
  00407EF4  |.  C2 0800       RETN 8
  00407EF7  |>  81F9 A87A1C19 CMP ECX,191C7AA8
  00407EFD  |.  75 0C         JNZ SHORT sfld.00407F0B
  00407EFF  |.  5F            POP EDI
  00407F00  |.  5E            POP ESI
  00407F01  |.  5D            POP EBP
  00407F02  |.  33C0          XOR EAX,EAX
  00407F04  |.  5B            POP EBX
  00407F05  |.  83C4 3C       ADD ESP,3C
  00407F08  |.  C2 0800       RETN 8
  00407F0B  |>  81F9 20C8082B CMP ECX,2B08C820
  00407F11  |.  75 0C         JNZ SHORT sfld.00407F1F
  00407F13  |.  5F            POP EDI
  00407F14  |.  5E            POP ESI
  00407F15  |.  5D            POP EBP
  00407F16  |.  33C0          XOR EAX,EAX
  00407F18  |.  5B            POP EBX
  00407F19  |.  83C4 3C       ADD ESP,3C
  00407F1C  |.  C2 0800       RETN 8
  00407F1F  |>  81F9 1366950D CMP ECX,0D956613
  00407F25  |.  75 0C         JNZ SHORT sfld.00407F33
  00407F27  |.  5F            POP EDI
  00407F28  |.  5E            POP ESI
  00407F29  |.  5D            POP EBP
  00407F2A  |.  33C0          XOR EAX,EAX
  00407F2C  |.  5B            POP EBX
  00407F2D  |.  83C4 3C       ADD ESP,3C
  00407F30  |.  C2 0800       RETN 8
  00407F33  |>  81F9 900B6918 CMP ECX,18690B90
  00407F39  |.  75 0C         JNZ SHORT sfld.00407F47
  00407F3B  |.  5F            POP EDI
  00407F3C  |.  5E            POP ESI
  00407F3D  |.  5D            POP EBP
  00407F3E  |.  33C0          XOR EAX,EAX
  00407F40  |.  5B            POP EBX
  00407F41  |.  83C4 3C       ADD ESP,3C
  00407F44  |.  C2 0800       RETN 8
  00407F47  |>  81F9 D3512418 CMP ECX,182451D3
  00407F4D  |.  75 0C         JNZ SHORT sfld.00407F5B
  00407F4F  |.  5F            POP EDI
  00407F50  |.  5E            POP ESI
  00407F51  |.  5D            POP EBP
  00407F52  |.  33C0          XOR EAX,EAX
  00407F54  |.  5B            POP EBX
  00407F55  |.  83C4 3C       ADD ESP,3C
  00407F58  |.  C2 0800       RETN 8
  00407F5B  |>  81F9 283F3205 CMP ECX,5323F28
  00407F61  |.  75 0C         JNZ SHORT sfld.00407F6F
  00407F63  |.  5F            POP EDI
  00407F64  |.  5E            POP ESI
  00407F65  |.  5D            POP EBP
  00407F66  |.  33C0          XOR EAX,EAX
  00407F68  |.  5B            POP EBX
  00407F69  |.  83C4 3C       ADD ESP,3C
  00407F6C  |.  C2 0800       RETN 8
  00407F6F  |>  81F9 19E0B81C CMP ECX,1CB8E019
  00407F75  |.  75 0C         JNZ SHORT sfld.00407F83
  00407F77  |.  5F            POP EDI
  00407F78  |.  5E            POP ESI
  00407F79  |.  5D            POP EBP
  00407F7A  |.  33C0          XOR EAX,EAX
  00407F7C  |.  5B            POP EBX
  00407F7D  |.  83C4 3C       ADD ESP,3C
  00407F80  |.  C2 0800       RETN 8
  00407F83  |>  81F9 1DCAFE0A CMP ECX,0AFECA1D
  00407F89  |.  75 0C         JNZ SHORT sfld.00407F97
  00407F8B  |.  5F            POP EDI
  00407F8C  |.  5E            POP ESI
  00407F8D  |.  5D            POP EBP
  00407F8E  |.  33C0          XOR EAX,EAX
  00407F90  |.  5B            POP EBX
  00407F91  |.  83C4 3C       ADD ESP,3C
  00407F94  |.  C2 0800       RETN 8
  00407F97  |>  81F9 3DEE4007 CMP ECX,740EE3D
  00407F9D  |.  75 0C         JNZ SHORT sfld.00407FAB
  00407F9F  |.  5F            POP EDI
  00407FA0  |.  5E            POP ESI
  00407FA1  |.  5D            POP EBP
  00407FA2  |.  33C0          XOR EAX,EAX
  00407FA4  |.  5B            POP EBX
  00407FA5  |.  83C4 3C       ADD ESP,3C
  00407FA8  |.  C2 0800       RETN 8
  00407FAB  |>  81F9 A47C2030 CMP ECX,30207CA4
  00407FB1  |.  75 0C         JNZ SHORT sfld.00407FBF
  00407FB3  |.  5F            POP EDI
  00407FB4  |.  5E            POP ESI
  00407FB5  |.  5D            POP EBP
  00407FB6  |.  33C0          XOR EAX,EAX
  00407FB8  |.  5B            POP EBX
  00407FB9  |.  83C4 3C       ADD ESP,3C
  00407FBC  |.  C2 0800       RETN 8
  00407FBF  |>  81F9 24BED122 CMP ECX,22D1BE24
  00407FC5  |.  75 0C         JNZ SHORT sfld.00407FD3
  00407FC7  |.  5F            POP EDI
  00407FC8  |.  5E            POP ESI
  00407FC9  |.  5D            POP EBP
  00407FCA  |.  33C0          XOR EAX,EAX
  00407FCC  |.  5B            POP EBX
  00407FCD  |.  83C4 3C       ADD ESP,3C
  00407FD0  |.  C2 0800       RETN 8
  00407FD3  |>  81F9 7843FD0A CMP ECX,0AFD4378
  00407FD9  |.  75 0C         JNZ SHORT sfld.00407FE7
  00407FDB  |.  5F            POP EDI
  00407FDC  |.  5E            POP ESI
  00407FDD  |.  5D            POP EBP
  00407FDE  |.  33C0          XOR EAX,EAX
  00407FE0  |.  5B            POP EBX
  00407FE1  |.  83C4 3C       ADD ESP,3C
  00407FE4  |.  C2 0800       RETN 8
  00407FE7  |>  81F9 D9BCFB0A CMP ECX,0AFBBCD9
  00407FED  |.  75 0C         JNZ SHORT sfld.00407FFB
  00407FEF  |.  5F            POP EDI
  00407FF0  |.  5E            POP ESI
  00407FF1  |.  5D            POP EBP
  00407FF2  |.  33C0          XOR EAX,EAX
  00407FF4  |.  5B            POP EBX
  00407FF5  |.  83C4 3C       ADD ESP,3C
  00407FF8  |.  C2 0800       RETN 8
  00407FFB  |>  81F9 C781C639 CMP ECX,39C681C7
  00408001  |.  75 0C         JNZ SHORT sfld.0040800F
  00408003  |.  5F            POP EDI
  00408004  |.  5E            POP ESI
  00408005  |.  5D            POP EBP
  00408006  |.  33C0          XOR EAX,EAX
  00408008  |.  5B            POP EBX
  00408009  |.  83C4 3C       ADD ESP,3C
  0040800C  |.  C2 0800       RETN 8
  0040800F  |>  81F9 3A36FA0A CMP ECX,0AFA363A
  00408015  |.  75 0C         JNZ SHORT sfld.00408023
  00408017  |.  5F            POP EDI
  00408018  |.  5E            POP ESI
  00408019  |.  5D            POP EBP
  0040801A  |.  33C0          XOR EAX,EAX
  0040801C  |.  5B            POP EBX
  0040801D  |.  83C4 3C       ADD ESP,3C
  00408020  |.  C2 0800       RETN 8
  00408023  |>  81F9 1F824507 CMP ECX,745821F
  00408029  |.  75 0C         JNZ SHORT sfld.00408037
  0040802B  |.  5F            POP EDI
  0040802C  |.  5E            POP ESI
  0040802D  |.  5D            POP EBP
  0040802E  |.  33C0          XOR EAX,EAX
  00408030  |.  5B            POP EBX
  00408031  |.  83C4 3C       ADD ESP,3C
  00408034  |.  C2 0800       RETN 8
  00408037  |>  81F9 38EE4007 CMP ECX,740EE38
  0040803D  |.  75 0C         JNZ SHORT sfld.0040804B
  0040803F  |.  5F            POP EDI
  00408040  |.  5E            POP ESI
  00408041  |.  5D            POP EBP
  00408042  |.  33C0          XOR EAX,EAX
  00408044  |.  5B            POP EBX
  00408045  |.  83C4 3C       ADD ESP,3C
  00408048  |.  C2 0800       RETN 8
  ---------------------------------------------------------------------------------------
  这一段的意思是注册码的第二段不能等于上面的这些值
  ---------------------------------------------------------------------------------------
  0040804B  |>  33C0          XOR EAX,EAX
  0040804D  |.  5F            POP EDI
  0040804E  |.  81F9 C150000B CMP ECX,0B0050C1                       ;是否等于0xB0050C1 
  00408054  |.  5E            POP ESI
  00408055  |.  5D            POP EBP
  00408056  |.  5B            POP EBX
  00408057      0F95C0        SETNE AL                               ;不相等,AL=1
  0040805A  |.  83C4 3C       ADD ESP,3C
  0040805D  \.  C2 0800       RETN 8
  ---------------------------------------------------------------------------------------
  AL的值代表着注册成功与否,AL=1注册成功
  ========================================================================================
  
  
  
  
  算法总结:
     (1) 注册码共分成三段,中间一段是固定的,SFDL;
     (2) 第一段注册码记SN1,第二段注册码记SN2;
     (3) SN1的2,3位和SN2的1,3,4,6,9位加起来,%A后要等于SN1[4]
     (4) sum=SN1[1]+SN1[2]+SN2[0]+SN2[2]+SN2[3]+SN2[5]+SN2[8]+SN1[4]; 
     (5) SN1[2]等于(sum+sum % A+7) % A;
     (6) SN2[1]等于(sum+SN1[2]+5)% A;
     (7) SN2[6]等于(sum+SN2[1]+9)% A;
     (8) SN2[7]等于(sum+SN2[6]+3)% A;
     (9) SN2[4]等于(sum+SN2[7]+2)% A;
     (10)SN1[1]等于(sum+SN2[4]+8)% A;
     (11) SN2不能等于表中列的那些值;
     (12) SN2不能等于0xB0050C1,满足这些条件注册成功。
  
      从这里我们可以看出,还有几位没有参与运算,我们倒推出注册码,假设SN2=0xB0050C1=184570049
  第二段的第5位固定了,倒推回去,适当的估计一下和的大小,假设75,SN1[1]就有了,0,再往回推,简
  单的数学加减乘除法,方法太苯了,不详细叙述了
  
  
  
  
  
  
  
  
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  没有想到好的处理方法,惭愧
  705462-SFLD-185470049
  705462-SFLD-581470049
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年06月24日 10:29:58