Talisman V2.81注册算法分析
【破解作者】 winndy
【作者邮箱】 CNwinndy@hotmail.com
【使用工具】 PEID v0.93  OllyDbg v1.10 fly修改版  DeDe.3.50.04.1635
【破解平台】 Winxp SP2
【软件名称】 Talisman Desktop 2.81  (build 2810)
【官方网址】 http://www.lighttek.com
【编写语言】 Borland Delphi 4.0 - 5.0
【破解声明】 For Study ,For Fun,
【破解说明】 无壳,失误之处还望指出
【破解过程】 PEID:Borland Delphi 4.0 - 5.0。
             DeDe:反汇编。找到About窗口,ClassName是TAboutBox,双击,打开form看看,DeDE报错

,另外再想办法确定输入注册信息后点击的那个按钮吧。
             点Procedures,选择UnitName为about,右边的event中有OKButtonClick,

SpeedButton4Click,SpeedButton1Click,
             通过观察,可知SpeedButton1Click事件对应着输入注册码后所按的按钮。于是用OD载入,

ctrl+g,00489435,在SpeedButton1Click的开始处下段。

             
下面是从DeDe中Copy而来的代码,不过要注意,DeDe反汇编出来的不总是对的,可能还有点小Bug,后面会

发现。
注册时:首先,输name:CNwinndy,code:1234567890;第二遍跟踪的时候code:12345678901234567890

。后面会看到为什么。

12:11 2005-4-29   55                     push    ebp
00489435   8BEC                   mov     ebp, esp
00489437   6A00                   push    $00
00489439   6A00                   push    $00
0048943B   6A00                   push    $00
0048943D   53                     push    ebx
0048943E   56                     push    esi
0048943F   8BD8                   mov     ebx, eax
00489441   33C0                   xor     eax, eax
00489443   55                     push    ebp

* Possible String Reference to: '閥_?豚^[嬪]?
|
00489444   6866954800             push    $00489566

***** TRY
|
00489449   64FF30                 push    dword ptr fs:[eax]
0048944C   648920                 mov     fs:[eax], esp
0048944F   8D55FC                 lea     edx, [ebp-$04]

* Reference to control TAboutBox.edit_code : TEdit       //这里是取注册码啦
|
00489452   8B83E0020000           mov     eax, [ebx+$02E0]

* Reference to: controls.TControl.GetText(TControl):TCaption;
|
00489458   E8B319FAFF             call    0042AE10
0048945D   8D55F8                 lea     edx, [ebp-$08]

* Reference to control TAboutBox.edit_code : TEdit
|
00489460   8B83E0020000           mov     eax, [ebx+$02E0]

* Reference to: controls.TControl.GetText(TControl):TCaption;
|
00489466   E8A519FAFF             call    0042AE10
0048946B   837DF800               cmp     dword ptr [ebp-$08], +$00

//D [EBP-8]
//0101B708  31 32 33 34 35 36 37 38  12345678
//0101B710  39 30 00 20              90.




0048946F   0F84CB000000           jz      00489540
00489475   837DFC00               cmp     dword ptr [ebp-$04], +$00

//D [EBP-8]
//0101B6F0  31 32 33 34 35 36 37 38  12345678
//0101B6F8  39 30 00 00              90..


00489479   0F84C1000000           jz      00489540
0048947F   8B45FC                 mov     eax, [ebp-$04]   //EAX 0101B6F0 ASCII "1234567890"


* Reference to: System.Proc_00403DBC
|
00489482   E835A9F7FF             call    00403DBC            //跟进,
  {
     00403DBC   /$  85C0               test eax,eax                  ;注册码是否为空
     00403DBE   |.  74 03              je short talisman.00403DC3
     00403DC0   |.  8B40 FC            mov eax,dword ptr ds:[eax-4]  ;EAX=0000000A,注册码长


     00403DC3   \>  C3                 retn


  }
00489487   8BF0                   mov     esi, eax                   ;保存注册码长度
00489489   85F6                   test    esi, esi
0048948B   7E39                   jle     004894C6
0048948D   B801000000             mov     eax, $00000001             ;计数器初值为1
LOOP:
00489492   8B55FC                 mov     edx, [ebp-$04]             ;EDX 0101B6F0 ASCII 

"1234567890"
00489495   8A5402FF               mov     dl, byte ptr [edx+eax-$01] ;取注册码第eax个字符
00489499   80FA39                 cmp     dl, $39
0048949C   7708                   jnbe    004894A6                   ;大于9就跳
0048949E   8B4DFC                 mov     ecx, [ebp-$04]             ;ECX 0101B6F0 ASCII 

"1234567890"
004894A1   80FA30                 cmp     dl, $30
004894A4   731C                   jnb     004894C2                   ;不小于0就跳
004894A6   B201                   mov     dl, $01

* Reference to control TAboutBox.Panel2 : TPanel
|
004894A8   8B83FC020000           mov     eax, [ebx+$02FC]

* Reference to: controls.TControl.SetVisible(TControl;Boolean);       ;
|
004894AE   E87518FAFF             call    0042AD28
004894B3   B201                   mov     dl, $01

* Reference to control TAboutBox.Timer1 : TTimer
|
004894B5   8B8300030000           mov     eax, [ebx+$0300]

* Reference to: extctrls.TTimer.SetEnabled(TTimer;Boolean);
|
004894BB   E86818FCFF             call    0044AD28
004894C0   EB7E                   jmp     00489540
004894C2   40                     inc     eax
004894C3   4E                     dec     esi
004894C4   75CC                   jnz     00489492           //GOTO LOOP
004894C6   8BC3                   mov     eax, ebx

* Reference to : TAboutBox.Proc_0048961C()
|
004894C8   E84F010000             call    0048961C        *********       //见[分析一]

* Reference to: Unit_004AC9A4.Proc_004AD8D0
|
004894CD   E8FE430200             call    004AD8D0        **********    //见[分析二]  这两个

call很重要
004894D2   84C0                   test    al, al                        //al=01,则注册成功
004894D4   7450                   jz      00489526
004894D6   BA2C010000             mov     edx, $0000012C

* Reference to AboutBox
|
004894DB   A154494D00             mov     eax, dword ptr [$004D4954]

* Reference to: controls.TControl.SetWidth(TControl;Integer);
|
004894E0   E85B11FAFF             call    0042A640                     //F8

* Reference to pointer to GlobalVar_004D4D90
|
004894E5   A1BC354C00             mov     eax, dword ptr [$004C35BC]
004894EA   FF30                   push    dword ptr [eax]
004894EC   687C954800             push    $0048957C

* Reference to pointer to GlobalVar_004D4AA8
|
004894F1   A1A8314C00             mov     eax, dword ptr [$004C31A8]
004894F6   FF30                   push    dword ptr [eax]
004894F8   8D45F4                 lea     eax, [ebp-$0C]
004894FB   BA03000000             mov     edx, $00000003

* Reference to: System.Proc_00403E7C
|
00489500   E877A9F7FF             call    00403E7C                    //F8
00489505   8B55F4                 mov     edx, [ebp-$0C]              //EDX 0101B764 ASCII 

"Registered for CNwinndy"
                                                                       //看到这里,松口气了,

剩下的代码可以F9,GO!
                                                                       //出现了注册成功画面,

右边的注册面板则消失了
                                                            //点OK,再F9,点它的"START"button

,那个'关于和注册'消失!
                                                            //再打开,还是没注册。没有写进注

册表。
* Reference to AboutBox
|
00489508   A154494D00             mov     eax, dword ptr [$004D4954]

* Reference to control Label_user : TLabel
|
0048950D   8B80E8020000           mov     eax, [eax+$02E8]

* Reference to: controls.TControl.SetText(TControl;TCaption);
|
00489513   E82819FAFF             call    0042AE40

* Reference to TForm1 instance
|
00489518   A11C364C00             mov     eax, dword ptr [$004C361C]
0048951D   8B00                   mov     eax, [eax]
0048951F   33D2                   xor     edx, edx

* Reference to field TForm1.Tag : Longint
|
00489521   89500C                 mov     [eax+$0C], edx
00489524   EB1A                   jmp     00489540
00489526   B201                   mov     dl, $01

* Reference to control TAboutBox.Panel2 : TPanel
|
00489528   8B83FC020000           mov     eax, [ebx+$02FC]

* Reference to: controls.TControl.SetVisible(TControl;Boolean);
|
0048952E   E8F517FAFF             call    0042AD28
00489533   B201                   mov     dl, $01

* Reference to control TAboutBox.Timer1 : TTimer
|
00489535   8B8300030000           mov     eax, [ebx+$0300]

* Reference to: extctrls.TTimer.SetEnabled(TTimer;Boolean);
|
0048953B   E8E817FCFF             call    0044AD28
00489540   33C0                   xor     eax, eax
00489542   5A                     pop     edx
00489543   59                     pop     ecx
00489544   59                     pop     ecx
00489545   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '^[嬪]?
|
00489548   686D954800             push    $0048956D
0048954D   8D45F4                 lea     eax, [ebp-$0C]

* Reference to: System.Proc_00403B40
|
00489550   E8EBA5F7FF             call    00403B40
00489555   8D45F8                 lea     eax, [ebp-$08]

* Reference to: System.Proc_00403B40
|
00489558   E8E3A5F7FF             call    00403B40
0048955D   8D45FC                 lea     eax, [ebp-$04]

* Reference to: System.Proc_00403B40
|
00489560   E8DBA5F7FF             call    00403B40
00489565   C3                     ret


* Reference to: System.Proc_004035E4
|
00489566   E979A0F7FF             jmp     004035E4
0048956B   EBE0                   jmp     0048954D

****** END
|
0048956D   5E                     pop     esi
0048956E   5B                     pop     ebx
0048956F   8BE5                   mov     esp, ebp
00489571   5D                     pop     ebp
00489572   C3                     ret


=====================================================================
[分析一]


0048961C   55                     push    ebp
0048961D   8BEC                   mov     ebp, esp
0048961F   81C4E0FEFFFF           add     esp, $FFFFFEE0
00489625   53                     push    ebx
00489626   56                     push    esi
00489627   57                     push    edi
00489628   33D2                   xor     edx, edx
0048962A   8995E0FEFFFF           mov     [ebp+$FFFFFEE0], edx    //ebp-120=0012FAAC
00489630   8995E8FEFFFF           mov     [ebp+$FFFFFEE8], edx    //ebp-118
00489636   8995E4FEFFFF           mov     [ebp+$FFFFFEE4], edx    //ebp-11c
0048963C   8955F8                 mov     [ebp-$08], edx    
0048963F   8955F4                 mov     [ebp-$0C], edx          //ebp-0c=0012FBC0
00489642   33C0                   xor     eax, eax
00489644   55                     push    ebp

* Possible String Reference to: '閫濛胄_^[嬪]?
|
00489645   685F984800             push    $0048985F

***** TRY
|
0048964A   64FF30                 push    dword ptr fs:[eax]
0048964D   648920                 mov     fs:[eax], esp
00489650   B201                   mov     dl, $01

* Reference to class TRegistry
|
00489652   A158EE4400             mov     eax, dword ptr [$0044EE58]

* Reference to: Unit_0044EDF8.Proc_0044EF98
|
00489657   E83C59FCFF             call    0044EF98        //F8
0048965C   8945FC                 mov     [ebp-$04], eax
0048965F   BA01000080             mov     edx, $80000001
00489664   8B45FC                 mov     eax, [ebp-$04]

* Reference to: Unit_0044EDF8.Proc_0044F030
|
00489667   E8C459FCFF             call    0044F030
0048966C   B101                   mov     cl, $01

* Possible String Reference to: '\Software\Microsoft\Windows\Current
|                                Version\Explorer\Advanced'                       //注意,
|
0048966E   BA78984800             mov     edx, $00489878
00489673   8B45FC                 mov     eax, [ebp-$04]

* Reference to: Unit_0044EDF8.Proc_0044F18C
|
00489676   E8115BFCFF             call    0044F18C
0048967B   6800010000             push    $00000100
00489680   8D8DEEFEFFFF           lea     ecx, [ebp+$FFFFFEEE]

* Possible String Reference to: 'WCID'                                           //注意
|
00489686   BAC0984800             mov     edx, $004898C0
0048968B   8B45FC                 mov     eax, [ebp-$04]

* Reference to: Unit_0044EDF8.Proc_0044F898
|
0048968E   E80562FCFF             call    0044F898
00489693   0FB6BD25FFFFFF         movzx   edi, byte ptr [ebp+$FFFFFF25]   //00000014          

注意,后面会再store到其他地方
0048969A   33C0                   xor     eax, eax
0048969C   8A8527FFFFFF           mov     al, byte ptr [ebp+$FFFFFF27]    //05
004896A2   668945F2               mov     [ebp-$0E], ax                   //ebp-0e=0012FBBE
004896A6   33C0                   xor     eax, eax
004896A8   8A852AFFFFFF           mov     al, byte ptr [ebp+$FFFFFF2A]    //04
004896AE   668945F0               mov     [ebp-$10], ax                   //ebp-10=0012FBBC
004896B2   33C0                   xor     eax, eax
004896B4   8A852DFFFFFF           mov     al, byte ptr [ebp+$FFFFFF2D]    //1D
004896BA   668945EE               mov     [ebp-$12], ax                   //ebp-12=0012FBBA
004896BE   BB00010000             mov     ebx, $00000100
004896C3   8DB5EEFEFFFF           lea     esi, [ebp+$FFFFFEEE]            //esi=0012FABA

004896C9   B8FF000000             mov     eax, $000000FF

* Reference to: system.@RandInt;
|
004896CE   E8B995F7FF             call    00402C8C            //这段call的功能是初始化注册信

息数组,byte reginfo[0x100]

   {00402C8C    /$  6915 44404C00 05840808 imul edx,dword ptr ds:[4C4044],8088405;[4c4044]

=1EF18248;1EF18248*8088405= 00F89393 7424AB68(EDX)
    00402C96    |.  42                     inc edx
    00402C97    |.  8915 44404C00          mov dword ptr ds:[4C4044],edx
    00402C9D    |.  F7E2                   mul edx
    00402C9F    |.  89D0                   mov eax,edx
    00402CA1    \.  C3                     retn
   }
004896D3   8806                   mov     [esi], al
004896D5   46                     inc     esi
004896D6   4B                     dec     ebx
004896D7   75F0                   jnz     004896C9

//上面这个loop从地址0012FABA处开始初始化100个byte,一共32行
//0012FABA  50 72 09 07 12 A6 1D 5F  Pr.?_
0012FAC2  43 F8 C7 FB F7 F7 4E 91  C鱊
0012FACA  36 0A E9 C7 E8 99 A3 87  6.榍铏
0012FAD2  07 5E 16 B3 DF 28 90 B1  ^尺(惐
0012FADA  8F B0 4E 83 0A 3A C7 42  彴N?:荁
0012FAE2  50 09 55 3D B0 10 9E 20  P.U=??
0012FAEA  25 4A 97 C4 3B 94 FD AD  %J椖;旪
0012FAF2  0E 1D A2 43 40 A3 E6 51  @fQ
0012FAFA  06 24 37 5F A2 AD 84 DE  $7_勣
0012FB02  ED 7F DF 4C C3 A2 D4 C3  ?週芒悦
0012FB0A  7C A5 1E 9C BD 2F D3 0C  |?溄/?
0012FB12  4E 85 26 F0 BA 4A 48 32  N?鸷JH2
0012FB1A  F7 FE 2A 6C 4D 15 0F C0  齄*lM
0012FB22  2F A5 34 06 E2 06 04 C2  /??
0012FB2A  02 D9 95 98 44 65 72 09  贂楧er.
0012FB32  1F 29 DE D2 24 1D 1B 36  )抟$6
0012FB3A  2D 09 6B ED BC D6 C5 A6  -.k砑峙
0012FB42  2F D8 80 3B 83 65 65 1A  /貈;僥e
0012FB4A  01 39 F4 75 E3 87 CB 3C  9魎銍?
0012FB52  DC AF 6D F3 13 F0 EA F3  墀m?痍
0012FB5A  F0 9F 28 9C EB AB AE 82  馃(滊
0012FB62  09 8A 5B B0 DF C0 57 77  .奫斑繵w
0012FB6A  46 A9 1A 67 F7 3A 74 72  F?g?tr
0012FB72  E3 D3 D8 54 E3 70 66 B2  阌豑鉷f
0012FB7A  13 B0 6F A3 15 A2 6F 7B  皁?{
0012FB82  DE 3D BA 20 F3 EA 58 40  ??箨X@
0012FB8A  23 A4 C7 13 1F 76 A7 AC  #でvК
0012FB92  99 65 8B E6 B4 17 5F 72  檈嬫?_r
0012FB9A  E8 C1 33 A2 B8 1E 54 EA  枇3⒏T
0012FBA2  D4 8B FB 37 82 8B 0F 8A  詪?倠
0012FBAA  6F 39 A0 93 3A 87 42 1F  o9_?嘊
0012FBB2  63 44 53 91 6A 38 CC E2  cDS慾8题


004896D9   8D55F4                 lea     edx, [ebp-$0C]                //0012FBC0

* Reference to AboutBox
|
004896DC   A154494D00             mov     eax, dword ptr [$004D4954]

* Reference to control edit_code : N.A.                             //获得code
|
004896E1   8B80E0020000           mov     eax, [eax+$02E0]

* Reference to: controls.TControl.GetText(TControl):TCaption;
|
004896E7   E82417FAFF             call    0042AE10
004896EC   837DF400               cmp     dword ptr [ebp-$0C], +$00
004896F0   740D                   jz      004896FF
004896F2   8B45F4                 mov     eax, [ebp-$0C]   ;EAX 0101B710 ASCII "1234567890"

* Reference to: System.Proc_00403DBC
|
004896F5   E8C2A6F7FF             call    00403DBC
004896FA   83F814                 cmp     eax, +$14                ;eax=0000000A,注册码长度

,这里很关键!!!!
;后面会看到,注册码长度必须为20
004896FD   7D38                   jnl     00489737                 :关键,要跳才行,输

入"1234567890"没跳
004896FF   6A07                   push    $07                     //注意常数
00489701   68D7A1BD37             push    $37BDA1D7               //注意常数
00489706   8D85E8FEFFFF           lea     eax, [ebp+$FFFFFEE8]

* Reference to: Unit_004073B8.Proc_004082F8
|
0048970C   E8E7EBF7FF             call    004082F8

   {
     004082F8   55                     push    ebp
     004082F9   8BEC                   mov     ebp, esp
     004082FB   83C4F8                 add     esp, -$08
     004082FE   6A00                   push    $00
     00408300   8D5508                 lea     edx, [ebp+$08]  
     
;D EDX
;0012FA8C  D7 A1 BD 37 07 00 00 00  住?... 这是压入的参数


     00408303   8955F8                 mov     [ebp-$08], edx
     00408306   C645FC10               mov     byte ptr [ebp-$04], $10
     0040830A   8D4DF8                 lea     ecx, [ebp-$08]

     * Possible String Reference to: '%d'
     |
     0040830D   BA28834000             mov     edx, $00408328

     * Reference to: Unit_004073B8.Proc_00409030
     |
     00408312   E8190D0000             call    00409030     ;进去,但没观察到什么,可F8
     00408317   59                     pop     ecx
     00408318   59                     pop     ecx
     00408319   5D                     pop     ebp
     0040831A   C20800                 ret     $0008

   }


00489711   8B85E8FEFFFF           mov     eax, [ebp+$FFFFFEE8]   ;EAX 0101B728 ASCII 

"30999945687",这里有东东了
 ;运行calc,输入十进制30999945687(因为上面那个call中有格式串"%d"),转化为十六进制,737BDA1D7

,呵呵,知道了,刚压入了两个参数的,
 ;两个双字合并为64位的字,再转化为十进制了
00489717   50                     push    eax
00489718   8D95E4FEFFFF           lea     edx, [ebp+$FFFFFEE4]
0048971E   B821771906             mov     eax, $06197721                   //注意常数

* Reference to: Unit_004073B8.Proc_004082C8
|
00489723   E8A0EBF7FF             call    004082C8

     {
      004082C8   83C4F8                 add     esp, -$08
      004082CB   6A00                   push    $00
      004082CD   89442404               mov     [esp+$04], eax
      004082D1   C644240800             mov     byte ptr [esp+$08], $00
      004082D6   8D4C2404               lea     ecx, [esp+$04]
      004082DA   8BC2                   mov     eax, edx

      * Possible String Reference to: '%d'
      |
      004082DC   BAF4824000             mov     edx, $004082F4

      * Reference to: Unit_004073B8.Proc_00409030
      |
      004082E1   E84A0D0000             call    00409030   ;还是上面转化64进制到10进制中的那

个call
      004082E6   59                     pop     ecx
      004082E7   5A                     pop     edx
      004082E8   C3                     ret

     }



00489728   8B95E4FEFFFF           mov     edx, [ebp+$FFFFFEE4]   ;EDX 0101B740 ASCII 

"102332193" 102332193=$06197721
0048972E   8D45F4                 lea     eax, [ebp-$0C]
00489731   59                     pop     ecx

;EAX 0012FBC0    D [eax] 0101B710  31 32 33 34 35 36 37 38  12345678
                          0101B718  39 30 00                 90.
;ECX 0101B728 ASCII "30999945687"
;EDX 0101B740 ASCII "102332193"



* Reference to: System.Proc_00403E08
|
00489732   E8D1A6F7FF             call    00403E08          //这个call,见[分析四]

**************注册码长为0x14跳到这里,前面那一段没有执行
00489737   33DB                   xor     ebx, ebx          //计数器清零
00489739   8D85EEFEFFFF           lea     eax, [ebp+$FFFFFEEE]   //eax=0012FABA,设为String1

的地址
 
;这个地址和前面初始化$100个byte的首地址相同,

这句执行完后,看到CPU下面的提示面板里有:
Stack ss:[0012FBC0]=0101B758, (ASCII "10233219330999945687")  ===>果然不错啊!^_^
edx=0101B761, (ASCII "30999945687")
Jump from 00489751


Loop:
0048973F   8B55F4                 mov     edx, [ebp-$0C]           ;EDX 0101B758 ASCII 

"10233219330999945687"

;注册码长为20,EDX 0101B888 ASCII "12345678901234567890",这是输入的注册码

00489742   8A141A                 mov     dl, byte ptr [edx+ebx]   ;依次取每个字符
00489745   80EA14                 sub     dl, $14
00489748   8810                   mov     [eax], dl                ;存入string1 ,byte to 

word  
 //修正前面初始化的$100个byte   
0048974A   43                     inc     ebx                      ;计数器++
0048974B   83C002                 add     eax, +$02                ;Move to the next word     

    
0048974E   83FB14                 cmp     ebx, +$14                ;IS the END?
00489751   75EC                   jnz     0048973F                 ;Goto LOoP

00489753   8BC7                   mov     eax, edi                 ;eax=00000014,长度   //

取出前面压入的数
00489755   888525FFFFFF           mov     [ebp+$FFFFFF25], al      ;mov byte ptr ss:[ebp-

DB],al //习惯于看减法
                                                                   ;ebp-DB=0012FAF1
0048975B   8A45F2                 mov     al, byte ptr [ebp-$0E]   ;al=05
0048975E   888527FFFFFF           mov     [ebp+$FFFFFF27], al      ;mov     [ebp-D9], al 
                                                                   ;ebp-D9=0012FAF3
00489764   8A45F0                 mov     al, byte ptr [ebp-$10]   ;al=04
00489767   88852AFFFFFF           mov     [ebp+$FFFFFF2A], al      ;mov byte ptr ss:[ebp-

D6],al
                                                                   ;ebp-D6=0012FAF6
0048976D   8A45EE                 mov     al, byte ptr [ebp-$12]   ;al=1D
00489770   88852DFFFFFF           mov     [ebp+$FFFFFF2D], al      ;mov byte ptr ss:[ebp-

D3],al
                                                                   ;ebp-D3=0012FAF9

* Possible String Reference to: '2810'
|
00489776   B8D0984800             mov     eax, $004898D0

* Reference to: Unit_004073B8.Proc_0040832C
|
0048977B   E8ACEBF7FF             call    0040832C              ///见后面的[分析三] ,

将"2810"转化为十六进制数0AFA
00489780   8BC8                   mov     ecx, eax              //ECX 00000AFA
00489782   8BC1                   mov     eax, ecx              //
00489784   BB64000000             mov     ebx, $00000064        //
00489789   99                     cdq                           //
0048978A   F7FB                   idiv    ebx 

;EAX 0000001C
;ECX 00000AFA      ECX=EAX*EBX+EDX
;EDX 0000000A
;EBX 00000064


0048978C   8BD8                   mov     ebx, eax              //商
0048978E   8BC3                   mov     eax, ebx              //商
00489790   0414                   add     al, +$14              //1C+14=30
00489792   88852EFFFFFF           mov     [ebp+$FFFFFF2E], al   ;mov byte ptr ss:[ebp-D2],al 

 ,ebp-0d2=0012FAFA,0x100个byte首地址
00489798   2ACB                   sub     cl, bl               //FA-1C=DE,将版本信息保存到注

册信息数组中
0048979A   80C114                 add     cl, $14              //DE+14=F2
0048979D   888D38FFFFFF           mov     [ebp+$FFFFFF38], cl   ;mov byte ptr ss:[ebp-C8],cl 

  ebp-C8=0012FB04
004897A3   8D45F8                 lea     eax, [ebp-$08]     //eax=0012FBC4,不是0x100byte中

的字

* Reference to: System.Proc_00403B40
|
004897A6   E895A3F7FF             call    00403B40

   {
     00403B40   8B10                   mov     edx, [eax]
     00403B42   85D2                   test    edx, edx                     //edx=0就跳了,看

来edx是个标志
     00403B44   741B                   jz      00403B61
     00403B46   C70000000000           mov     dword ptr [eax], $00000000  //不为0就置[eax]为

0
     00403B4C   8B4AF8                 mov     ecx, [edx-$08]
     00403B4F   49                     dec     ecx
     00403B50   7C0F                   jl      00403B61
     00403B52   894AF8                 mov     [edx-$08], ecx
     00403B55   750A                   jnz     00403B61
     00403B57   50                     push    eax
     00403B58   8D42F8                 lea     eax, [edx-$08]

     * Reference to: system.@FreeMem;
     |
     00403B5B   E8E4EBFFFF             call    00402744
     00403B60   58                     pop     eax
     00403B61   C3                     ret

   }



004897AB   8D95E0FEFFFF           lea     edx, [ebp+$FFFFFEE0]   ;lea edx,dword ptr ss:[ebp

-120]   edx=0012FAAC

* Reference to AboutBox
|
004897B1   A154494D00             mov     eax, dword ptr [$004D4954]   ;eax=00FF798C

* Reference to control edit_name : N.A.                            ********************获得用

户名*****
|
004897B6   8B80E4020000           mov     eax, [eax+$02E4]            ;eax=00FDDA84

* Reference to: controls.TControl.GetText(TControl):TCaption;
|
004897BC   E84F16FAFF             call    0042AE10
004897C1   8B85E0FEFFFF           mov     eax, [ebp+$FFFFFEE0]         ;EAX 0101B710 ASCII 

"CNwinndy"
004897C7   8D55F4                 lea     edx, [ebp-$0C]               ;EDX 0012FBC0

* Reference to: Unit_004073B8.Proc_00408148
|
004897CA   E879E9F7FF             call    00408148                    ;第一次跟进了没发现什

么,第二次F8跳过
004897CF   8B45F4                 mov     eax, [ebp-$0C]              ;EAX 0101B77C ASCII 

"CNwinndy"

* Reference to: System.Proc_00403DBC
|
004897D2   E8E5A5F7FF             call    00403DBC        

     {
        00403DBC   85C0                   test    eax, eax
        00403DBE   7403                   jz      00403DC3
        00403DC0   8B40FC                 mov     eax, [eax-$04]
        00403DC3   C3                     ret

     }

004897D7   8BD0                   mov     edx, eax                  ;eax=00000008,用户名长


004897D9   85D2                   test    edx, edx
004897DB   7E1C                   jle     004897F9                  ;用户名为空就跳
004897DD   BB01000000             mov     ebx, $00000001            ;计数器初值
004897E2   8D8559FFFFFF           lea     eax, [ebp+$FFFFFF59]      ;lea eax,dword ptr ss:

[ebp-A7]   eax=0012FB25,设为String2的首地址
004897E8   8B4DF4                 mov     ecx, [ebp-$0C]            ;ECX 0101B77C ASCII 

"CNwinndy"

loop:
004897EB   8A4C19FF               mov     cl, byte ptr [ecx+ebx-$01]
004897EF   80E90F                 sub     cl, $0F
004897F2   8808                   mov     [eax], cl                ;保存到String2
004897F4   43                     inc     ebx
004897F5   40                     inc     eax
004897F6   4A                     dec     edx
004897F7   75EF                   jnz     004897E8                 ;goto loop
  
 ;0012FB25  34 3F 68 5A 5F 5F 55 6A  4?hZ__Uj       ===>用户名



004897F9   C6841D58FFFFFF00       mov     byte ptr [ebp+ebx+$FFFFFF58], $00   ;mov byte ptr 

ss:[ebp+ebx-A8],0  置字符串结尾标志\0
00489801   6800010000             push    $00000100
00489806   8D8DEEFEFFFF           lea     ecx, [ebp+$FFFFFEEE]                ;lea ecx,dword 

ptr ss:[ebp-112]   ecx=0012FABA

* Possible String Reference to: 'WCID'
|
0048980C   BAC0984800             mov     edx, $004898C0
00489811   8B45FC                 mov     eax, [ebp-$04]

* Reference to: Unit_0044EDF8.Proc_0044F884
|
00489814   E86B60FCFF             call    0044F884                  ; F8跳过

     {0044F884   55                     push    ebp
      0044F885   8BEC                   mov     ebp, esp
      0044F887   53                     push    ebx
      0044F888   8B5D08                 mov     ebx, [ebp+$08]
      0044F88B   53                     push    ebx
      0044F88C   6A04                   push    $04

      * Reference to: Unit_0044EDF8.Proc_0044F8FC
      |
      0044F88E   E869000000             call    0044F8FC           //有关注册表操作,进去一遍

后没发现有价值的,下次可跳过
      0044F893   5B                     pop     ebx
      0044F894   5D                     pop     ebp
      0044F895   C20400                 ret     $0004

     }


00489819   8B45FC                 mov     eax, [ebp-$04]          //eax=0101B6EC

* Reference to: Unit_0044EDF8.Proc_0044F000
|
0048981C   E8DF57FCFF             call    0044F000               //有关注册表的操作,进去一遍

后没发现有价值的,下次可跳过
00489821   8B45FC                 mov     eax, [ebp-$04]         //eax=0101B6EC  

* Reference to: system.TObject.Free(TObject);
|
00489824   E84797F7FF             call    00402F70              //F8跳过
00489829   33C0                   xor     eax, eax
0048982B   5A                     pop     edx
0048982C   59                     pop     ecx
0048982D   59                     pop     ecx
0048982E   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '_^[嬪]?
|
00489831   6866984800             push    $00489866
00489836   8D85E0FEFFFF           lea     eax, [ebp+$FFFFFEE0] ;lea eax,dword ptr ss:[ebp-

120]  //eax=0012FAAC

;   D [eax]
;   0101B710  43 4E 77 69 6E 6E 64 79  CNwinndy
;   0101B718  00                       .


* Reference to: System.Proc_00403B40
|
0048983C   E8FFA2F7FF             call    00403B40               ;F8

00489841   8D85E4FEFFFF           lea     eax, [ebp+$FFFFFEE4]  ;lea eax,dword ptr ss:[ebp-

11C]  //eax=0012FAB0


;D [eax]
;0101B740  31 30 32 33 33 32 31 39  10233219
;0101B748  33 00                    3.


00489847   BA02000000             mov     edx, $00000002

* Reference to: System.Proc_00403B64
|
0048984C   E813A3F7FF             call    00403B64               ;F8
00489851   8D45F4                 lea     eax, [ebp-$0C]
00489854   BA02000000             mov     edx, $00000002

* Reference to: System.Proc_00403B64
|
00489859   E806A3F7FF             call    00403B64                ;F8
0048985E   C3                     ret                             ;回到00489866


* Reference to: System.Proc_004035E4
|
0048985F   E9809DF7FF             jmp     004035E4
00489864   EBD0                   jmp     00489836

****** END
|
00489866   5F                     pop     edi
00489867   5E                     pop     esi
00489868   5B                     pop     ebx
00489869   8BE5                   mov     esp, ebp
0048986B   5D                     pop     ebp
0048986C   C3                     ret                            ;回到004894CD,见上面
===================================================================================
[分析二]**************************很重要,也很长

004AD8D0   55                     push    ebp
004AD8D1   8BEC                   mov     ebp, esp
004AD8D3   81C4E4FEFFFF           add     esp, $FFFFFEE4
004AD8D9   53                     push    ebx
004AD8DA   56                     push    esi
004AD8DB   57                     push    edi
004AD8DC   33C0                   xor     eax, eax
004AD8DE   8985E8FEFFFF           mov     [ebp+$FFFFFEE8], eax;ebp-118=0012FAB4
004AD8E4   8945F8                 mov     [ebp-$08], eax
004AD8E7   8945F4                 mov     [ebp-$0C], eax
004AD8EA   8945F0                 mov     [ebp-$10], eax
004AD8ED   8945EC                 mov     [ebp-$14], eax      ;ebp-14=0012FBB8
004AD8F0   33C0                   xor     eax, eax
004AD8F2   55                     push    ebp

* Possible String Reference to: '轫Y?豚嬅_^[嬪]?
|
004AD8F3   68F2DB4A00             push    $004ADBF2

***** TRY
|
004AD8F8   64FF30                 push    dword ptr fs:[eax]
004AD8FB   648920                 mov     fs:[eax], esp
004AD8FE   B201                   mov     dl, $01

* Reference to class TRegistry
|
004AD900   A158EE4400             mov     eax, dword ptr [$0044EE58]

* Reference to: Unit_0044EDF8.Proc_0044EF98
|
004AD905   E88E16FAFF             call    0044EF98                  ;F8跳过
004AD90A   8BF8                   mov     edi, eax
004AD90C   BA01000080             mov     edx, $80000001
004AD911   8BC7                   mov     eax, edi

* Reference to: Unit_0044EDF8.Proc_0044F030
|
004AD913   E81817FAFF             call    0044F030                  ;F8跳过
004AD918   B101                   mov     cl, $01

* Possible String Reference to: '\Software\Microsoft\Windows\Current
|                                Version\Explorer\Advanced'
|
004AD91A   BA0CDC4A00             mov     edx, $004ADC0C
004AD91F   8BC7                   mov     eax, edi

* Reference to: Unit_0044EDF8.Proc_0044F18C
|
004AD921   E86618FAFF             call    0044F18C                 ;F8跳过

* Possible String Reference to: 'WCID'
|
004AD926   BA54DC4A00             mov     edx, $004ADC54
004AD92B   8BC7                   mov     eax, edi

* Reference to: Unit_0044EDF8.Proc_0044FA50
|
004AD92D   E81E21FAFF             call    0044FA50               ;进去看

      {0044FA50   /$  83C4 F8            add esp,-8
       0044FA53   |.  8BCC               mov ecx,esp
       0044FA55   |.  E8 C6FCFFFF        call talisman.0044F720 //* 

advapi32.RegQueryValueExA()

       0044FA5A   |.  59                 pop ecx
       0044FA5B   |.  5A                 pop edx
       0044FA5C   \.  C3                 retn


      }


004AD932   84C0                   test    al, al
004AD934   0F85B2000000           jnz     004AD9EC               ;跳了,跳过去的这一段就不看



004AD93A   BB33000000             mov     ebx, $00000033
004AD93F   8DB5ECFEFFFF           lea     esi, [ebp+$FFFFFEEC]

004AD945   B809000000             mov     eax, $00000009

* Reference to: system.@RandInt;
|
004AD94A   E83D53F5FF             call    00402C8C
004AD94F   041C                   add     al, +$1C
004AD951   8806                   mov     [esi], al
004AD953   46                     inc     esi
004AD954   4B                     dec     ebx
004AD955   75EE                   jnz     004AD945

004AD957   BBCD000000             mov     ebx, $000000CD
004AD95C   8DB51FFFFFFF           lea     esi, [ebp+$FFFFFF1F]
004AD962   B8FF000000             mov     eax, $000000FF

* Reference to: system.@RandInt;
|
004AD967   E82053F5FF             call    00402C8C
004AD96C   8806                   mov     [esi], al
004AD96E   46                     inc     esi
004AD96F   4B                     dec     ebx
004AD970   75F0                   jnz     004AD962
004AD972   C68557FFFFFF00         mov     byte ptr [ebp+$FFFFFF57], $00
004AD979   C68523FFFFFF01         mov     byte ptr [ebp+$FFFFFF23], $01
004AD980   C68525FFFFFF01         mov     byte ptr [ebp+$FFFFFF25], $01
004AD987   C68528FFFFFF01         mov     byte ptr [ebp+$FFFFFF28], $01
004AD98E   C6852BFFFFFF01         mov     byte ptr [ebp+$FFFFFF2B], $01

* Possible String Reference to: '2810'
|
004AD995   B864DC4A00             mov     eax, $004ADC64

* Reference to: Unit_004073B8.Proc_0040832C
|
004AD99A   E88DA9F5FF             call    0040832C
004AD99F   8BD8                   mov     ebx, eax
004AD9A1   8BC3                   mov     eax, ebx
004AD9A3   B964000000             mov     ecx, $00000064
004AD9A8   99                     cdq
004AD9A9   F7F9                   idiv    ecx 
004AD9AB   8BC8                   mov     ecx, eax
004AD9AD   8BC1                   mov     eax, ecx
004AD9AF   0414                   add     al, +$14
004AD9B1   88852CFFFFFF           mov     [ebp+$FFFFFF2C], al
004AD9B7   8BC1                   mov     eax, ecx
004AD9B9   6BC064                 imul    eax, eax, $64
004AD9BC   2AD8                   sub     bl, al
004AD9BE   80C314                 add     bl, $14
004AD9C1   889D36FFFFFF           mov     [ebp+$FFFFFF36], bl
004AD9C7   6800010000             push    $00000100
004AD9CC   8D8DECFEFFFF           lea     ecx, [ebp+$FFFFFEEC]

* Possible String Reference to: 'WCID'
|
004AD9D2   BA54DC4A00             mov     edx, $004ADC54
004AD9D7   8BC7                   mov     eax, edi

* Reference to: Unit_0044EDF8.Proc_0044F884
|
004AD9D9   E8A61EFAFF             call    0044F884

* Reference to TForm1 instance
|
004AD9DE   A11C364C00             mov     eax, dword ptr [$004C361C]
004AD9E3   8B00                   mov     eax, [eax]

* Reference to field TForm1.Tag : Longint
|
004AD9E5   C7400C01000000         mov     dword ptr [eax+$0C], $00000001

                                                                            ***跳到这里***

004AD9EC   6800010000             push    $00000100
004AD9F1   8D8DECFEFFFF           lea     ecx, [ebp+$FFFFFEEC]

* Possible String Reference to: 'WCID'
|
004AD9F7   BA54DC4A00             mov     edx, $004ADC54
004AD9FC   8BC7                   mov     eax, edi

* Reference to: Unit_0044EDF8.Proc_0044F898
|
004AD9FE   E8951EFAFF             call    0044F898    ;F8跳过
004ADA03   8D45F0                 lea     eax, [ebp-$10]

* Reference to: System.Proc_00403B40
|
004ADA06   E83561F5FF             call    00403B40    ;F8跳过
004ADA0B   BB14000000             mov     ebx, $00000014           ;常数

串"10233219330999945687"的长度
004ADA10   8DB5ECFEFFFF           lea     esi, [ebp+$FFFFFEEC]     ;lea esi,dword ptr ss:

[ebp-114];esi=0012FAB8

   ;D [ESI]                                    
 ;0012FAB8  1D 39 1C 91 1E D7 1F 7B  9??{               "10233219330999945687"经过处理得出

的数据
;0012FAC0  1F C0 1E 90 1D 3A 25 6D  ??:%m                从第一个开始,每次步长为2,隔一个
;0012FAC8  1F 0C 1F 9F 1C FB 25 FA  .??
;0012FAD0  25 97 25 93 25 05 20 BA  %?? 
;0012FAD8  21 DD 22 91 24 49 23 1A  !??I#


Loop:
004ADA16   8D85E8FEFFFF           lea     eax, [ebp+$FFFFFEE8]     ;lea eax,dword ptr ss:

[ebp-118],eax=0012FAB4
004ADA1C   33D2                   xor     edx, edx
004ADA1E   8A16                   mov     dl, byte ptr [esi]
004ADA20   83C214                 add     edx, +$14               ;

* Reference to: System.Proc_00403CE4
|
004ADA23   E8BC62F5FF             call    00403CE4          //0012FAB4中的是system.Move返回的

地址,每次都会变化
    
     { 00403CE4   /$  52                 push edx
       00403CE5   |.  89E2               mov edx,esp
       00403CE7   |.  B9 01000000        mov ecx,1
       00403CEC   |.  E8 33FFFFFF        call talisman.00403C24                 ;

*system.Move(void;void;void;void;Integer);

       00403CF1   |.  5A                 pop edx
       00403CF2   \.  C3                 retn


     }

004ADA28   8B95E8FEFFFF           mov     edx, [ebp+$FFFFFEE8]                  ;

edx=00FDDD08
004ADA2E   8D45F0                 lea     eax, [ebp-$10]                        ;

eax=0012FBBC

* Reference to: System.Proc_00403DC4
|
004ADA31   E88E63F5FF             call    00403DC4                             ;* 

system.Move(void;void;void;void;Integer);

004ADA36   83C602                 add     esi, +$02
004ADA39   4B                     dec     ebx
004ADA3A   75DA                   jnz     004ADA16                    ;goto Loop


004ADA3C   8D45EC                 lea     eax, [ebp-$14]              ;eax=0012FBB8

;d eax
;0012FBB8  00 00 00 00 10 B7 01 01  ....?
;d 0101B710
;0101B710  31 30 32 33 33 32 31 39  10233219
;0101B718  33 33 30 39 39 39 39 34  33099994
;0101B720  35 36 38 37 00           5687.



004ADA3F   50                     push    eax                  ;0012FBB8
004ADA40   B902000000             mov     ecx, $00000002
004ADA45   BA0E000000             mov     edx, $0000000E      //MID(eax,edx-1,ecx),特别注意
004ADA4A   8B45F0                 mov     eax, [ebp-$10]      //EAX 0101B710 ASCII 

"10233219330999945687"

* Reference to: System.Proc_00403FC0
|
004ADA4D   E86E65F5FF             call    00403FC0          //先F8,后来发现这步生成的结果后

面用上了,进去看看

      {
        00403FC0    /$  53                 push ebx
        00403FC1    |.  85C0               test eax,eax
        00403FC3    |.  74 2D              je short talisman.00403FF2
        00403FC5    |.  8B58 FC            mov ebx,dword ptr ds:[eax-4]     

//ebx=14,"10233219330999945687"的长度
        00403FC8    |.  85DB               test ebx,ebx
        00403FCA    |.  74 26              je short talisman.00403FF2
        00403FCC    |.  4A                 dec edx                          

//edx=0000000E==>0000000D
        00403FCD    |.  7C 1B              jl short talisman.00403FEA
        00403FCF    |.  39DA               cmp edx,ebx                      
        00403FD1    |.  7D 1F              jge short talisman.00403FF2
        00403FD3    |>  29D3               sub ebx,edx                      //ebx=14-0D=07
        00403FD5    |.  85C9               test ecx,ecx                     //ecx=02
        00403FD7    |.  7C 19              jl short talisman.00403FF2
        00403FD9    |.  39D9               cmp ecx,ebx                 
        00403FDB    |.  7F 11              jg short talisman.00403FEE
        00403FDD    |>  01C2               add edx,eax                      //EDX 0101B87D 

ASCII "9945687"
        00403FDF    |.  8B4424 08          mov eax,dword ptr ss:[esp+8]     //0012FBB8
        00403FE3    |.  E8 3CFCFFFF        call talisman.00403C24           //F8
        00403FE8    |.  EB 11              jmp short talisman.00403FFB
        00403FEA    |>  31D2               xor edx,edx
        00403FEC    |.^ EB E5              jmp short talisman.00403FD3
        00403FEE    |>  89D9               mov ecx,ebx
        00403FF0    |.^ EB EB              jmp short talisman.00403FDD
        00403FF2    |>  8B4424 08          mov eax,dword ptr ss:[esp+8]
        00403FF6    |.  E8 45FBFFFF        call talisman.00403B40
        00403FFB    |>  5B                 pop ebx
        00403FFC    \.  C2 0400            retn 4


      }



004ADA52   8B45EC                 mov     eax, [ebp-$14]    //EAX 00FDDD08 ASCII "99",

* Reference to: Unit_004073B8.Proc_0040832C
|
004ADA55   E8D2A8F5FF             call    0040832C          //前面分析过,[分析三],版本

号"2810"变为十六进制
004ADA5A   8945FC                 mov     [ebp-$04], eax    //eax=00000063,这是99的十六进制
004ADA5D   8D45EC                 lea     eax, [ebp-$14]    D [eax] 39 39 00         "99"
004ADA60   50                     push    eax
004ADA61   B908000000             mov     ecx, $00000008     //特别注意这个MID函数
004ADA66   BA06000000             mov     edx, $00000006    //MID(eax,edx-1,ecx),21933099,hex 

14EAC2B
004ADA6B   8B45F0                 mov     eax, [ebp-$10]   //

;  EAX 0101B710 ASCII "10233219330999945687"
;  ECX 00000008
;  EDX 00000006
;  EBX 00000000
;  ESP 0012FA94
;  EBP 0012FBCC
;  ESI 0012FAE0
;  EDI 0101B6EC ASCII "ゎD"


* Reference to: System.Proc_00403FC0
|
004ADA6E   E84D65F5FF             call    00403FC0                   ;F8,MID string function
004ADA73   8D45F8                 lea     eax, [ebp-$08]             ;0012FBC4

* Reference to: System.Proc_00403B40
|
004ADA76   E8C560F5FF             call    00403B40                  ;F8

004ADA7B   BB95000000             mov     ebx, $00000095           //常数
004ADA80   8DB557FFFFFF           lea     esi, [ebp+$FFFFFF57]     //ESI 0012FB23 ASCII "4?

hZ__Uj"  这是用户名处理后的结果,参见004897F7 

    Loop:
004ADA86   803E00                 cmp     byte ptr [esi], $00
004ADA89   7424                   jz      004ADAAF
004ADA8B   8D85E8FEFFFF           lea     eax, [ebp+$FFFFFEE8]     //eax=0012FAB4
004ADA91   33D2                   xor     edx, edx
004ADA93   8A16                   mov     dl, byte ptr [esi]
004ADA95   83C20F                 add     edx, +$0F                //还原为原来的字符

* Reference to: System.Proc_00403CE4
|
004ADA98   E84762F5FF             call    00403CE4                 //F8
004ADA9D   8B95E8FEFFFF           mov     edx, [ebp+$FFFFFEE8]     //EDX 01004514
004ADAA3   8D45F8                 lea     eax, [ebp-$08]           //EAX 0012FBC4

* Reference to: System.Proc_00403DC4
|
004ADAA6   E81963F5FF             call    00403DC4    
004ADAAB   46                     inc     esi
004ADAAC   4B                     dec     ebx
004ADAAD   75D7                   jnz     004ADA86     ;goto Loop


004ADAAF   33F6                   xor     esi, esi
004ADAB1   8B45F8                 mov     eax, [ebp-$08]  ;EAX 0101B74C ASCII "CNwinndy"

* Reference to: System.Proc_00403DBC
|
004ADAB4   E80363F5FF             call    00403DBC          //

{
     00403DBC   /$  85C0               test eax,eax                  ;用户名是否为空
     00403DBE   |.  74 03              je short talisman.00403DC3
     00403DC0   |.  8B40 FC            mov eax,dword ptr ds:[eax-4]  ;EAX=00000008,用户名长


     00403DC3   \>  C3                 retn


  }


004ADAB9   85C0                   test    eax, eax
004ADABB   7E13                   jle     004ADAD0
004ADABD   BB01000000             mov     ebx, $00000001          //计数器初值

LOOP:                                                           //这段循环计算用户名的ascii

累加和
004ADAC2   8B55F8                 mov     edx, [ebp-$08]                //EDX 0101B74C ASCII 

"CNwinndy"
004ADAC5   0FB6541AFF             movzx   edx, byte ptr [edx+ebx-$01]
004ADACA   03F2                   add     esi, edx                 //用户名的累加和,最终为

0000032A
004ADACC   43                     inc     ebx
004ADACD   48                     dec     eax
004ADACE   75F2                   jnz     004ADAC2                 //goto loop

004ADAD0   8D55F4                 lea     edx, [ebp-$0C]          //edx=0012FBC0
004ADAD3   8B45FC                 mov     eax, [ebp-$04]          //eax=00000063,"99"变来

;D ebp-0c
;0012FBC0  00 00 00 00 4C B7 01 01  ....L?
;0012FBC8  63 00 00 00              c...
;d 0101B74C
;0101B74C  43 4E 77 69 6E 6E 64 79  CNwinndy
;0101B754  00                       .




* Reference to: Unit_004AC9A4.Proc_004AD1D0
|
004ADAD6   E8F5F6FFFF             call    004AD1D0               //******暂时F8略过,第二遍需

进去,因为不知道下面的串是怎么生成的,见下面[分析五]
                                                                 //case 1-15,55-69
    
004ADADB   8B45F4                 mov     eax, [ebp-$0C]         //EAX 0101B77C ASCII "99 

99632671"

* Reference to: System.Proc_00403DBC
|
004ADADE   E8D962F5FF             call    00403DBC               //暂时F8掠过
004ADAE3   83F808                 cmp     eax, +$08              //EAX 0000000B,应该是"99 

99632671"的长度
004ADAE6   7D12                   jnl     004ADAFA               ;跳了
004ADAE8   8D4DF4                 lea     ecx, [ebp-$0C]

* Reference to TForm1 instance
|
004ADAEB   A11C364C00             mov     eax, dword ptr [$004C361C]
004ADAF0   8B00                   mov     eax, [eax]
004ADAF2   8B55FC                 mov     edx, [ebp-$04]

* Reference to: t2_main.Proc_004B4260
|
004ADAF5   E866670000             call    004B4260           //**************见下面 [分析六]  

 //case 16-2A
004ADAFA   8B45F4                 mov     eax, [ebp-$0C]          //EAX 0101B77C ASCII "99 

99632671"

* Reference to: System.Proc_00403DBC
|
004ADAFD   E8BA62F5FF             call    00403DBC
004ADB02   83F808                 cmp     eax, +$08
004ADB05   7D12                   jnl     004ADB19               //跳了
004ADB07   8D4DF4                 lea     ecx, [ebp-$0C]

* Reference to TForm1 instance
|
004ADB0A   A11C364C00             mov     eax, dword ptr [$004C361C]
004ADB0F   8B00                   mov     eax, [eax]
004ADB11   8B55FC                 mov     edx, [ebp-$04]

* Reference to: t2_main.Proc_004BBCE0
|
004ADB14   E8C7E10000             call    004BBCE0              //******************见下面[分

析七]//case 2B-3F
004ADB19   8B45F4                 mov     eax, [ebp-$0C]        //EAX 0101B77C ASCII "99 

99632671"

* Reference to: System.Proc_00403DBC
|
004ADB1C   E89B62F5FF             call    00403DBC
004ADB21   83F808                 cmp     eax, +$08
004ADB24   7D0B                   jnl     004ADB31             //跳了
004ADB26   8D55F4                 lea     edx, [ebp-$0C]
004ADB29   8B45FC                 mov     eax, [ebp-$04]

* Reference to: Unit_004AC9A4.Proc_004ACECC
|
004ADB2C   E89BF3FFFF             call    004ACECC            //******见下面[分析八]  //case 

40-54
004ADB31   8B55F4                 mov     edx, [ebp-$0C]    //EDX 0101B77C ASCII "99 

99632671"
004ADB34   B874DC4A00             mov     eax, $004ADC74   //EAX 004ADC74 talisman.004ADC74

* Reference to: System.Proc_004040A4
|
004ADB39   E86665F5FF             call    004040A4           //F8
004ADB3E   8BD8                   mov     ebx, eax          //eax=0003
004ADB40   8D45F4                 lea     eax, [ebp-$0C]

;D eax
;0101B77C  39 39 20 39 39 36 33 32  99 99632
;0101B784  36 37 31 00              671.



004ADB43   8BCB                   mov     ecx, ebx
004ADB45   BA01000000             mov     edx, $00000001

* Reference to: System.Proc_00404000
|
004ADB4A   E8B164F5FF             call    00404000               //F8
004ADB4F   8B45F4                 mov     eax, [ebp-$0C]        //EAX 0101B77C ASCII 

"99632671"

* Reference to: Unit_004073B8.Proc_0040832C
|
004ADB52   E8D5A7F5FF             call    0040832C             //前面分析过,数字串,转化为十

六进制
004ADB57   8BD8                   mov     ebx, eax                    //EAX 05F0461F 

"99632671"的十六进制
004ADB59   89B5E4FEFFFF           mov     [ebp+$FFFFFEE4], esi        //ESI 0000032A ,用户名

的累加和
004ADB5F   DB85E4FEFFFF           fild    dword ptr [ebp+$FFFFFEE4]

* Reference to: system.@ROUND;
|
004ADB65   E84E4FF5FF             call    00402AB8               //EAX 0000032A
004ADB6A   69C067030000           imul    eax, eax, $00000367     //eax=000AC3E6 =32A*367     

   这里很重要
004ADB70   03D8                   add     ebx, eax                

//ebx=05F0461F+000AC3E6=05FB0A05
004ADB72   8BF3                   mov     esi, ebx
004ADB74   8D95E8FEFFFF           lea     edx, [ebp+$FFFFFEE8]    //edx=0012FAB4
004ADB7A   8BC6                   mov     eax, esi

* Reference to: Unit_004073B8.Proc_004082C8
|
004ADB7C   E847A7F5FF             call    004082C8               //F8跳过,看结果

;EAX 0101B734 ASCII "21933099"=======>14EAC2B的十进制 
;ECX 05FB0A05
;EDX 0101B764 ASCII "100338181" ====>05FB0A05的十进制
;EBX 05FB0A05

004ADB81   8B95E8FEFFFF           mov     edx, [ebp+$FFFFFEE8]    
004ADB87   8B45EC                 mov     eax, [ebp-$14]

* Reference to: System.Proc_00403ECC
|
004ADB8A   E83D63F5FF             call    00403ECC               //F8跳过后,看到EAX=FFFFFFFF

,这里要跳了 见[分析九],功能是比较字符串

;看来这个call是比较注册码了,"100338181"与"21933099"是否相同。
;观察这个跳后的程序与不跳的程序,可以发现一点,跳了之后Xor ebx,ebx,即ebx清零;而不跳则mov 

bl,1,置1;
;这应该是标志了。不妨双击'Z',改变流程看如何。

004ADB8F   751D                   jnz     004ADBAE

* Reference to pointer to GlobalVar_004D4AA8
|
004ADB91   A1A8314C00             mov     eax, dword ptr [$004C31A8]
004ADB96   8B55F8                 mov     edx, [ebp-$08]         //EDX 0101B74C ASCII 

"CNwinndy"

* Reference to: System.Proc_00403B94
|
004ADB99   E8F65FF5FF             call    00403B94             //F8

* Reference to TForm1 instance
|
004ADB9E   A11C364C00             mov     eax, dword ptr [$004C361C]
004ADBA3   8B00                   mov     eax, [eax]
004ADBA5   33D2                   xor     edx, edx

* Reference to field TForm1.Tag : Longint
|
004ADBA7   89500C                 mov     [eax+$0C], edx
004ADBAA   B301                   mov     bl, $01
004ADBAC   EB10                   jmp     004ADBBE

* Reference to TForm1 instance
|
004ADBAE   A11C364C00             mov     eax, dword ptr [$004C361C]
004ADBB3   8B00                   mov     eax, [eax]

* Reference to field TForm1.Tag : Longint
|
004ADBB5   C7400C01000000         mov     dword ptr [eax+$0C], $00000001
004ADBBC   33DB                   xor     ebx, ebx
004ADBBE   8BC7                   mov     eax, edi

* Reference to: Unit_0044EDF8.Proc_0044F000
|
004ADBC0   E83B14FAFF             call    0044F000
004ADBC5   8BC7                   mov     eax, edi

* Reference to: system.TObject.Free(TObject);
|
004ADBC7   E8A453F5FF             call    00402F70
004ADBCC   33C0                   xor     eax, eax
004ADBCE   5A                     pop     edx
004ADBCF   59                     pop     ecx
004ADBD0   59                     pop     ecx
004ADBD1   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '嬅_^[嬪]?
|
004ADBD4   68F9DB4A00             push    $004ADBF9
004ADBD9   8D85E8FEFFFF           lea     eax, [ebp+$FFFFFEE8]

* Reference to: System.Proc_00403B40
|
004ADBDF   E85C5FF5FF             call    00403B40
004ADBE4   8D45EC                 lea     eax, [ebp-$14]
004ADBE7   BA04000000             mov     edx, $00000004

* Reference to: System.Proc_00403B64
|
004ADBEC   E8735FF5FF             call    00403B64
004ADBF1   C3                     ret


* Reference to: System.Proc_004035E4
|
004ADBF2   E9ED59F5FF             jmp     004035E4
004ADBF7   EBE0                   jmp     004ADBD9

****** END
|
004ADBF9   8BC3                   mov     eax, ebx
004ADBFB   5F                     pop     edi
004ADBFC   5E                     pop     esi
004ADBFD   5B                     pop     ebx
004ADBFE   8BE5                   mov     esp, ebp
004ADC00   5D                     pop     ebp
004ADC01   C3                     ret                       ;返回到004894D2,见上面

================================================================================
[分析三]

0040832C   55                     push    ebp
0040832D   8BEC                   mov     ebp, esp
0040832F   83C4F0                 add     esp, -$10
00408332   53                     push    ebx
00408333   56                     push    esi
00408334   33D2                   xor     edx, edx
00408336   8955F8                 mov     [ebp-$08], edx
00408339   8BD8                   mov     ebx, eax                      ;EBX 004898D0 ASCII 

"2810"
0040833B   33C0                   xor     eax, eax
0040833D   55                     push    ebp

* Possible String Reference to: '镵?腽嬈^[嬪]脨SQ嬟嬙桴??$'
|
0040833E   6894834000             push    $00408394

***** TRY
|
00408343   64FF30                 push    dword ptr fs:[eax]
00408346   648920                 mov     fs:[eax], esp
00408349   8D55FC                 lea     edx, [ebp-$04]
0040834C   8BC3                   mov     eax, ebx

* Reference to: system.@ValLong;
|
0040834E   E851A9FFFF             call    00402CA4                  //F8过去,根据结果再猜测

其功能
   ;eax=00000AFA,正是2810的十六进制,马上想到这是什么意思了,呵呵,这个版本是Bulid 2810。
00408353   8BF0                   mov     esi, eax
00408355   837DFC00               cmp     dword ptr [ebp-$04], +$00  
00408359   7423                   jz      0040837E                    //在这里跳了
0040835B   8D55F8                 lea     edx, [ebp-$08]
0040835E   A1C0324C00             mov     eax, dword ptr [$004C32C0]

* Reference to: System.Proc_00405584
|
00408363   E81CD2FFFF             call    00405584
00408368   8B45F8                 mov     eax, [ebp-$08]
0040836B   50                     push    eax
0040836C   895DF0                 mov     [ebp-$10], ebx
0040836F   C645F40B               mov     byte ptr [ebp-$0C], $0B
00408373   8D55F0                 lea     edx, [ebp-$10]
00408376   33C9                   xor     ecx, ecx
00408378   58                     pop     eax

* Reference to: Unit_004073B8.Proc_00407EBC
|
00408379   E83EFBFFFF             call    00407EBC
0040837E   33C0                   xor     eax, eax
00408380   5A                     pop     edx
00408381   59                     pop     ecx
00408382   59                     pop     ecx
00408383   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '嬈^[嬪]脨SQ嬟嬙桴??$'
|
00408386   689B834000             push    $0040839B
0040838B   8D45F8                 lea     eax, [ebp-$08]

* Reference to: System.Proc_00403B40
|
0040838E   E8ADB7FFFF             call    00403B40
00408393   C3                     ret     //返回到0040839B,就在下面


* Reference to: System.Proc_004035E4
|
00408394   E94BB2FFFF             jmp     004035E4
00408399   EBF0                   jmp     0040838B

****** END
|
0040839B   8BC6                   mov     eax, esi
0040839D   5E                     pop     esi
0040839E   5B                     pop     ebx
0040839F   8BE5                   mov     esp, ebp
004083A1   5D                     pop     ebp

;这时候的寄存器状态为:
;EAX 00000AFA              这是"2810"
;ECX 0012FA8C
;EDX 00000000
;EBX 00000014
;ESP 0012FA90 ASCII "桯"
;EBP 0012FBCC
;ESI 0012FBBA
;EDI 00000014


004083A2   C3                     ret   ;回到00489780   见上面

==================================================================
[分析四]

00403DC4    $  85D2               test edx,edx                    ;EDX 0101B728 ASCII 

"30999945687"
00403DC6    .  74 3F              je short talisman.00403E07
00403DC8    .  8B08               mov ecx,dword ptr ds:[eax]      ;ECX 0101B740 ASCII 

"102332193"
00403DCA    .  85C9               test ecx,ecx
00403DCC    .^ 0F84 C2FDFFFF      je talisman.00403B94
00403DD2    .  53                 push ebx
00403DD3    .  56                 push esi
00403DD4    .  57                 push edi
00403DD5    .  89C3               mov ebx,eax
00403DD7    .  89D6               mov esi,edx
00403DD9    .  8B79 FC            mov edi,dword ptr ds:[ecx-4]   ;edi=09,ASCII "102332193"

的长度
00403DDC    .  8B56 FC            mov edx,dword ptr ds:[esi-4]   ;edx=0B,ASCII 

"30999945687"的长度
00403DDF    .  01FA               add edx,edi                    ;长度1+长度2,难道要连接这

两个字符串?
00403DE1    .  39CE               cmp esi,ecx
00403DE3    .  74 17              je short talisman.00403DFC
00403DE5    .  E8 02030000        call talisman.004040EC         ;F8跳过
00403DEA    .  89F0               mov eax,esi                    ;EAX 0101B728 ASCII 

"30999945687"
00403DEC    .  8B4E FC            mov ecx,dword ptr ds:[esi-4]   ;ECX 0000000B
00403DEF    >  8B13               mov edx,dword ptr ds:[ebx]     ;EDX 0101B758 ASCII 

"102332193"
00403DF1    .  01FA               add edx,edi                    ;EDI 00000009
00403DF3    .  E8 C0EAFFFF        call talisman.004028B8         ;里面有system.Move

(void;void;void;void;Integer)
00403DF8    .  5F                 pop edi
00403DF9    .  5E                 pop esi
00403DFA    .  5B                 pop ebx
00403DFB    .  C3                 retn                           ;回到00489737

00403DFC    >  E8 EB020000        call talisman.004040EC
00403E01    .  8B03               mov eax,dword ptr ds:[ebx]
00403E03    .  89F9               mov ecx,edi
00403E05    .^ EB E8              jmp short talisman.00403DEF
00403E07    >  C3                 retn

00403E08   85D2                   test    edx, edx
00403E0A   7461                   jz      00403E6D
00403E0C   85C9                   test    ecx, ecx
00403E0E   0F8480FDFFFF           jz      00403B94
00403E14   3B10                   cmp     edx, [eax]        //注册码是否为 "102332193"
00403E16   745C                   jz      00403E74
00403E18   3B08                   cmp     ecx, [eax]       ////注册码是否为 "30999945687"
00403E1A   740E                   jz      00403E2A
00403E1C   50                     push    eax
00403E1D   51                     push    ecx

* Reference to: System.Proc_00403B94
|
00403E1E   E871FDFFFF             call    00403B94  //里面有system.Move

(void;void;void;void;Integer);  
  
00403E23   5A                     pop     edx
00403E24   58                     pop     eax

* Reference to: System.Proc_00403DC4
|
00403E25   E99AFFFFFF             jmp     00403DC4  //本段分析开始处

00403E2A   53                     push    ebx
00403E2B   56                     push    esi
00403E2C   57                     push    edi
00403E2D   89D3                   mov     ebx, edx
00403E2F   89CE                   mov     esi, ecx
00403E31   50                     push    eax
00403E32   8B43FC                 mov     eax, [ebx-$04]
00403E35   0346FC                 add     eax, [esi-$04]

* Reference to: System.Proc_00403C00
|
00403E38   E8C3FDFFFF             call    00403C00
00403E3D   89C7                   mov     edi, eax
00403E3F   89C2                   mov     edx, eax
00403E41   89D8                   mov     eax, ebx
00403E43   8B4BFC                 mov     ecx, [ebx-$04]

* Reference to: system.Move(void;void;void;void;Integer);
|
00403E46   E86DEAFFFF             call    004028B8
00403E4B   89FA                   mov     edx, edi
00403E4D   89F0                   mov     eax, esi
00403E4F   8B4EFC                 mov     ecx, [esi-$04]
00403E52   0353FC                 add     edx, [ebx-$04]

* Reference to: system.Move(void;void;void;void;Integer);
|
00403E55   E85EEAFFFF             call    004028B8
00403E5A   58                     pop     eax
00403E5B   89FA                   mov     edx, edi
00403E5D   85FF                   test    edi, edi
00403E5F   7403                   jz      00403E64
00403E61   FF4FF8                 dec     dword ptr [edi-$08]

* Reference to: System.Proc_00403B94
|
00403E64   E82BFDFFFF             call    00403B94
00403E69   5F                     pop     edi
00403E6A   5E                     pop     esi
00403E6B   5B                     pop     ebx
00403E6C   C3                     ret

00403E6D   89CA                   mov     edx, ecx

* Reference to: System.Proc_00403B94
|
00403E6F   E920FDFFFF             jmp     00403B94
00403E74   89CA                   mov     edx, ecx

* Reference to: System.Proc_00403DC4
|
00403E76   E949FFFFFF             jmp     00403DC4    本段分析开始处
00403E7B   C3                     ret



===========================================================================================
注:这段代码用DEDE反汇编出来不正确,下面是OD反汇编的,在004AD1F7处相同,但是在DEDE反汇编出来

的,下一句它的地址还是004AD1F7。

[分析五]Switch (cases 1..15)
004AD1D0    /$  55                     push ebp
004AD1D1    |.  8BEC                   mov ebp,esp
004AD1D3    |.  6A 00                  push 0
004AD1D5    |.  6A 00                  push 0
004AD1D7    |.  53                     push ebx                                          

//ebx=00000009
004AD1D8    |.  56                     push esi                                          

//0000032A    用户名ascii累加和
004AD1D9    |.  57                     push edi                                          

//0100B84C
004AD1DA    |.  8BFA                   mov edi,edx                                       

//0012FBC0
004AD1DC    |.  8BD8                   mov ebx,eax                                       

//00000063   "99"
004AD1DE    |.  33C0                   xor eax,eax
004AD1E0    |.  55                     push ebp
004AD1E1    |.  68 3BD34A00            push talisman.004AD33B
004AD1E6    |.  64:FF30                push dword ptr fs:[eax]
004AD1E9    |.  64:8920                mov dword ptr fs:[eax],esp
004AD1EC    |.  8BC3                   mov eax,ebx                                        

//00000063  由"99"而来,固定了
004AD1EE    |.  83F8 15                cmp eax,15                                         ;  

Switch (cases 1..15)
004AD1F1    |.  0F87 EC000000          ja talisman.004AD2E3                               ;
004AD1F7    |.  FF2485 FED14A00        jmp dword ptr ds:[eax*4+4AD1FE]
004AD1FE    |.  E3D24A00               dd talisman.004AD2E3                               ;  

Switch table used at 004AD1F7
004AD202    |.  56D24A00               dd talisman.004AD256
004AD206    |.  60D24A00               dd talisman.004AD260
004AD20A    |.  67D24A00               dd talisman.004AD267
004AD20E    |.  6ED24A00               dd talisman.004AD26E
004AD212    |.  75D24A00               dd talisman.004AD275
004AD216    |.  7CD24A00               dd talisman.004AD27C
004AD21A    |.  83D24A00               dd talisman.004AD283
004AD21E    |.  8AD24A00               dd talisman.004AD28A
004AD222    |.  91D24A00               dd talisman.004AD291
004AD226    |.  98D24A00               dd talisman.004AD298
004AD22A    |.  9CD24A00               dd talisman.004AD29C
004AD22E    |.  A3D24A00               dd talisman.004AD2A3
004AD232    |.  A7D24A00               dd talisman.004AD2A7
004AD236    |.  AED24A00               dd talisman.004AD2AE
004AD23A    |.  B5D24A00               dd talisman.004AD2B5
004AD23E    |.  BCD24A00               dd talisman.004AD2BC
004AD242    |.  C3D24A00               dd talisman.004AD2C3
004AD246    |.  CAD24A00               dd talisman.004AD2CA
004AD24A    |.  D1D24A00               dd talisman.004AD2D1
004AD24E    |.  D8D24A00               dd talisman.004AD2D8
004AD252    |.  DCD24A00               dd talisman.004AD2DC
004AD256    |>  BE 3560A800            mov esi,0A86035                                    ;  

Case 1 of switch 004AD1EE
004AD25B    |.  E9 85000000            jmp talisman.004AD2E5
004AD260    |>  BE EEF1C900            mov esi,0C9F1EE                                    ;  

Case 2 of switch 004AD1EE
004AD265    |.  EB 7E                  jmp short talisman.004AD2E5
004AD267    |>  BE 5460A800            mov esi,0A86054                                    ;  

Case 3 of switch 004AD1EE
004AD26C    |.  EB 77                  jmp short talisman.004AD2E5
004AD26E    |>  BE 453DDE00            mov esi,0DE3D45                                    ;  

Case 4 of switch 004AD1EE
004AD273    |.  EB 70                  jmp short talisman.004AD2E5
004AD275    |>  BE 9578CB00            mov esi,0CB7895                                    ;  

Case 5 of switch 004AD1EE
004AD27A    |.  EB 69                  jmp short talisman.004AD2E5
004AD27C    |>  BE 1D6CAB00            mov esi,0AB6C1D                                    ;  

Case 6 of switch 004AD1EE
004AD281    |.  EB 62                  jmp short talisman.004AD2E5
004AD283    |>  BE 37AE9900            mov esi,99AE37                                     ;  

Case 7 of switch 004AD1EE
004AD288    |.  EB 5B                  jmp short talisman.004AD2E5
004AD28A    |>  BE 4F7A1E01            mov esi,11E7A4F                                    ;  

Case 8 of switch 004AD1EE
004AD28F    |.  EB 54                  jmp short talisman.004AD2E5
004AD291    |>  BE 966CAB00            mov esi,0AB6C96                                    ;  

Case 9 of switch 004AD1EE
004AD296    |.  EB 4D                  jmp short talisman.004AD2E5
004AD298    |>  33F6                   xor esi,esi                                        ;  

Case A of switch 004AD1EE
004AD29A    |.  EB 49                  jmp short talisman.004AD2E5
004AD29C    |>  BE 816DAB00            mov esi,0AB6D81                                    ;  

Case B of switch 004AD1EE
004AD2A1    |.  EB 42                  jmp short talisman.004AD2E5
004AD2A3    |>  33F6                   xor esi,esi                                        ;  

Case C of switch 004AD1EE
004AD2A5    |.  EB 3E                  jmp short talisman.004AD2E5
004AD2A7    |>  BE E065DC00            mov esi,0DC65E0                                    ;  

Case D of switch 004AD1EE
004AD2AC    |.  EB 37                  jmp short talisman.004AD2E5
004AD2AE    |>  BE 9778CB00            mov esi,0CB7897                                    ;  

Case E of switch 004AD1EE
004AD2B3    |.  EB 30                  jmp short talisman.004AD2E5
004AD2B5    |>  BE BBADBA00            mov esi,0BAADBB                                    ;  

Case F of switch 004AD1EE
004AD2BA    |.  EB 29                  jmp short talisman.004AD2E5
004AD2BC    |>  BE 22F2AC00            mov esi,0ACF222                                    ;  

Case 10 of switch 004AD1EE
004AD2C1    |.  EB 22                  jmp short talisman.004AD2E5
004AD2C3    |>  BE 63812501            mov esi,1258163                                    ;  

Case 11 of switch 004AD1EE
004AD2C8    |.  EB 1B                  jmp short talisman.004AD2E5
004AD2CA    |>  BE 5EEFAF00            mov esi,0AFEF5E                                    ;  

Case 12 of switch 004AD1EE
004AD2CF    |.  EB 14                  jmp short talisman.004AD2E5
004AD2D1    |>  BE 1F922B01            mov esi,12B921F                                    ;  

Case 13 of switch 004AD1EE
004AD2D6    |.  EB 0D                  jmp short talisman.004AD2E5
004AD2D8    |>  33F6                   xor esi,esi                                        ;  

Case 14 of switch 004AD1EE
004AD2DA    |.  EB 09                  jmp short talisman.004AD2E5
004AD2DC    |>  BE 6116F100            mov esi,0F11661                                    ;  

Case 15 of switch 004AD1EE
004AD2E1    |.  EB 02                  jmp short talisman.004AD2E5

跳来这:

004AD2E3    |> \33F6               xor esi,esi                                        ;  

Default case of switch 004AD1EE
004AD2E5    |>  83FB 15            cmp ebx,15
004AD2E8    |.  7E 0B              jle short talisman.004AD2F5
004AD2EA    |.  8BD7               mov edx,edi                                        

;0012FBC0
004AD2EC    |.  8BC3               mov eax,ebx                                        

;00000063
004AD2EE    |.  E8 59FDFFFF        call talisman.004AD04C               =====>见下面[分析十]:
004AD2F3    |.  EB 2B              jmp short talisman.004AD320            回到这里,再跳

004AD2F5    |> \8D55 FC            lea edx,dword ptr ss:[ebp-4]          ;jump from 004AD2E8
004AD2F8    |.  8BC3               mov eax,ebx
004AD2FA    |.  E8 C9AFF5FF        call talisman.004082C8
004AD2FF    |.  FF75 FC            push dword ptr ss:[ebp-4]
004AD302    |.  68 54D34A00        push talisman.004AD354
004AD307    |.  8D55 F8            lea edx,dword ptr ss:[ebp-8]
004AD30A    |.  8BC6               mov eax,esi
004AD30C    |.  E8 B7AFF5FF        call talisman.004082C8
004AD311    |.  FF75 F8            push dword ptr ss:[ebp-8]
004AD314    |.  8BC7               mov eax,edi
004AD316    |.  BA 03000000        mov edx,3
004AD31B    |.  E8 5C6BF5FF        call talisman.00403E7C
;跳到这里
004AD320    |>  33C0               xor eax,eax
004AD322    |.  5A                 pop edx
004AD323    |.  59                 pop ecx
004AD324    |.  59                 pop ecx
004AD325    |.  64:8910            mov dword ptr fs:[eax],edx
004AD328    |.  68 42D34A00        push talisman.004AD342
004AD32D    |>  8D45 F8            lea eax,dword ptr ss:[ebp-8]
004AD330    |.  BA 02000000        mov edx,2
004AD335    |.  E8 2A68F5FF        call talisman.00403B64
004AD33A    \.  C3                 retn                                  //jmp 004AD342 
004AD33B     .^ E9 A462F5FF        jmp talisman.004035E4
004AD340     .^ EB EB              jmp short talisman.004AD32D
004AD342     .  5F                 pop edi
004AD343     .  5E                 pop esi
004AD344     .  5B                 pop ebx
004AD345     .  59                 pop ecx
004AD346     .  59                 pop ecx
004AD347     .  5D                 pop ebp
004AD348     .  C3                 retn          ;回到004ADADE




============================================================================================
[分析六]Switch (cases 16..2A)
004B4260    /$  55                     push ebp
004B4261    |.  8BEC                   mov ebp,esp
004B4263    |.  6A 00                  push 0
004B4265    |.  6A 00                  push 0
004B4267    |.  53                     push ebx
004B4268    |.  56                     push esi
004B4269    |.  57                     push edi
004B426A    |.  8BF9                   mov edi,ecx
004B426C    |.  8BF2                   mov esi,edx
004B426E    |.  33C0                   xor eax,eax
004B4270    |.  55                     push ebp
004B4271    |.  68 C9434B00            push talisman.004B43C9
004B4276    |.  64:FF30                push dword ptr fs:[eax]
004B4279    |.  64:8920                mov dword ptr fs:[eax],esp
004B427C    |.  8BC6                   mov eax,esi
004B427E    |.  83C0 EA                add eax,-16                                        ;  

Switch (cases 16..2A)
004B4281    |.  83F8 14                cmp eax,14
004B4284    |.  0F87 F7000000          ja talisman.004B4381
004B428A    |.  FF2485 91424B00        jmp dword ptr ds:[eax*4+4B4291]
004B4291    |.  EF424B00               dd talisman.004B42EF                               ;  

Switch table used at 004B428A
004B4295    |.  F9424B00               dd talisman.004B42F9
004B4299    |.  03434B00               dd talisman.004B4303
004B429D    |.  0A434B00               dd talisman.004B430A
004B42A1    |.  11434B00               dd talisman.004B4311
004B42A5    |.  18434B00               dd talisman.004B4318
004B42A9    |.  1F434B00               dd talisman.004B431F
004B42AD    |.  26434B00               dd talisman.004B4326
004B42B1    |.  2D434B00               dd talisman.004B432D
004B42B5    |.  34434B00               dd talisman.004B4334
004B42B9    |.  3B434B00               dd talisman.004B433B
004B42BD    |.  42434B00               dd talisman.004B4342
004B42C1    |.  49434B00               dd talisman.004B4349
004B42C5    |.  50434B00               dd talisman.004B4350
004B42C9    |.  57434B00               dd talisman.004B4357
004B42CD    |.  5E434B00               dd talisman.004B435E
004B42D1    |.  65434B00               dd talisman.004B4365
004B42D5    |.  6C434B00               dd talisman.004B436C
004B42D9    |.  73434B00               dd talisman.004B4373
004B42DD    |.  7A434B00               dd talisman.004B437A
004B42E1    |.  E5424B00               dd talisman.004B42E5
004B42E5    |>  BB F5034401            mov ebx,14403F5                                    ;  

Case 2A of switch 004B427E
004B42EA    |.  E9 94000000            jmp talisman.004B4383
004B42EF    |>  BB DBB3A702            mov ebx,2A7B3DB                                    ;  

Case 16 of switch 004B427E
004B42F4    |.  E9 8A000000            jmp talisman.004B4383
004B42F9    |>  BB 5A044401            mov ebx,144045A                                    ;  

Case 17 of switch 004B427E
004B42FE    |.  E9 80000000            jmp talisman.004B4383
004B4303    |>  BB 9F55F502            mov ebx,2F5559F                                    ;  

Case 18 of switch 004B427E
004B4308    |.  EB 79                  jmp short talisman.004B4383
004B430A    |>  BB 357B5F01            mov ebx,15F7B35                                    ;  

Case 19 of switch 004B427E
004B430F    |.  EB 72                  jmp short talisman.004B4383
004B4311    |>  BB 71014401            mov ebx,1440171                                    ;  

Case 1A of switch 004B427E
004B4316    |.  EB 6B                  jmp short talisman.004B4383
004B4318    |>  BB 05A84401            mov ebx,144A805                                    ;  

Case 1B of switch 004B427E
004B431D    |.  EB 64                  jmp short talisman.004B4383
004B431F    |>  BB A528B204            mov ebx,4B228A5                                    ;  

Case 1C of switch 004B427E
004B4324    |.  EB 5D                  jmp short talisman.004B4383
004B4326    |>  BB 15B6DA01            mov ebx,1DAB615                                    ;  

Case 1D of switch 004B427E
004B432B    |.  EB 56                  jmp short talisman.004B4383
004B432D    |>  BB DB867601            mov ebx,17686DB                                    ;  

Case 1E of switch 004B427E
004B4332    |.  EB 4F                  jmp short talisman.004B4383
004B4334    |>  BB 81F43E04            mov ebx,43EF481                                    ;  

Case 1F of switch 004B427E
004B4339    |.  EB 48                  jmp short talisman.004B4383
004B433B    |>  BB D7F33E04            mov ebx,43EF3D7                                    ;  

Case 20 of switch 004B427E
004B4340    |.  EB 41                  jmp short talisman.004B4383
004B4342    |>  BB BFEE6F04            mov ebx,46FEEBF                                    ;  

Case 21 of switch 004B427E
004B4347    |.  EB 3A                  jmp short talisman.004B4383
004B4349    |>  BB A7363104            mov ebx,43136A7                                    ;  

Case 22 of switch 004B427E
004B434E    |.  EB 33                  jmp short talisman.004B4383
004B4350    |>  BB BB344E04            mov ebx,44E34BB                                    ;  

Case 23 of switch 004B427E
004B4355    |.  EB 2C                  jmp short talisman.004B4383
004B4357    |>  BB F2034004            mov ebx,44003F2                                    ;  

Case 24 of switch 004B427E
004B435C    |.  EB 25                  jmp short talisman.004B4383
004B435E    |>  BB 6308B904            mov ebx,4B90863                                    ;  

Case 25 of switch 004B427E
004B4363    |.  EB 1E                  jmp short talisman.004B4383
004B4365    |>  BB E344EF02            mov ebx,2EF44E3                                    ;  

Case 26 of switch 004B427E
004B436A    |.  EB 17                  jmp short talisman.004B4383
004B436C    |>  BB 3B9EB503            mov ebx,3B59E3B                                    ;  

Case 27 of switch 004B427E
004B4371    |.  EB 10                  jmp short talisman.004B4383
004B4373    |>  BB 568F4604            mov ebx,4468F56                                    ;  

Case 28 of switch 004B427E
004B4378    |.  EB 09                  jmp short talisman.004B4383
004B437A    |>  BB 7BA28304            mov ebx,483A27B                                    ;  

Case 29 of switch 004B427E
004B437F    |.  EB 02                  jmp short talisman.004B4383
004B4381    |>  33DB                   xor ebx,ebx                                        ;  

Default case of switch 004B427E
004B4383    |>  8D55 FC                lea edx,dword ptr ss:[ebp-4]
004B4386    |.  8BC6                   mov eax,esi
004B4388    |.  E8 3B3FF5FF            call talisman.004082C8
004B438D    |.  FF75 FC                push dword ptr ss:[ebp-4]
004B4390    |.  68 E0434B00            push talisman.004B43E0
004B4395    |.  8D55 F8                lea edx,dword ptr ss:[ebp-8]
004B4398    |.  8BC3                   mov eax,ebx
004B439A    |.  E8 293FF5FF            call talisman.004082C8
004B439F    |.  FF75 F8                push dword ptr ss:[ebp-8]
004B43A2    |.  8BC7                   mov eax,edi
004B43A4    |.  BA 03000000            mov edx,3
004B43A9    |.  E8 CEFAF4FF            call talisman.00403E7C
004B43AE    |.  33C0                   xor eax,eax
004B43B0    |.  5A                     pop edx
004B43B1    |.  59                     pop ecx
004B43B2    |.  59                     pop ecx
004B43B3    |.  64:8910                mov dword ptr fs:[eax],edx
004B43B6    |.  68 D0434B00            push talisman.004B43D0
004B43BB    |>  8D45 F8                lea eax,dword ptr ss:[ebp-8]
004B43BE    |.  BA 02000000            mov edx,2
004B43C3    |.  E8 9CF7F4FF            call talisman.00403B64
004B43C8    \.  C3                     retn
004B43C9     .^ E9 16F2F4FF            jmp talisman.004035E4
004B43CE     .^ EB EB                  jmp short talisman.004B43BB
004B43D0     .  5F                     pop edi
004B43D1     .  5E                     pop esi
004B43D2     .  5B                     pop ebx
004B43D3     .  59                     pop ecx
004B43D4     .  59                     pop ecx
004B43D5     .  5D                     pop ebp
004B43D6     .  C3                     retn

===============================================================================
[分析七]Switch (cases 2B..3F)
004BBCE0    /$  55                     push ebp
004BBCE1    |.  8BEC                   mov ebp,esp
004BBCE3    |.  6A 00                  push 0
004BBCE5    |.  6A 00                  push 0
004BBCE7    |.  53                     push ebx
004BBCE8    |.  56                     push esi
004BBCE9    |.  57                     push edi
004BBCEA    |.  8BF9                   mov edi,ecx
004BBCEC    |.  8BF2                   mov esi,edx
004BBCEE    |.  33C0                   xor eax,eax
004BBCF0    |.  55                     push ebp
004BBCF1    |.  68 43BE4B00            push talisman.004BBE43
004BBCF6    |.  64:FF30                push dword ptr fs:[eax]
004BBCF9    |.  64:8920                mov dword ptr fs:[eax],esp
004BBCFC    |.  8BC6                   mov eax,esi
004BBCFE    |.  83C0 D5                add eax,-2B                                        ;  

Switch (cases 2B..3F)
004BBD01    |.  83F8 14                cmp eax,14
004BBD04    |.  0F87 F1000000          ja talisman.004BBDFB
004BBD0A    |.  FF2485 11BD4B00        jmp dword ptr ds:[eax*4+4BBD11]
004BBD11    |.  79BD4B00               dd talisman.004BBD79                               ;  

Switch table used at 004BBD0A
004BBD15    |.  80BD4B00               dd talisman.004BBD80
004BBD19    |.  87BD4B00               dd talisman.004BBD87
004BBD1D    |.  8BBD4B00               dd talisman.004BBD8B
004BBD21    |.  92BD4B00               dd talisman.004BBD92
004BBD25    |.  99BD4B00               dd talisman.004BBD99
004BBD29    |.  A0BD4B00               dd talisman.004BBDA0
004BBD2D    |.  A7BD4B00               dd talisman.004BBDA7
004BBD31    |.  AEBD4B00               dd talisman.004BBDAE
004BBD35    |.  B5BD4B00               dd talisman.004BBDB5
004BBD39    |.  BCBD4B00               dd talisman.004BBDBC
004BBD3D    |.  C3BD4B00               dd talisman.004BBDC3
004BBD41    |.  CABD4B00               dd talisman.004BBDCA
004BBD45    |.  D1BD4B00               dd talisman.004BBDD1
004BBD49    |.  D8BD4B00               dd talisman.004BBDD8
004BBD4D    |.  DFBD4B00               dd talisman.004BBDDF
004BBD51    |.  E6BD4B00               dd talisman.004BBDE6
004BBD55    |.  EDBD4B00               dd talisman.004BBDED
004BBD59    |.  F4BD4B00               dd talisman.004BBDF4
004BBD5D    |.  65BD4B00               dd talisman.004BBD65
004BBD61    |.  6FBD4B00               dd talisman.004BBD6F
004BBD65    |>  BB 96F33E04            mov ebx,43EF396                                    ;  

Case 3E ('>') of switch 004BBCFE
004BBD6A    |.  E9 8E000000            jmp talisman.004BBDFD
004BBD6F    |>  BB F71EFB01            mov ebx,1FB1EF7                                    ;  

Case 3F ('?') of switch 004BBCFE
004BBD74    |.  E9 84000000            jmp talisman.004BBDFD
004BBD79    |>  BB F413DB01            mov ebx,1DB13F4                                    ;  

Case 2B ('+') of switch 004BBCFE
004BBD7E    |.  EB 7D                  jmp short talisman.004BBDFD
004BBD80    |>  BB 456A0F02            mov ebx,20F6A45                                    ;  

Case 2C (',') of switch 004BBCFE
004BBD85    |.  EB 76                  jmp short talisman.004BBDFD
004BBD87    |>  33DB                   xor ebx,ebx                                        ;  

Case 2D ('-') of switch 004BBCFE
004BBD89    |.  EB 72                  jmp short talisman.004BBDFD
004BBD8B    |>  BB 1D99DC01            mov ebx,1DC991D                                    ;  

Case 2E ('.') of switch 004BBCFE
004BBD90    |.  EB 6B                  jmp short talisman.004BBDFD
004BBD92    |>  BB 853EDD01            mov ebx,1DD3E85                                    ;  

Case 2F ('/') of switch 004BBCFE
004BBD97    |.  EB 64                  jmp short talisman.004BBDFD
004BBD99    |>  BB 4DCC4F02            mov ebx,24FCC4D                                    ;  

Case 30 ('0') of switch 004BBCFE
004BBD9E    |.  EB 5D                  jmp short talisman.004BBDFD
004BBDA0    |>  BB 9699DC01            mov ebx,1DC9996                                    ;  

Case 31 ('1') of switch 004BBCFE
004BBDA5    |.  EB 56                  jmp short talisman.004BBDFD
004BBDA7    |>  BB 45974003            mov ebx,3409745                                    ;  

Case 32 ('2') of switch 004BBCFE
004BBDAC    |.  EB 4F                  jmp short talisman.004BBDFD
004BBDAE    |>  BB 01317502            mov ebx,2753101                                    ;  

Case 33 ('3') of switch 004BBCFE
004BBDB3    |.  EB 48                  jmp short talisman.004BBDFD
004BBDB5    |>  BB 57307502            mov ebx,2753057                                    ;  

Case 34 ('4') of switch 004BBCFE
004BBDBA    |.  EB 41                  jmp short talisman.004BBDFD
004BBDBC    |>  BB 3F2BA602            mov ebx,2A62B3F                                    ;  

Case 35 ('5') of switch 004BBCFE
004BBDC1    |.  EB 3A                  jmp short talisman.004BBDFD
004BBDC3    |>  BB 173C9502            mov ebx,2953C17                                    ;  

Case 36 ('6') of switch 004BBCFE
004BBDC8    |.  EB 33                  jmp short talisman.004BBDFD
004BBDCA    |>  BB 3B718402            mov ebx,284713B                                    ;  

Case 37 ('7') of switch 004BBCFE
004BBDCF    |.  EB 2C                  jmp short talisman.004BBDFD
004BBDD1    |>  BB A2B57602            mov ebx,276B5A2                                    ;  

Case 38 ('8') of switch 004BBCFE
004BBDD6    |.  EB 25                  jmp short talisman.004BBDFD
004BBDD8    |>  BB 856B0E03            mov ebx,30E6B85                                    ;  

Case 39 ('9') of switch 004BBCFE
004BBDDD    |.  EB 1E                  jmp short talisman.004BBDFD
004BBDDF    |>  BB 264E7302            mov ebx,2734E26                                    ;  

Case 3A (':') of switch 004BBCFE
004BBDE4    |.  EB 17                  jmp short talisman.004BBDFD
004BBDE6    |>  BB B50BEB03            mov ebx,3EB0BB5                                    ;  

Case 3B (';') of switch 004BBCFE
004BBDEB    |.  EB 10                  jmp short talisman.004BBDFD
004BBDED    |>  BB 2ECE7C02            mov ebx,27CCE2E                                    ;  

Case 3C ('<') of switch 004BBCFE
004BBDF2    |.  EB 09                  jmp short talisman.004BBDFD
004BBDF4    |>  BB 9E7C4304            mov ebx,4437C9E                                    ;  

Case 3D ('=') of switch 004BBCFE
004BBDF9    |.  EB 02                  jmp short talisman.004BBDFD
004BBDFB    |>  33DB                   xor ebx,ebx                                        ;  

Default case of switch 004BBCFE
004BBDFD    |>  8D55 FC                lea edx,dword ptr ss:[ebp-4]
004BBE00    |.  8BC6                   mov eax,esi
004BBE02    |.  E8 C1C4F4FF            call talisman.004082C8
004BBE07    |.  FF75 FC                push dword ptr ss:[ebp-4]
004BBE0A    |.  68 5CBE4B00            push talisman.004BBE5C
004BBE0F    |.  8D55 F8                lea edx,dword ptr ss:[ebp-8]
004BBE12    |.  8BC3                   mov eax,ebx
004BBE14    |.  E8 AFC4F4FF            call talisman.004082C8
004BBE19    |.  FF75 F8                push dword ptr ss:[ebp-8]
004BBE1C    |.  8BC7                   mov eax,edi
004BBE1E    |.  BA 03000000            mov edx,3
004BBE23    |.  E8 5480F4FF            call talisman.00403E7C
004BBE28    |.  33C0                   xor eax,eax
004BBE2A    |.  5A                     pop edx
004BBE2B    |.  59                     pop ecx
004BBE2C    |.  59                     pop ecx
004BBE2D    |.  64:8910                mov dword ptr fs:[eax],edx
004BBE30    |.  68 4ABE4B00            push talisman.004BBE4A
004BBE35    |>  8D45 F8                lea eax,dword ptr ss:[ebp-8]
004BBE38    |.  BA 02000000            mov edx,2
004BBE3D    |.  E8 227DF4FF            call talisman.00403B64
004BBE42    \.  C3                     retn
004BBE43     .^ E9 9C77F4FF            jmp talisman.004035E4
004BBE48     .^ EB EB                  jmp short talisman.004BBE35
004BBE4A     .  5F                     pop edi
004BBE4B     .  5E                     pop esi
004BBE4C     .  5B                     pop ebx
004BBE4D     .  59                     pop ecx
004BBE4E     .  59                     pop ecx
004BBE4F     .  5D                     pop ebp
004BBE50     .  C3                     retn

=============================================================
[分析八]Switch (cases 40..54)
call from 004ADB2C
004ACECC    /$  55                     push ebp
004ACECD    |.  8BEC                   mov ebp,esp
004ACECF    |.  6A 00                  push 0
004ACED1    |.  6A 00                  push 0
004ACED3    |.  53                     push ebx
004ACED4    |.  56                     push esi
004ACED5    |.  57                     push edi
004ACED6    |.  8BFA                   mov edi,edx
004ACED8    |.  8BF0                   mov esi,eax
004ACEDA    |.  33C0                   xor eax,eax
004ACEDC    |.  55                     push ebp
004ACEDD    |.  68 2FD04A00            push talisman.004AD02F
004ACEE2    |.  64:FF30                push dword ptr fs:[eax]
004ACEE5    |.  64:8920                mov dword ptr fs:[eax],esp
004ACEE8    |.  8BC6                   mov eax,esi
004ACEEA    |.  83C0 C0                add eax,-40                                        ;  

Switch (cases 40..54)
004ACEED    |.  83F8 14                cmp eax,14
004ACEF0    |.  0F87 F1000000          ja talisman.004ACFE7
004ACEF6    |.  FF2485 FDCE4A00        jmp dword ptr ds:[eax*4+4ACEFD]
004ACEFD    |.  6CCF4A00               dd talisman.004ACF6C                               ;  

Switch table used at 004ACEF6
004ACF01    |.  73CF4A00               dd talisman.004ACF73
004ACF05    |.  7ACF4A00               dd talisman.004ACF7A
004ACF09    |.  81CF4A00               dd talisman.004ACF81
004ACF0D    |.  88CF4A00               dd talisman.004ACF88
004ACF11    |.  8FCF4A00               dd talisman.004ACF8F
004ACF15    |.  96CF4A00               dd talisman.004ACF96
004ACF19    |.  9DCF4A00               dd talisman.004ACF9D
004ACF1D    |.  A4CF4A00               dd talisman.004ACFA4
004ACF21    |.  ABCF4A00               dd talisman.004ACFAB
004ACF25    |.  AFCF4A00               dd talisman.004ACFAF
004ACF29    |.  B6CF4A00               dd talisman.004ACFB6
004ACF2D    |.  BDCF4A00               dd talisman.004ACFBD
004ACF31    |.  C4CF4A00               dd talisman.004ACFC4
004ACF35    |.  CBCF4A00               dd talisman.004ACFCB
004ACF39    |.  D2CF4A00               dd talisman.004ACFD2
004ACF3D    |.  D9CF4A00               dd talisman.004ACFD9
004ACF41    |.  E0CF4A00               dd talisman.004ACFE0
004ACF45    |.  51CF4A00               dd talisman.004ACF51
004ACF49    |.  5BCF4A00               dd talisman.004ACF5B
004ACF4D    |.  65CF4A00               dd talisman.004ACF65
004ACF51    |>  BB 45520D03            mov ebx,30D5245                                    ;  

Case 52 ('R') of switch 004ACEEA
004ACF56    |.  E9 8E000000            jmp talisman.004ACFE9
004ACF5B    |>  BB F74B2C03            mov ebx,32C4BF7                                    ;  

Case 53 ('S') of switch 004ACEEA
004ACF60    |.  E9 84000000            jmp talisman.004ACFE9
004ACF65    |>  BB DAC70D03            mov ebx,30DC7DA                                    ;  

Case 54 ('T') of switch 004ACEEA
004ACF6A    |.  EB 7D                  jmp short talisman.004ACFE9
004ACF6C    |>  BB 1796F704            mov ebx,4F79617                                    ;  

Case 40 ('@') of switch 004ACEEA
004ACF71    |.  EB 76                  jmp short talisman.004ACFE9
004ACF73    |>  BB 95D22D03            mov ebx,32DD295                                    ;  

Case 41 ('A') of switch 004ACEEA
004ACF78    |.  EB 6F                  jmp short talisman.004ACFE9
004ACF7A    |>  BB FFC50D03            mov ebx,30DC5FF                                    ;  

Case 42 ('B') of switch 004ACEEA
004ACF7F    |.  EB 68                  jmp short talisman.004ACFE9
004ACF81    |>  BB 9EA97405            mov ebx,574A99E                                    ;  

Case 43 ('C') of switch 004ACEEA
004ACF86    |.  EB 61                  jmp short talisman.004ACFE9
004ACF88    |>  BB A5FB8003            mov ebx,380FBA5                                    ;  

Case 44 ('D') of switch 004ACEEA
004ACF8D    |.  EB 5A                  jmp short talisman.004ACFE9
004ACF8F    |>  BB 96C60D03            mov ebx,30DC696                                    ;  

Case 45 ('E') of switch 004ACEEA
004ACF94    |.  EB 53                  jmp short talisman.004ACFE9
004ACF96    |>  BB BB3FD103            mov ebx,3D13FBB                                    ;  

Case 46 ('F') of switch 004ACEEA
004ACF9B    |.  EB 4C                  jmp short talisman.004ACFE9
004ACF9D    |>  BB 015EA603            mov ebx,3A65E01                                    ;  

Case 47 ('G') of switch 004ACEEA
004ACFA2    |.  EB 45                  jmp short talisman.004ACFE9
004ACFA4    |>  BB 575DA603            mov ebx,3A65D57                                    ;  

Case 48 ('H') of switch 004ACEEA
004ACFA9    |.  EB 3E                  jmp short talisman.004ACFE9
004ACFAB    |>  33DB                   xor ebx,ebx                                        ;  

Case 49 ('I') of switch 004ACEEA
004ACFAD    |.  EB 3A                  jmp short talisman.004ACFE9
004ACFAF    |>  BB 1769C603            mov ebx,3C66917                                    ;  

Case 4A ('J') of switch 004ACEEA
004ACFB4    |.  EB 33                  jmp short talisman.004ACFE9
004ACFB6    |>  BB 4F11BF04            mov ebx,4BF114F                                    ;  

Case 4B ('K') of switch 004ACEEA
004ACFBB    |.  EB 2C                  jmp short talisman.004ACFE9
004ACFBD    |>  BB 5CE2A703            mov ebx,3A7E25C                                    ;  

Case 4C ('L') of switch 004ACEEA
004ACFC2    |.  EB 25                  jmp short talisman.004ACFE9
004ACFC4    |>  BB 39766201            mov ebx,1627639                                    ;  

Case 4D ('M') of switch 004ACEEA
004ACFC9    |.  EB 1E                  jmp short talisman.004ACFE9
004ACFCB    |>  BB F0B6B002            mov ebx,2B0B6F0                                    ;  

Case 4E ('N') of switch 004ACEEA
004ACFD0    |.  EB 17                  jmp short talisman.004ACFE9
004ACFD2    |>  BB 25BF4A05            mov ebx,54ABF25                                    ;  

Case 4F ('O') of switch 004ACEEA
004ACFD7    |.  EB 10                  jmp short talisman.004ACFE9
004ACFD9    |>  BB EEB89E03            mov ebx,39EB8EE                                    ;  

Case 50 ('P') of switch 004ACEEA
004ACFDE    |.  EB 09                  jmp short talisman.004ACFE9
004ACFE0    |>  BB F882EA03            mov ebx,3EA82F8                                    ;  

Case 51 ('Q') of switch 004ACEEA
004ACFE5    |.  EB 02                  jmp short talisman.004ACFE9
004ACFE7    |>  33DB                   xor ebx,ebx                                        ;  

Default case of switch 004ACEEA
004ACFE9    |>  8D55 FC                lea edx,dword ptr ss:[ebp-4]
004ACFEC    |.  8BC6                   mov eax,esi
004ACFEE    |.  E8 D5B2F5FF            call talisman.004082C8
004ACFF3    |.  FF75 FC                push dword ptr ss:[ebp-4]
004ACFF6    |.  68 48D04A00            push talisman.004AD048
004ACFFB    |.  8D55 F8                lea edx,dword ptr ss:[ebp-8]
004ACFFE    |.  8BC3                   mov eax,ebx
004AD000    |.  E8 C3B2F5FF            call talisman.004082C8
004AD005    |.  FF75 F8                push dword ptr ss:[ebp-8]
004AD008    |.  8BC7                   mov eax,edi
004AD00A    |.  BA 03000000            mov edx,3
004AD00F    |.  E8 686EF5FF            call talisman.00403E7C
004AD014    |.  33C0                   xor eax,eax
004AD016    |.  5A                     pop edx
004AD017    |.  59                     pop ecx
004AD018    |.  59                     pop ecx
004AD019    |.  64:8910                mov dword ptr fs:[eax],edx
004AD01C    |.  68 36D04A00            push talisman.004AD036
004AD021    |>  8D45 F8                lea eax,dword ptr ss:[ebp-8]
004AD024    |.  BA 02000000            mov edx,2
004AD029    |.  E8 366BF5FF            call talisman.00403B64
004AD02E    \.  C3                     retn
004AD02F     .^ E9 B065F5FF            jmp talisman.004035E4
004AD034     .^ EB EB                  jmp short talisman.004AD021
004AD036     .  5F                     pop edi
004AD037     .  5E                     pop esi
004AD038     .  5B                     pop ebx
004AD039     .  59                     pop ecx
004AD03A     .  59                     pop ecx
004AD03B     .  5D                     pop ebp
004AD03C     .  C3                     retn


=============================================================================================
[分析九]--比较字符串
00403ECC   53                     push    ebx
00403ECD   56                     push    esi
00403ECE   57                     push    edi
00403ECF   89C6                   mov     esi, eax   //ESI 00FD1BEC ASCII "21933099" str1
00403ED1   89D7                   mov     edi, edx   //EDX 00FD1C1C ASCII "100338181" str2
00403ED3   39D0                   cmp     eax, edx
00403ED5   0F848F000000           jz      00403F6A
00403EDB   85F6                   test    esi, esi
00403EDD   7468                   jz      00403F47
00403EDF   85FF                   test    edi, edi
00403EE1   746B                   jz      00403F4E
00403EE3   8B46FC                 mov     eax, [esi-$04] //eax=00000008,"21933099"的长度
00403EE6   8B57FC                 mov     edx, [edi-$04] //eax=00000009  "100338181"的长度
00403EE9   29D0                   sub     eax, edx     
00403EEB   7702                   jnbe    00403EEF     // str1的长度小于str2的长度,跳;

str1=str2
00403EED   01C2                   add     edx, eax     //edx为str1的长度
00403EEF   52                     push    edx
00403EF0   C1EA02                 shr     edx, $02
00403EF3   7426                   jz      00403F1B
00403EF5   8B0E                   mov     ecx, [esi]
00403EF7   8B1F                   mov     ebx, [edi]
00403EF9   39D9                   cmp     ecx, ebx
00403EFB   7558                   jnz     00403F55
00403EFD   4A                     dec     edx
00403EFE   7415                   jz      00403F15

* Reference to field TAboutBox.Owner : TComponent
|

Begin LOOP:
00403F00   8B4E04                 mov     ecx, [esi+$04] //str1
00403F03   8B5F04                 mov     ebx, [edi+$04] //str2
00403F06   39D9                   cmp     ecx, ebx       //不等就跳走,必须相同
00403F08   754B                   jnz     00403F55
00403F0A   83C608                 add     esi, +$08
00403F0D   83C708                 add     edi, +$08
00403F10   4A                     dec     edx
00403F11   75E2                   jnz     00403EF5
END LOOP

00403F13   EB06                   jmp     00403F1B
00403F15   83C604                 add     esi, +$04
00403F18   83C704                 add     edi, +$04
00403F1B   5A                     pop     edx
00403F1C   83E203                 and     edx, +$03
00403F1F   7422                   jz      00403F43
00403F21   8B0E                   mov     ecx, [esi]
00403F23   8B1F                   mov     ebx, [edi]
00403F25   38D9                   cmp     cl, bl
00403F27   7541                   jnz     00403F6A
00403F29   4A                     dec     edx
00403F2A   7417                   jz      00403F43
00403F2C   38FD                   cmp     ch, bh
00403F2E   753A                   jnz     00403F6A
00403F30   4A                     dec     edx
00403F31   7410                   jz      00403F43
00403F33   81E30000FF00           and     ebx, $00FF0000
00403F39   81E10000FF00           and     ecx, $00FF0000
00403F3F   39D9                   cmp     ecx, ebx
00403F41   7527                   jnz     00403F6A
00403F43   01C0                   add     eax, eax
00403F45   EB23                   jmp     00403F6A
00403F47   8B57FC                 mov     edx, [edi-$04]
00403F4A   29D0                   sub     eax, edx
00403F4C   EB1C                   jmp     00403F6A
00403F4E   8B46FC                 mov     eax, [esi-$04]
00403F51   29D0                   sub     eax, edx
00403F53   EB15                   jmp     00403F6A
00403F55   5A                     pop     edx
00403F56   38D9                   cmp     cl, bl
00403F58   7510                   jnz     00403F6A
00403F5A   38FD                   cmp     ch, bh
00403F5C   750C                   jnz     00403F6A
00403F5E   C1E910                 shr     ecx, $10
00403F61   C1EB10                 shr     ebx, $10
00403F64   38D9                   cmp     cl, bl
00403F66   7502                   jnz     00403F6A
00403F68   38FD                   cmp     ch, bh
00403F6A   5F                     pop     edi
00403F6B   5E                     pop     esi
00403F6C   5B                     pop     ebx
00403F6D   C3                     ret

====================================================
[分析十]Switch (cases 55..69)
from 004AD2EE  {call 004AD04C}
004AD04C    /$  55                 push ebp
004AD04D    |.  8BEC               mov ebp,esp
004AD04F    |.  6A 00              push 0
004AD051    |.  6A 00              push 0
004AD053    |.  53                 push ebx                    ;00000063
004AD054    |.  56                 push esi                    ;00000000
004AD055    |.  57                 push edi                    ;0012FBC0
004AD056    |.  8BFA               mov edi,edx                 ;0012FBC0
004AD058    |.  8BF0               mov esi,eax                 ;00000063
004AD05A    |.  33C0               xor eax,eax
004AD05C    |.  55                 push ebp
004AD05D    |.  68 B5D14A00        push talisman.004AD1B5
004AD062    |.  64:FF30            push dword ptr fs:[eax]
004AD065    |.  64:8920            mov dword ptr fs:[eax],esp
004AD068    |.  8BC6               mov eax,esi                                        

;00000063
004AD06A    |.  83C0 AB            add eax,-55                                        ;  

Switch (cases 55..69)   eax=0000000E
004AD06D    |.  83F8 14            cmp eax,14
004AD070    |.  0F87 F7000000      ja talisman.004AD16D
004AD076    |.  FF2485 7DD04A00    jmp dword ptr ds:[eax*4+4AD07D]
004AD07D    |. /F6D04A00           dd talisman.004AD0F6                               ;  

Switch table used at 004AD076
004AD081    |. |FDD04A00           dd talisman.004AD0FD
004AD085    |. |04D14A00           dd talisman.004AD104
004AD089    |. |0BD14A00           dd talisman.004AD10B
004AD08D    |. |12D14A00           dd talisman.004AD112
004AD091    |. |19D14A00           dd talisman.004AD119
004AD095    |. |20D14A00           dd talisman.004AD120
004AD099    |. |27D14A00           dd talisman.004AD127
004AD09D    |. |2ED14A00           dd talisman.004AD12E
004AD0A1    |. |35D14A00           dd talisman.004AD135
004AD0A5    |. |3CD14A00           dd talisman.004AD13C
004AD0A9    |. |43D14A00           dd talisman.004AD143
004AD0AD    |. |4AD14A00           dd talisman.004AD14A
004AD0B1    |. |51D14A00           dd talisman.004AD151
004AD0B5    |. |58D14A00           dd talisman.004AD158
004AD0B9    |. |5FD14A00           dd talisman.004AD15F
004AD0BD    |. |66D14A00           dd talisman.004AD166
004AD0C1    |. |D1D04A00           dd talisman.004AD0D1
004AD0C5    |. |DBD04A00           dd talisman.004AD0DB
004AD0C9    |. |E5D04A00           dd talisman.004AD0E5
004AD0CD    |. |EFD04A00           dd talisman.004AD0EF
004AD0D1    |> |BB B98AD704        mov ebx,4D78AB9                                    ;  Case 

66 ('f') of switch 004AD06A
004AD0D6    |. |E9 94000000        jmp talisman.004AD16F
004AD0DB    |> |BB 770FF604        mov ebx,4F60F77                                    ;  Case 

67 ('g') of switch 004AD06A
004AD0E0    |. |E9 8A000000        jmp talisman.004AD16F
004AD0E5    |> |BB 5A8BD704        mov ebx,4D78B5A                                    ;  Case 

68 ('h') of switch 004AD06A
004AD0EA    |. |E9 80000000        jmp talisman.004AD16F
004AD0EF    |> |BB C55A0A05        mov ebx,50A5AC5                                    ;  Case 

69 ('i') of switch 004AD06A
004AD0F4    |. |EB 79              jmp short talisman.004AD16F
004AD0F6    |> \BB 1596F704        mov ebx,4F79615                                    ;  Case 

55 ('U') of switch 004AD06A
004AD0FB    |.  EB 72              jmp short talisman.004AD16F
004AD0FD    |>  BB 9D89D704        mov ebx,4D7899D                                    ;  Case 

56 ('V') of switch 004AD06A
004AD102    |.  EB 6B              jmp short talisman.004AD16F
004AD104    |>  BB 052FD804        mov ebx,4D82F05                                    ;  Case 

57 ('W') of switch 004AD06A
004AD109    |.  EB 64              jmp short talisman.004AD16F
004AD10B    |>  BB 77782604        mov ebx,4267877                                    ;  Case 

58 ('X') of switch 004AD06A
004AD110    |.  EB 5D              jmp short talisman.004AD16F
004AD112    |>  BB D67CD404        mov ebx,4D47CD6                                    ;  Case 

59 ('Y') of switch 004AD06A
004AD117    |.  EB 56              jmp short talisman.004AD16F
004AD119    |>  BB BB6C0205        mov ebx,5026CBB                                    ;  Case 

5A ('Z') of switch 004AD06A
004AD11E    |.  EB 4F              jmp short talisman.004AD16F
004AD120    |>  BB 018BD704        mov ebx,4D78B01                                    ;  Case 

5B ('[') of switch 004AD06A
004AD125    |.  EB 48              jmp short talisman.004AD16F
004AD127    |>  BB 4D8AD704        mov ebx,4D78A4D                                    ;  Case 

5C ('') of switch 004AD06A
004AD12C    |.  EB 41              jmp short talisman.004AD16F
004AD12E    |>  BB 3F850805        mov ebx,508853F                                    ;  Case 

5D (']') of switch 004AD06A
004AD133    |.  EB 3A              jmp short talisman.004AD16F
004AD135    |>  BB 5B5E2004        mov ebx,4205E5B                                    ;  Case 

5E ('^') of switch 004AD06A
004AD13A    |.  EB 33              jmp short talisman.004AD16F
004AD13C    |>  BB 3BCBE604        mov ebx,4E6CB3B                                    ;  Case 

5F ('_') of switch 004AD06A
004AD141    |.  EB 2C              jmp short talisman.004AD16F
004AD143    |>  BB 22A67105        mov ebx,571A622                                    ;  Case 

60 ('`') of switch 004AD06A
004AD148    |.  EB 25              jmp short talisman.004AD16F
004AD14A    |>  BB 2328E705        mov ebx,5E72823                                    ;  Case 

61 ('a') of switch 004AD06A
004AD14F    |.  EB 1E              jmp short talisman.004AD16F
004AD151    |>  BB 1EE6AA03        mov ebx,3AAE61E                                    ;  Case 

62 ('b') of switch 004AD06A
004AD156    |.  EB 17              jmp short talisman.004AD16F

跳到这里:

004AD158    |> \BB 1F46F005        mov ebx,5F0461F                                    ;  Case 

63 ('c') of switch 004AD06A,这是个常数,"99632671"
004AD15D    |.  EB 10              jmp short talisman.004AD16F
004AD15F    |> \BB D6F8AD03        mov ebx,3ADF8D6                                    ;  Case 

64 ('d') of switch 004AD06A
004AD164    |.  EB 09              jmp short talisman.004AD16F
004AD166    |>  BB C5D37601        mov ebx,176D3C5                                    ;  Case 

65 ('e') of switch 004AD06A
004AD16B    |.  EB 02              jmp short talisman.004AD16F
004AD16D    |>  33DB               xor ebx,ebx                                        ;  

Default case of switch 004AD06A

004AD16F    |>  8D55 FC            lea edx,dword ptr ss:[ebp-4]                       

;0012FA64
004AD172    |.  8BC6               mov eax,esi                                        

;00000063
004AD174    |.  E8 4FB1F5FF        call talisman.004082C8                             ;见前面

的分析,转化为"99"
004AD179    |.  FF75 FC            push dword ptr ss:[ebp-4]
004AD17C    |.  68 CCD14A00        push talisman.004AD1CC
004AD181    |.  8D55 F8            lea edx,dword ptr ss:[ebp-8]
004AD184    |.  8BC3               mov eax,ebx
004AD186    |.  E8 3DB1F5FF        call talisman.004082C8                             ;
004AD18B    |.  FF75 F8            push dword ptr ss:[ebp-8]
004AD18E    |.  8BC7               mov eax,edi
004AD190    |.  BA 03000000        mov edx,3
004AD195    |.  E8 E26CF5FF        call talisman.00403E7C                             ;F8
004AD19A    |.  33C0               xor eax,eax
004AD19C    |.  5A                 pop edx
004AD19D    |.  59                 pop ecx
004AD19E    |.  59                 pop ecx
004AD19F    |.  64:8910            mov dword ptr fs:[eax],edx
004AD1A2    |.  68 BCD14A00        push talisman.004AD1BC
004AD1A7    |>  8D45 F8            lea eax,dword ptr ss:[ebp-8]
004AD1AA    |.  BA 02000000        mov edx,2
004AD1AF    |.  E8 B069F5FF        call talisman.00403B64
004AD1B4    \.  C3                 retn                                  ;跳到004AD1BC
004AD1B5     .^ E9 2A64F5FF        jmp talisman.004035E4
004AD1BA     .^ EB EB              jmp short talisman.004AD1A7
004AD1BC     .  5F                 pop edi
004AD1BD     .  5E                 pop esi
004AD1BE     .  5B                 pop ebx
004AD1BF     .  59                 pop ecx
004AD1C0     .  59                 pop ecx
004AD1C1     .  5D                 pop ebp
004AD1C2     .  C3                 retn                                  ;回到004AD2F3

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

=

【破解总结】
           首先,我们输入的注册码为"1234567890",长度为10,因而在[分析一]004896FA处没有跳,
      接下来,程序帮我们生成了一个长为20的注册码"10233219330999945687",放心,这个码肯定是不

能通过验证的,而且很具有迷惑性。
      "30999945687"为程序中的64位十六进制常数737BDA1D7的十进制数字串,"102332193"则为常数

$06197721的十进制数字串。
       接下来程序又计算了用户名的ascii码的累加和。对注册码的处理是:10233 21933099 99 45687
       取出了14,15位组成二位十进制数。取出第六位开始的八个,组成八位十进制数,称之为regcode1


       然后根据哪个两位十进制数,再来查表,确定一个姑且称之为basecode的数,这个basecode+用户

名的累加和*$00000367=regcode2
       最后if (regcode1==regcode2)
               register success!
       由于我们的注册码长度为10,因而"10233219330999945687"是常数,则basecode也是常数,

regcode1也是常数,我们反求用户名ascii码
       累加和=(regcode1-basecode) DIV $00000367,而regcode1-basecode<0,故这是一个永假的判断,

即不管用户名(由ascii码组成,汉字没验证,不敢说)
       是什么,总会报错。
       跟踪时发现注册码只能为数字,注册码长度不小于20时跳过了一段程序。那么,现在我们就改变注

册码长度为20,或更长,再来跟踪看看。
       在注册码窗口中输入20位后,便不能再输入.看来用户名长度必为

20.regcode:"12345678901234567890"。唯一的差别是跳过了一段生成
       "10233219330999945687"的代码,取而代之的是我们自己输入的注册码,看来一切都清楚了。
      
       1 2 3 4 5  6 7 8 9 a b c d e f 10 11 12 13 14
                  + + + + + + + + * *
      CNwinndy(ascii sum=032A)032A*0367=000AC3E6
     取两位十进制数为24来手动计算一下看看:
     24
     2F5559F+000AC3E6=3001985(50338181) 
     xxxxx5033818124xxxxx.注册成功!x代表任意十进制个位数。
     取为07(个位数)再看看
     07
     99AE37+000AC3E6=A4721D(10777117)
     xxxxx1077711707xxxxx 注册成功!


     那么,注册信息保存在哪里?
    搜索CNwinndy,xxxxx5033818124xxxxx,都没找到,看来不是用明文保存的.
    还记得HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced下的

WCID键吧,
    打开看看,发现里面有32行,每行8个byte的数据,咦?前面跟踪的时候,见004896CE处初始化了一个数组

的,256个byte的数组,
    在00489792处把版本信息"2810"也存在里面了,注册信息肯定也在其中了,删除WCID这个键再打开程

序看看,
    删除,再运行,变成没注册的版本!OK!
   
   尽管,用户名在中途经过变换,但是在计算ascii和的时候,程序还是还原了。程序这样做,使得在调

试时容易跟丢,因为不是明文了。
   但是,程序还是还原了,然后再计算和,如果我们不还原,而是在计算变换后的码的和sum1,然后再加

上length(UserName)*0F(还原的方式是加上0F),这样也可
   得到sum,这样就更具有迷惑性了!


  注册机的编写:可以先定下两位十进制数(个位数前面加0),用作注册码的14,15位,然后根据这两位十

进制数查表,得到basecode,然后计算
  然后计算出注册码的第6位-14位,设为regcode2,前面五位和后面五位可以取任意十进制数字。如果定

下的两位十进制数,使得
  regcode1,必须保证regcode2为八位十进制数。10000000(989680)-99999999(5F5E0FF)长度不为8,则需

要调整这两位十进制数。通过查表发现所有的basecode都比
 10000000(989680)大,看来长度不会小于8,只可能大于8了。若长度大于八,则我们就需要调整两位十进

制数,重新确定basecode,以使得regcode2长度为八。
  但从程序内定的两位数字和basecode的对应关系来看,似乎没有规律,
  可见,用户名与这两位十进制数之间有一定的联系,它们之间是多对多的关系。选择两位数字时,有三

种方案:
  1.可随机生成01-99之间的两位数,然后计算regcode2,然后检查LENGTH(regcode2),if LENGTH

(regcode2)<>8,再随机生成两位数。直到符合要求。
  不会出现死循环。但是注册码不具有再现性,好像也没必要哦。
  2.按某种优先级别来依次选择01-99间的数,根据用户名累加和出现的频率,确定最通用的basecode(可

能不止一个),然后确定出优先级比较靠前的二位数。
  这样的话,减少了查表时间,效率高。但哪个basecode使用频率高可能不太容易确定。
  3.或者根据用户名累加和来hash一下(但这个hash函数要选好...,似乎不太合适)

  综上比较,觉得随机生成那两位十进制数的方案比较好,考虑到长用户名的情况很少,如果随机生成的

两位数是0A,0C,14,2D,49,则重新生成随机数字。


case A,C,14,2D,49,这四种情况下的basecode为0,适用于用户名很长的情况,这个时候仅用户名累加和的

十进制串就可以达到八位数。
           
注册机伪码为:
    
begin KeyGen_Talisman(string userName)
      
      int LuserNmae;
      static LongInt basecode(99)={...这里初始化表格};
      LuserNmae= GetLength(userName);//用户名长度
      if LuserNmae==0 exitsub;//用户名为空,则退出程序
      LongInt sum=0;
      for(int i=0;i<LuserNmae;i++) //计算用户名的ascii累加和
           sum+=GetAsc(MID(userName,i,1));
     
     int index;//注册码的第十四十五组成的两位数
     
     do{
           if(HexToLongInt(sum)>99999999) then  index=RandomSelect(0A,0C,14,2D,49);//随机选择
           else 
               {do
                Index=GetRandom();0<tempIndex<100
                while( Index==0x0A OR Index==0x0C OR Index==0x14 OR Index==0x2D OR 

Index==0x49);
               }
     
     
    LongInt regcode1,temp1;
    string temp2;

    regcode1=basecode(index)+sum*0x367;
    temp1=Hexto10(regcode1);
    temp2=Int2Str(temp1);
    }while(GetLength(temp2)<>8);//regcode的长度不是8(>8)则回过头重新随机生成两位数

    regcode="xxxxx"+temp2+Int2Str(index)+"XXXXX";
    ShowRegCode(regcode,'X'可以为任意十进制个位数);

end

下面是整理出来的表:

 mov esi,0A86035                                    ;  Case 1 of switch 004AD1EE

  mov esi,0C9F1EE                                    ;  Case 2 of switch 004AD1EE

 mov esi,0A86054                                    ;  Case 3 of switch 004AD1EE

 mov esi,0DE3D45                                    ;  Case 4 of switch 004AD1EE

mov esi,0CB7895                                    ;  Case 5 of switch 004AD1EE

 mov esi,0AB6C1D                                    ;  Case 6 of switch 004AD1EE

   mov esi,99AE37                                     ;  Case 7 of switch 004AD1EE

   mov esi,11E7A4F                                    ;  Case 8 of switch 004AD1EE

  mov esi,0AB6C96                                    ;  Case 9 of switch 004AD1EE

 xor esi,esi                                        ;  Case A of switch 004AD1EE          

**********

   mov esi,0AB6D81                                    ;  Case B of switch 004AD1EE

  xor esi,esi                                        ;  Case C of switch 004AD1EE        

***********

   mov esi,0DC65E0                                    ;  Case D of switch 004AD1EE

  mov esi,0CB7897                                    ;  Case E of switch 004AD1EE

  mov esi,0BAADBB                                    ;  Case F of switch 004AD1EE

  mov esi,0ACF222                                    ;  Case 10 of switch 004AD1EE

  mov esi,1258163                                    ;  Case 11 of switch 004AD1EE

  mov esi,0AFEF5E                                    ;  Case 12 of switch 004AD1EE

  mov esi,12B921F                                    ;  Case 13 of switch 004AD1EE

 xor esi,esi                                        ;  Case 14 of switch 004AD1EE      

***********

 mov esi,0F11661                                    ;  Case 15 of switch 004AD1EE

      

  mov ebx,2A7B3DB                                    ;  Case 16 of switch 004B427E

   mov ebx,144045A                                    ;  Case 17 of switch 004B427E

  mov ebx,2F5559F                                    ;  Case 18 of switch 004B427E

  mov ebx,15F7B35                                    ;  Case 19 of switch 004B427E   

//revenge 组织的Nothing写了个注册机,
                                                                                   //我随机输

了一些用户名检测,发现他的两位数定为25

   mov ebx,1440171                                    ;  Case 1A of switch 004B427E

   mov ebx,144A805                                    ;  Case 1B of switch 004B427E

    mov ebx,4B228A5                                    ;  Case 1C of switch 004B427E

  mov ebx,1DAB615                                    ;  Case 1D of switch 004B427E

  mov ebx,17686DB                                    ;  Case 1E of switch 004B427E

   mov ebx,43EF481                                    ;  Case 1F of switch 004B427E

   mov ebx,43EF3D7                                    ;  Case 20 of switch 004B427E

  mov ebx,46FEEBF                                    ;  Case 21 of switch 004B427E

   mov ebx,43136A7                                    ;  Case 22 of switch 004B427E

   mov ebx,44E34BB                                    ;  Case 23 of switch 004B427E

     mov ebx,44003F2                                    ;  Case 24 of switch 004B427E

  mov ebx,4B90863                                    ;  Case 25 of switch 004B427E

   mov ebx,2EF44E3                                    ;  Case 26 of switch 004B427E

   mov ebx,3B59E3B                                    ;  Case 27 of switch 004B427E

  mov ebx,4468F56                                    ;  Case 28 of switch 004B427E

  mov ebx,483A27B                                    ;  Case 29 of switch 004B427E
 mov ebx,14403F5                                    ;  Case 2A of switch 004B427E
 



  mov ebx,1DB13F4                                    ;  Case 2B ('+') of switch 004BBCFE

 mov ebx,20F6A45                                    ;  Case 2C (',') of switch 004BBCFE

  xor ebx,ebx                                        ;  Case 2D ('-') of switch 004BBCFE      

***********

   mov ebx,1DC991D                                    ;  Case 2E ('.') of switch 004BBCFE

  mov ebx,1DD3E85                                    ;  Case 2F ('/') of switch 004BBCFE

   mov ebx,24FCC4D                                    ;  Case 30 ('0') of switch 004BBCFE

 mov ebx,1DC9996                                    ;  Case 31 ('1') of switch 004BBCFE

 mov ebx,3409745                                    ;  Case 32 ('2') of switch 004BBCFE

  mov ebx,2753101                                    ;  Case 33 ('3') of switch 004BBCFE

 mov ebx,2753057                                    ;  Case 34 ('4') of switch 004BBCFE

  mov ebx,2A62B3F                                    ;  Case 35 ('5') of switch 004BBCFE

  mov ebx,2953C17                                    ;  Case 36 ('6') of switch 004BBCFE

  mov ebx,284713B                                    ;  Case 37 ('7') of switch 004BBCFE

   mov ebx,276B5A2                                    ;  Case 38 ('8') of switch 004BBCFE

     mov ebx,30E6B85                                    ;  Case 39 ('9') of switch 004BBCFE

    mov ebx,2734E26                                    ;  Case 3A (':') of switch 004BBCFE

   mov ebx,3EB0BB5                                    ;  Case 3B (';') of switch 004BBCFE

   mov ebx,27CCE2E                                    ;  Case 3C ('<') of switch 004BBCFE

   mov ebx,4437C9E                                    ;  Case 3D ('=') of switch 004BBCFE

    mov ebx,43EF396                                    ;  Case 3E ('>') of switch 004BBCFE

 mov ebx,1FB1EF7                                    ;  Case 3F ('?') of switch 004BBCFE



 mov ebx,4F79617                                    ;  Case 40 ('@') of switch 004ACEEA

   mov ebx,32DD295                                    ;  Case 41 ('A') of switch 004ACEEA

   mov ebx,30DC5FF                                    ;  Case 42 ('B') of switch 004ACEEA

 mov ebx,574A99E                                    ;  Case 43 ('C') of switch 004ACEEA

  mov ebx,380FBA5                                    ;  Case 44 ('D') of switch 004ACEEA

 mov ebx,30DC696                                    ;  Case 45 ('E') of switch 004ACEEA

     mov ebx,3D13FBB                                    ;  Case 46 ('F') of switch 004ACEEA

   mov ebx,3A65E01                                    ;  Case 47 ('G') of switch 004ACEEA

mov ebx,3A65D57                                    ;  Case 48 ('H') of switch 004ACEEA

  xor ebx,ebx                                        ;  Case 49 ('I') of switch 004ACEEA     

***********

 mov ebx,3C66917                                    ;  Case 4A ('J') of switch 004ACEEA

  mov ebx,4BF114F                                    ;  Case 4B ('K') of switch 004ACEEA

 mov ebx,3A7E25C                                    ;  Case 4C ('L') of switch 004ACEEA

   mov ebx,1627639                                    ;  Case 4D ('M') of switch 004ACEEA

  mov ebx,2B0B6F0                                    ;  Case 4E ('N') of switch 004ACEEA

 mov ebx,54ABF25                                    ;  Case 4F ('O') of switch 004ACEEA

   mov ebx,39EB8EE                                    ;  Case 50 ('P') of switch 004ACEEA

  mov ebx,3EA82F8                                    ;  Case 51 ('Q') of switch 004ACEEA


    mov ebx,30D5245                                    ;  Case 52 ('R') of switch 004ACEEA

  mov ebx,32C4BF7                                    ;  Case 53 ('S') of switch 004ACEEA

 mov ebx,30DC7DA                                    ;  Case 54 ('T') of switch 004ACEEA

   

  mov ebx,4F79615                                    ;  Case 55 ('U') of switch 004AD06A 

===85

   mov ebx,4D7899D                                    ;  Case 56 ('V') of switch 004AD06A

 mov ebx,4D82F05                                    ;  Case 57 ('W') of switch 004AD06A
    mov ebx,4267877                                    ;  Case 58 ('X') of switch 004AD06A

  mov ebx,4D47CD6                                    ;  Case 59 ('Y') of switch 004AD06A

    mov ebx,5026CBB                                    ;  Case 5A ('Z') of switch 004AD06A

   mov ebx,4D78B01                                    ;  Case 5B ('[') of switch 004AD06A

   mov ebx,4D78A4D                                    ;  Case 5C ('') of switch 004AD06A

  mov ebx,508853F                                    ;  Case 5D (']') of switch 004AD06A

  mov ebx,4205E5B                                    ;  Case 5E ('^') of switch 004AD06A

   mov ebx,4E6CB3B                                    ;  Case 5F ('_') of switch 004AD06A

  mov ebx,571A622                                    ;  Case 60 ('`') of switch 004AD06A

   mov ebx,5E72823                                    ;  Case 61 ('a') of switch 004AD06A

  mov ebx,3AAE61E                                    ;  Case 62 ('b') of switch 004AD06A

  mov ebx,5F0461F                                    ;  Case 63 ('c') of switch 004AD06A,

  mov ebx,3ADF8D6                                    ;  Case 64 ('d') of switch 004AD06A

  mov ebx,176D3C5                                    ;  Case 65 ('e') of switch 004AD06A

 mov ebx,4D78AB9                                    ;  Case 66 ('f') of switch 004AD06A

   mov ebx,4F60F77                                    ;  Case 67 ('g') of switch 004AD06A

    mov ebx,4D78B5A                                    ;  Case 68 ('h') of switch 004AD06A

  mov ebx,50A5AC5                                    ;  Case 69 ('i') of switch 004AD06A

【Greetings】  看雪论坛,FCG论坛,DFCG论坛等
               
【完稿时间等】2005.04.30,下午05:06,天气:多云,广州