附件:下载

'在理解前两节知识的前提下,我们这里引入一个我自己写的LYSA算法和一个简单的CrackmeONEII作为分析的目标。
'作为除夕的礼物送给大家,小鸟一只让向各位献丑了!

'CrackmeONEII
'为了和前面衔接,CrackmeONEII是在Pcode(2-2)基础上写的
'下面是源代码,里面用的是一种查表法

***********Reference CrackmeONEII's Sound code

Private Sub Command1_Click()
  Dim name As String, code As String, strCode As String, T As String, F As String
  Dim i As Integer, j As Integer
  
  T = "CrackmeONEII+LYSA-II True code!"
  F = "CrackmeONEII+LYSA-II False code!"
  name = "": code = "": strCode = ""
  
  name = Text1.Text
  If name = "" Then
    Text1.Text = ""
    Exit Sub
    
  End If
  If Asc(name) < 0 Then
    Text1.Text = ""
    Exit Sub
    
  End If

  For i = 1 To Len(name)
    If Asc(Mid(name, i, 1)) >= 48 And Asc(Mid(name, i, 1)) <= 57 Then '0-9
      Select Case Mid(name, i, 1)
        Case "1"
          strCode = strCode & "da"
        Case "2"
          strCode = strCode & "fa"
        Case "3"
          strCode = strCode & "fc"
        Case "4"
          strCode = strCode & "dc"
        Case "5"
          strCode = strCode & "eb"
        Case "6"
          strCode = strCode & "fb"
        Case "7"
          strCode = strCode & "ea"
        Case "8"
          strCode = strCode & "ec"
        Case "9"
          strCode = strCode & "db"
        Case "0"
          strCode = strCode & "ab"
      End Select
      
    End If
    If Asc(Mid(name, i, 1)) >= 65 And Asc(Mid(name, i, 1)) <= 90 Then 'A-Z
      Select Case Mid(name, i, 1)
        Case "A"
          strCode = strCode & "01"
        Case "B"
          strCode = strCode & "62"
        Case "C"
          strCode = strCode & "81"
        Case "D"
          strCode = strCode & "84"
        Case "E"
          strCode = strCode & "63"
        Case "F"
          strCode = strCode & "71"
        Case "G"
          strCode = strCode & "72"
        Case "H"
          strCode = strCode & "91"
        Case "I"
          strCode = strCode & "74"
        Case "J"
          strCode = strCode & "93"
        Case "K"
          strCode = strCode & "03"
        Case "L"
          strCode = strCode & "82"
        Case "M"
          strCode = strCode & "61"
        Case "N"
          strCode = strCode & "02"
        Case "O"
          strCode = strCode & "65"
        Case "P"
          strCode = strCode & "8a"
        Case "Q"
          strCode = strCode & "92"
        Case "R"
          strCode = strCode & "75"
        Case "S"
          strCode = strCode & "05"
        Case "T"
          strCode = strCode & "95"
        Case "U"
          strCode = strCode & "83"
        Case "V"
          strCode = strCode & "64"
        Case "W"
          strCode = strCode & "85"
        Case "X"
          strCode = strCode & "04"
        Case "Y"
          strCode = strCode & "94"
        Case "Z"
          strCode = strCode & "73"
          
      End Select
      
    End If
    If Asc(Mid(name, i, 1)) >= 97 And Asc(Mid(name, i, 1)) <= 122 Then 'a-z
      Select Case Mid(name, i, 1)
        Case "a"
          strCode = strCode & "10"
        Case "b"
          strCode = strCode & "26"
        Case "c"
          strCode = strCode & "18"
        Case "d"
          strCode = strCode & "48"
        Case "e"
          strCode = strCode & "36"
        Case "f"
          strCode = strCode & "17"
        Case "g"
          strCode = strCode & "27"
        Case "h"
          strCode = strCode & "19"
        Case "i"
          strCode = strCode & "47"
        Case "j"
          strCode = strCode & "39"
        Case "k"
          strCode = strCode & "30"
        Case "l"
          strCode = strCode & "28"
        Case "m"
          strCode = strCode & "16"
        Case "n"
          strCode = strCode & "20"
        Case "o"
          strCode = strCode & "56"
        Case "p"
          strCode = strCode & "3f"
        Case "q"
          strCode = strCode & "29"
        Case "r"
          strCode = strCode & "57"
        Case "s"
          strCode = strCode & "50"
        Case "t"
          strCode = strCode & "59"
        Case "u"
          strCode = strCode & "38"
        Case "v"
          strCode = strCode & "46"
        Case "w"
          strCode = strCode & "58"
        Case "x"
          strCode = strCode & "40"
        Case "y"
          strCode = strCode & "94"
        Case "z"
          strCode = strCode & "37"
          
      End Select
      
    End If
    
    If Asc(Mid(name, i, 1)) >= 0 And Asc(Mid(name, i, 1)) <= 47 Then
      Text1.Text = ""
      Exit Sub
      
    End If
    
    If Asc(Mid(name, i, 1)) >= 58 And Asc(Mid(name, i, 1)) <= 64 Then
      Text1.Text = ""
      Exit Sub
      
    End If
    
    If Asc(Mid(name, i, 1)) >= 91 And Asc(Mid(name, i, 1)) <= 96 Then
      Text1.Text = ""
      Exit Sub
      
    End If
    
    If Asc(Mid(name, i, 1)) >= 123 And Asc(Mid(name, i, 1)) <= 255 Then
      Text1.Text = ""
      Exit Sub
      
    End If
    
  Next i
  'MsgBox strCode
  
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "f" Then code = code & "f"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "e" Then code = code & "e"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "d" Then code = code & "d"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "c" Then code = code & "c"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "b" Then code = code & "b"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "a" Then code = code & "a"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "9" Then code = code & "9"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "8" Then code = code & "8"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "7" Then code = code & "7"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "6" Then code = code & "6"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "5" Then code = code & "5"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "4" Then code = code & "4"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "3" Then code = code & "3"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "2" Then code = code & "2"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "1" Then code = code & "1"
  Next j
    For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "0" Then code = code & "0"
  Next j
  'MsgBox code
  
  If Text2.Text = code Then
    MsgBox T, vbOKOnly, "CrackmeONEII+LYSA-II"
  Else
    Text1.Text = ""
    Text2.Text = ""
    MsgBox F, vbOKOnly, "CrackmeONEII+LYSA-II"
  End If
  
  
End Sub

***********Reference VB P-code

[Command1.Click]

******Possible String Ref To->"CrackmeONEII+LYSA-II True code!"
                               |
:004027E4  1B0000              LitStr               ;Push ptr_0040219C // 装入字符串
:004027E7  436CFF              FStStrCopy           ;[LOCAL_0094]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop // 复制到内存0094
******Possible String Ref To->"CrackmeONEII+LYSA-II False code!"
                               |
:004027EA  1B0100              LitStr               ;Push ptr_004021E0 // 装入字符串
:004027ED  4368FF              FStStrCopy           ;[LOCAL_0098]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop // 复制到内存0098
******Possible String Ref To->""
                               |
:004027F0  1B0200              LitStr               ;Push ptr_00402228 // 装入字符串
:004027F3  4378FF              FStStrCopy           ;[LOCAL_0088]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop // 复制到内存0088
******Possible String Ref To->""
                               |
:004027F6  1B0200              LitStr               ;Push ptr_00402228 // 装入字符串
:004027F9  4374FF              FStStrCopy           ;[LOCAL_008C]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop // 复制到内存008C
******Possible String Ref To->""
                               |
:004027FC  1B0200              LitStr               ;Push ptr_00402228 // 装入字符串
:004027FF  4370FF              FStStrCopy           ;[LOCAL_0090]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop // 复制到内存0090

****************************************
  T = "CrackmeONEII+LYSA-II True code!"
  F = "CrackmeONEII+LYSA-II False code!"
  name = "": code = "": strCode = ""
****************************************

:00402802  045CFF              FLdRfVar             ;Push LOCAL_00A4 // 开辟内存空间
:00402805  21                  FLdPrThis            ;[SR]=[stack2]               \
:00402806  0F0403              VCallAd              ;Return the control index 03 / // 获得窗体句柄
:00402809  1960FF              FStAdFunc            ;// 取propget过程地址
:0040280C  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] // 加载过程
***********Reference To:[propget]TextBox.Text // propget,TextBox.Text的取过程
                              |
:0040280F  0DA0000300          VCallHresult         ;Call ptr_0040222C // 获得文本框中的内容
:00402814  3E5CFF              FLdZeroAd            ;Push DWORD [LOCAL_00A4]; [LOCAL_00A4]=0 // 将内容入栈
:00402817  3178FF              FStStr               ;SysFreeString [LOCAL_0088]; [LOCAL_0088]=Pop // 将字符释放到0088
:0040281A  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 // 调用后释放空间

****************************************
name = Text1.Text
****************************************

:0040281D  6C78FF              ILdRf                ;Push DWORD [LOCAL_0088] // 装载获取的文本内容,作为参数
******Possible String Ref To->""
                               |
:00402820  1B0200              LitStr               ;Push ptr_00402228 // NULL字符入栈
:00402823  FB30                EqStr                ;//字符串比较
:00402825  1C5A00              BranchF              ;If Pop=0 then ESI=0040283E // 不相等则跳(F->条件为假)0040283E
******Possible String Ref To->""
                               |
:00402828  1B0200              LitStr               ;Push ptr_00402228 // NULL字符入栈
:0040282B  21                  FLdPrThis            ;[SR]=[stack2]               \
:0040282C  0F0403              VCallAd              ;Return the control index 03 / // 获得窗体句柄
:0040282F  1960FF              FStAdFunc            ;// 取propput过程地址
:00402832  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] // 加载过程
***********Reference To:[propput]TextBox.Text // propput,TextBox.Text的赋值过程
                              |
:00402835  0DA4000300          VCallHresult         ;Call ptr_0040222C // 将文本框赋值为NULL字符
:0040283A  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0  // 调用后释放空间
:0040283D  13                  ExitProcHresult      ;// 退出过程

****************************************
  If name = "" Then
    Text1.Text = ""
    Exit Sub
    
  End If
****************************************

:0040283E  6C78FF              ILdRf                ;Push DWORD [LOCAL_0088] // 装载获取的文本内容,作为参数
**********Reference To->msvbvm60.rtcAnsiValueBstr //ASC()
                               |
:00402841  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX // ASC([LOCAL_0088])
:00402846  F400                LitI2_Byte           ;Push 00 // 0入栈
:00402848  D0                  LtI2                 ;// 整数的小于判断(less than)
:00402849  1C7E00              BranchF              ;If Pop=0 then ESI=00402862 // 不小于则跳00402862
******Possible String Ref To->""
                               |
:0040284C  1B0200              LitStr               ;Push ptr_00402228 // NULL字符入栈
:0040284F  21                  FLdPrThis            ;[SR]=[stack2]               \
:00402850  0F0403              VCallAd              ;Return the control index 03 / // 获得窗体句柄
:00402853  1960FF              FStAdFunc            ;// 取propput过程地址
:00402856  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] // 加载过程
***********Reference To:[propput]TextBox.Text // propput,TextBox.Text的赋值过程
                              |
:00402859  0DA4000300          VCallHresult         ;Call ptr_0040222C // 将文本框赋值为NULL字符
:0040285E  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 // 调用后释放空间
:00402861  13                  ExitProcHresult      ;// 退出过程

****************************************
  If Asc(name) < 0 Then
    Text1.Text = ""
    Exit Sub
    
  End If
****************************************

:00402862  F401                LitI2_Byte           ;Push 01 // 01入栈
:00402864  0466FF              FLdRfVar             ;Push LOCAL_009A // 加载变量i
:00402867  6C78FF              ILdRf                ;Push DWORD [LOCAL_0088] // 装载获取的文本内容,作为参数
:0040286A  4A                  FnLenStr             ;vbaLenBstr // 计算name长度
:0040286B  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:0040286C  FE6358FFA30A        ForI2                ;// FOR

****************************************
For i = 1 To Len(name)
****************************************

:00402872  2828FF0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:00402877  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | 变量i的值
:0040287A  E7                  CI4UI1               ;                       | // MID函数参数入栈
:0040287B  0478FF              FLdRfVar             ;Push LOCAL_0088        / 文本内容
:0040287E  4D48FF0840          CVarRef              ;// 创建临时变量                       
:00402883  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量       
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402886  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX // MID操作
:0040288B  0418FF              FLdRfVar             ;Push LOCAL_00E8 \
:0040288E  FDFE5CFF            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00402892  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX // ASC操作
:00402897  F430                LitI2_Byte           ;Push 30 // 48入栈
:00402899  DF                  GeI2                 ;// 大于等于比较操作
:0040289A  28E8FE0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:0040289F  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | 变量i的值
:004028A2  E7                  CI4UI1               ;                       | // MID函数参数入栈
:004028A3  0478FF              FLdRfVar             ;Push LOCAL_0088        / 文本内容
:004028A6  4D08FF0840          CVarRef              ;// 创建临时变量
:004028AB  04D8FE              FLdRfVar             ;Push LOCAL_0128 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004028AE  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX //MID操作
:004028B3  04D8FE              FLdRfVar             ;Push LOCAL_0128 \
:004028B6  FDFED4FE            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:004028BA  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX //ASC操作
:004028BF  F439                LitI2_Byte           ;Push 39 // 57入栈
:004028C1  D5                  LeI2                 ;// 小于等于比较操作
:004028C2  C4                  AndI4                ;// AND
:004028C3  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:004028CA  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants // 释放临时变量
:004028D5  1C2202              BranchF              ;If Pop=0 then ESI=00402A06 // 条件为假则跳00402A06

****************************************
If Asc(Mid(name, i, 1)) >= 48 And Asc(Mid(name, i, 1)) <= 57 Then '0-9
****************************************

:004028D8  2828FF0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:004028DD  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | 变量i的值
:004028E0  E7                  CI4UI1               ;                       | // MID函数参数入栈
:004028E1  0478FF              FLdRfVar             ;Push LOCAL_0088        / 文本内容
:004028E4  4D48FF0840          CVarRef              ;// 创建临时变量
:004028E9  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004028EC  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX // MID操作

****************************************
Mid(name, i, 1)
****************************************

:004028F1  0418FF              FLdRfVar             ;Push LOCAL_00E8 // Mid(name, i, 1)的内容入栈
:004028F4  FCF6C4FE            FStVar               ;
:004028F8  3528FF              FFree1Var            ;Free LOCAL_00D8
:004028FB  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量,用来保存"1" 
******Possible String Ref To->"1"
                               |
:004028FE  3A48FF0600          LitVarStr            ;PushVarString ptr_00402240 // "1"入栈
:00402903  5D                  HardType             ;
:00402904  FB33                EqVarBool            ;// 判断变量是否相等
:00402906  1C3201              BranchF              ;If Pop=0 then ESI=00402916 // 条件为假跳00402916
:00402909  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode
******Possible String Ref To->"da"
                               |
:0040290C  1B0700              LitStr               ;Push ptr_00402248 // "da"入栈
:0040290F  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "1"
          strCode = strCode & "da"
****************************************
:00402910  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:00402913  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:00402916  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量

******Possible String Ref To->"2"
                               |
:00402919  3A48FF0800          LitVarStr            ;PushVarString ptr_00402254 // "2"入栈
:0040291E  5D                  HardType             ;
:0040291F  FB33                EqVarBool            ;// 判断变量是否相等
:00402921  1C4D01              BranchF              ;If Pop=0 then ESI=00402931 // 条件为假跳00402931
:00402924  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode           
******Possible String Ref To->"fa"
                               |
:00402927  1B0900              LitStr               ;Push ptr_0040225C // "fa"入栈
:0040292A  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "2"
          strCode = strCode & "fa"
****************************************
:0040292B  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:0040292E  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:00402931  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"3"
                               |
:00402934  3A48FF0A00          LitVarStr            ;PushVarString ptr_00402268 // "3"入栈
:00402939  5D                  HardType             ;
:0040293A  FB33                EqVarBool            ;// 判断变量是否相等
:0040293C  1C6801              BranchF              ;If Pop=0 then ESI=0040294C // 条件为假跳0040294C
:0040293F  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode
******Possible String Ref To->"fc"
                               |
:00402942  1B0B00              LitStr               ;Push ptr_00402270 // "fc"入栈
:00402945  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "3"
          strCode = strCode & "fc"
****************************************
:00402946  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:00402949  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:0040294C  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"4"
                               |
:0040294F  3A48FF0C00          LitVarStr            ;PushVarString ptr_0040227C // "4"入栈
:00402954  5D                  HardType             ;
:00402955  FB33                EqVarBool            ;// 判断变量是否相等
:00402957  1C8301              BranchF              ;If Pop=0 then ESI=00402967 // 条件为假跳00402967
:0040295A  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode
******Possible String Ref To->"dc"
                               |
:0040295D  1B0D00              LitStr               ;Push ptr_00402284 // "dc"入栈
:00402960  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "4"
          strCode = strCode & "dc"
****************************************
:00402961  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:00402964  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:00402967  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"5"
                               |
:0040296A  3A48FF0E00          LitVarStr            ;PushVarString ptr_00402290 // "5"入栈
:0040296F  5D                  HardType             ;
:00402970  FB33                EqVarBool            ;// 判断变量是否相等
:00402972  1C9E01              BranchF              ;If Pop=0 then ESI=00402982 // 条件为假跳00402982
:00402975  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode
******Possible String Ref To->"eb"
                               |
:00402978  1B0F00              LitStr               ;Push ptr_00402298 // "eb"入栈
:0040297B  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "5"
          strCode = strCode & "eb"
****************************************
:0040297C  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:0040297F  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:00402982  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"6"
                               |
:00402985  3A48FF1000          LitVarStr            ;PushVarString ptr_004022A4 // "6"入栈
:0040298A  5D                  HardType             ;
:0040298B  FB33                EqVarBool            ;// 判断变量是否相等
:0040298D  1CB901              BranchF              ;If Pop=0 then ESI=0040299D // 条件为假跳0040299D
:00402990  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode 
******Possible String Ref To->"fb"
                               |
:00402993  1B1100              LitStr               ;Push ptr_004022AC  // "fb"入栈
:00402996  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "6"
          strCode = strCode & "fb"
****************************************
:00402997  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:0040299A  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:0040299D  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"7"
                               |
:004029A0  3A48FF1200          LitVarStr            ;PushVarString ptr_004022B8 // "7"入栈
:004029A5  5D                  HardType             ;
:004029A6  FB33                EqVarBool            ;// 判断变量是否相等
:004029A8  1CD401              BranchF              ;If Pop=0 then ESI=004029B8 // 条件为假跳004029B8
:004029AB  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode 
******Possible String Ref To->"ea"
                               |
:004029AE  1B1300              LitStr               ;Push ptr_004022C0 // "ea"入栈
:004029B1  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "7"
          strCode = strCode & "ea"
****************************************
:004029B2  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:004029B5  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:004029B8  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"8"
                               |
:004029BB  3A48FF1400          LitVarStr            ;PushVarString ptr_004022CC // "8"入栈
:004029C0  5D                  HardType             ;
:004029C1  FB33                EqVarBool            ;// 判断变量是否相等
:004029C3  1CEF01              BranchF              ;If Pop=0 then ESI=004029D3 // 条件为假跳004029D3
:004029C6  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode 
******Possible String Ref To->"ec"
                               |
:004029C9  1B1500              LitStr               ;Push ptr_004022D4 // "ec"入栈
:004029CC  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "8"
          strCode = strCode & "ec"
****************************************
:004029CD  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:004029D0  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:004029D3  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"9"
                               |
:004029D6  3A48FF1600          LitVarStr            ;PushVarString ptr_004022E0 // "9"入栈
:004029DB  5D                  HardType             ;
:004029DC  FB33                EqVarBool            ;// 判断变量是否相等
:004029DE  1C0A02              BranchF              ;If Pop=0 then ESI=004029EE // 条件为假跳004029EE
:004029E1  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode
******Possible String Ref To->"db"
                               |
:004029E4  1B1700              LitStr               ;Push ptr_004022E8 // "db"入栈
:004029E7  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "9"
          strCode = strCode & "db"
****************************************
:004029E8  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090
:004029EB  1E2202              Branch               ;ESI=00402A06 // 跳出CASE
:004029EE  04C4FE              FLdRfVar             ;Push LOCAL_013C // 加载临时变量
******Possible String Ref To->"0"
                               |
:004029F1  3A48FF1800          LitVarStr            ;PushVarString ptr_004022F4 // "0"入栈
:004029F6  5D                  HardType             ;
:004029F7  FB33                EqVarBool            ;// 判断变量是否相等
:004029F9  1C2202              BranchF              ;If Pop=0 then ESI=00402A06 // 条件为假跳00402A06,正好为CASE结束
:004029FC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090] // 加载strCode
******Possible String Ref To->"ab"
                               |
:004029FF  1B1900              LitStr               ;Push ptr_004022FC // "ab"入栈
:00402A02  2A                  ConcatStr            ;vbaStrCat // 连接字符串
****************************************
        Case "0"
          strCode = strCode & "da"
****************************************
:00402A03  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop // 将字符释放到0090

****************************************
End Select
****************************************

:00402A06  2828FF0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:00402A0B  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | 变量i的值
:00402A0E  E7                  CI4UI1               ;                       | // MID函数参数入栈
:00402A0F  0478FF              FLdRfVar             ;Push LOCAL_0088        / 文本内容
:00402A12  4D48FF0840          CVarRef              ;// 创建临时变量
:00402A17  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402A1A  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX // MID()操作
:00402A1F  0418FF              FLdRfVar             ;Push LOCAL_00E8 \
:00402A22  FDFE5CFF            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00402A26  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX // ASC()操作
:00402A2B  F441                LitI2_Byte           ;Push 41 // 65入栈
:00402A2D  DF                  GeI2                 ;// 大于等于比较操作
:00402A2E  28E8FE0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:00402A33  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | 变量i的值
:00402A36  E7                  CI4UI1               ;                       | // MID函数参数入栈
:00402A37  0478FF              FLdRfVar             ;Push LOCAL_0088        / 文本内容
:00402A3A  4D08FF0840          CVarRef              ;// 创建临时变量
:00402A3F  04D8FE              FLdRfVar             ;Push LOCAL_0128 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402A42  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX  // MID()操作
:00402A47  04D8FE              FLdRfVar             ;Push LOCAL_0128 \
:00402A4A  FDFED4FE            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00402A4E  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX // ASC()操作
:00402A53  F45A                LitI2_Byte           ;Push 5A // 90入栈
:00402A55  D5                  LeI2                 ;// 小于等于比较操作
:00402A56  C4                  AndI4                ;// AND
:00402A57  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:00402A5E  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants // 释放临时变量
:00402A69  1C6605              BranchF              ;If Pop=0 then ESI=00402D4A // 条件为假则跳00402D4A

****************************************
If Asc(Mid(name, i, 1)) >= 65 And Asc(Mid(name, i, 1)) <= 90 Then 'A-Z
****************************************

:00402A6C  2828FF0100          LitVarI2             ;PushVarInteger 0001    \
:00402A71  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | // MID函数参数入栈
:00402A74  E7                  CI4UI1               ;                       | 具体操作如上
:00402A75  0478FF              FLdRfVar             ;Push LOCAL_0088        /
:00402A78  4D48FF0840          CVarRef              ;// 创建临时变量
:00402A7D  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402A80  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX //MID
:00402A85  0418FF              FLdRfVar             ;Push LOCAL_00E8 // Mid(name, i, 1)的内容入栈
:00402A88  FCF6B4FE            FStVar               ;
:00402A8C  3528FF              FFree1Var            ;Free LOCAL_00D8
:00402A8F  04B4FE              FLdRfVar             ;Push LOCAL_014C // 加载临时变量,用来保存"A"


################################下面是判断字符是大写、小写字母时的操作和上面的数字是一样的!################################
____________________________________________________________________________________________________________________________

******Possible String Ref To->"A" 
                               |
:00402A92  3A48FF1A00          LitVarStr            ;PushVarString ptr_00402308
:00402A97  5D                  HardType             ;
:00402A98  FB33                EqVarBool            ;
:00402A9A  1CC602              BranchF              ;If Pop=0 then ESI=00402AAA
:00402A9D  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"01"
                               |
:00402AA0  1B1B00              LitStr               ;Push ptr_00402310
:00402AA3  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "A"
          strCode = strCode & "01"
****************************************
:00402AA4  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402AA7  1E6605              Branch               ;ESI=00402D4A
:00402AAA  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"B"
                               |
:00402AAD  3A48FF1C00          LitVarStr            ;PushVarString ptr_0040231C
:00402AB2  5D                  HardType             ;
:00402AB3  FB33                EqVarBool            ;
:00402AB5  1CE102              BranchF              ;If Pop=0 then ESI=00402AC5
:00402AB8  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"62"
                               |
:00402ABB  1B1D00              LitStr               ;Push ptr_00402324
:00402ABE  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "B"
          strCode = strCode & "62"
****************************************
:00402ABF  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402AC2  1E6605              Branch               ;ESI=00402D4A
:00402AC5  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"C"
                               |
:00402AC8  3A48FF1E00          LitVarStr            ;PushVarString ptr_00402330
:00402ACD  5D                  HardType             ;
:00402ACE  FB33                EqVarBool            ;
:00402AD0  1CFC02              BranchF              ;If Pop=0 then ESI=00402AE0
:00402AD3  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"81"
                               |
:00402AD6  1B1F00              LitStr               ;Push ptr_00402338
:00402AD9  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "C"
          strCode = strCode & "81"
****************************************
:00402ADA  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402ADD  1E6605              Branch               ;ESI=00402D4A
:00402AE0  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"D"
                               |
:00402AE3  3A48FF2000          LitVarStr            ;PushVarString ptr_00402344
:00402AE8  5D                  HardType             ;
:00402AE9  FB33                EqVarBool            ;
:00402AEB  1C1703              BranchF              ;If Pop=0 then ESI=00402AFB
:00402AEE  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"84"
                               |
:00402AF1  1B2100              LitStr               ;Push ptr_0040234C
:00402AF4  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "D"
          strCode = strCode & "84"
****************************************
:00402AF5  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402AF8  1E6605              Branch               ;ESI=00402D4A
:00402AFB  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"E"
                               |
:00402AFE  3A48FF2200          LitVarStr            ;PushVarString ptr_00402358
:00402B03  5D                  HardType             ;
:00402B04  FB33                EqVarBool            ;
:00402B06  1C3203              BranchF              ;If Pop=0 then ESI=00402B16
:00402B09  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"63"
                               |
:00402B0C  1B2300              LitStr               ;Push ptr_00402360
:00402B0F  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "E"
          strCode = strCode & "63"
****************************************
:00402B10  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402B13  1E6605              Branch               ;ESI=00402D4A
:00402B16  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"F"
                               |
:00402B19  3A48FF2400          LitVarStr            ;PushVarString ptr_0040236C
:00402B1E  5D                  HardType             ;
:00402B1F  FB33                EqVarBool            ;
:00402B21  1C4D03              BranchF              ;If Pop=0 then ESI=00402B31
:00402B24  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"71"
                               |
:00402B27  1B2500              LitStr               ;Push ptr_00402374
:00402B2A  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "F"
          strCode = strCode & "71"
****************************************
:00402B2B  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402B2E  1E6605              Branch               ;ESI=00402D4A
:00402B31  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"G"
                               |
:00402B34  3A48FF2600          LitVarStr            ;PushVarString ptr_00402380
:00402B39  5D                  HardType             ;
:00402B3A  FB33                EqVarBool            ;
:00402B3C  1C6803              BranchF              ;If Pop=0 then ESI=00402B4C
:00402B3F  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"72"
                               |
:00402B42  1B2700              LitStr               ;Push ptr_00402388
:00402B45  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "G"
          strCode = strCode & "72"
****************************************
:00402B46  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402B49  1E6605              Branch               ;ESI=00402D4A
:00402B4C  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"H"
                               |
:00402B4F  3A48FF2800          LitVarStr            ;PushVarString ptr_00402394
:00402B54  5D                  HardType             ;
:00402B55  FB33                EqVarBool            ;
:00402B57  1C8303              BranchF              ;If Pop=0 then ESI=00402B67
:00402B5A  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"91"
                               |
:00402B5D  1B2900              LitStr               ;Push ptr_0040239C
:00402B60  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "H"
          strCode = strCode & "91"
****************************************
:00402B61  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402B64  1E6605              Branch               ;ESI=00402D4A
:00402B67  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"I"
                               |
:00402B6A  3A48FF2A00          LitVarStr            ;PushVarString ptr_004023A8
:00402B6F  5D                  HardType             ;
:00402B70  FB33                EqVarBool            ;
:00402B72  1C9E03              BranchF              ;If Pop=0 then ESI=00402B82
:00402B75  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"74"
                               |
:00402B78  1B2B00              LitStr               ;Push ptr_004023B0
:00402B7B  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "I"
          strCode = strCode & "74"
****************************************
:00402B7C  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402B7F  1E6605              Branch               ;ESI=00402D4A
:00402B82  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"J"
                               |
:00402B85  3A48FF2C00          LitVarStr            ;PushVarString ptr_004023BC
:00402B8A  5D                  HardType             ;
:00402B8B  FB33                EqVarBool            ;
:00402B8D  1CB903              BranchF              ;If Pop=0 then ESI=00402B9D
:00402B90  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"93"
                               |
:00402B93  1B2D00              LitStr               ;Push ptr_004023C4
:00402B96  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "J"
          strCode = strCode & "93"
****************************************
:00402B97  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402B9A  1E6605              Branch               ;ESI=00402D4A
:00402B9D  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"K"
                               |
:00402BA0  3A48FF2E00          LitVarStr            ;PushVarString ptr_004023D0
:00402BA5  5D                  HardType             ;
:00402BA6  FB33                EqVarBool            ;
:00402BA8  1CD403              BranchF              ;If Pop=0 then ESI=00402BB8
:00402BAB  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"03"
                               |
:00402BAE  1B2F00              LitStr               ;Push ptr_004023D8
:00402BB1  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "K"
          strCode = strCode & "03"
****************************************
:00402BB2  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402BB5  1E6605              Branch               ;ESI=00402D4A
:00402BB8  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"L"
                               |
:00402BBB  3A48FF3000          LitVarStr            ;PushVarString ptr_004023E4
:00402BC0  5D                  HardType             ;
:00402BC1  FB33                EqVarBool            ;
:00402BC3  1CEF03              BranchF              ;If Pop=0 then ESI=00402BD3
:00402BC6  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"82"
                               |
:00402BC9  1B3100              LitStr               ;Push ptr_004023EC
:00402BCC  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "L"
          strCode = strCode & "82"
****************************************
:00402BCD  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402BD0  1E6605              Branch               ;ESI=00402D4A
:00402BD3  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"M"
                               |
:00402BD6  3A48FF3200          LitVarStr            ;PushVarString ptr_004023F8
:00402BDB  5D                  HardType             ;
:00402BDC  FB33                EqVarBool            ;
:00402BDE  1C0A04              BranchF              ;If Pop=0 then ESI=00402BEE
:00402BE1  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"61"
                               |
:00402BE4  1B3300              LitStr               ;Push ptr_00402400
:00402BE7  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "M"
          strCode = strCode & "61"
****************************************
:00402BE8  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402BEB  1E6605              Branch               ;ESI=00402D4A
:00402BEE  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"N"
                               |
:00402BF1  3A48FF3400          LitVarStr            ;PushVarString ptr_0040240C
:00402BF6  5D                  HardType             ;
:00402BF7  FB33                EqVarBool            ;
:00402BF9  1C2504              BranchF              ;If Pop=0 then ESI=00402C09
:00402BFC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"02"
                               |
:00402BFF  1B3500              LitStr               ;Push ptr_00402414
:00402C02  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "N"
          strCode = strCode & "02"
****************************************
:00402C03  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402C06  1E6605              Branch               ;ESI=00402D4A
:00402C09  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"O"
                               |
:00402C0C  3A48FF3600          LitVarStr            ;PushVarString ptr_00402420
:00402C11  5D                  HardType             ;
:00402C12  FB33                EqVarBool            ;
:00402C14  1C4004              BranchF              ;If Pop=0 then ESI=00402C24
:00402C17  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"65"
                               |
:00402C1A  1B3700              LitStr               ;Push ptr_00402428
:00402C1D  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "O"
          strCode = strCode & "65"
****************************************
:00402C1E  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402C21  1E6605              Branch               ;ESI=00402D4A
:00402C24  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"P"
                               |
:00402C27  3A48FF3800          LitVarStr            ;PushVarString ptr_00402434
:00402C2C  5D                  HardType             ;
:00402C2D  FB33                EqVarBool            ;
:00402C2F  1C5B04              BranchF              ;If Pop=0 then ESI=00402C3F
:00402C32  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"8a"
                               |
:00402C35  1B3900              LitStr               ;Push ptr_0040243C
:00402C38  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "P"
          strCode = strCode & "8a"
****************************************
:00402C39  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402C3C  1E6605              Branch               ;ESI=00402D4A
:00402C3F  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"Q"
                               |
:00402C42  3A48FF3A00          LitVarStr            ;PushVarString ptr_00402448
:00402C47  5D                  HardType             ;
:00402C48  FB33                EqVarBool            ;
:00402C4A  1C7604              BranchF              ;If Pop=0 then ESI=00402C5A
:00402C4D  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"92"
                               |
:00402C50  1B3B00              LitStr               ;Push ptr_00402450
:00402C53  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "Q"
          strCode = strCode & "92"
****************************************
:00402C54  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402C57  1E6605              Branch               ;ESI=00402D4A
:00402C5A  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"R"
                               |
:00402C5D  3A48FF3C00          LitVarStr            ;PushVarString ptr_0040245C
:00402C62  5D                  HardType             ;
:00402C63  FB33                EqVarBool            ;
:00402C65  1C9104              BranchF              ;If Pop=0 then ESI=00402C75
:00402C68  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"75"
                               |
:00402C6B  1B3D00              LitStr               ;Push ptr_00402464
:00402C6E  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "R"
          strCode = strCode & "75"
****************************************
:00402C6F  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402C72  1E6605              Branch               ;ESI=00402D4A
:00402C75  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"S"
                               |
:00402C78  3A48FF3E00          LitVarStr            ;PushVarString ptr_00402470
:00402C7D  5D                  HardType             ;
:00402C7E  FB33                EqVarBool            ;
:00402C80  1CAC04              BranchF              ;If Pop=0 then ESI=00402C90
:00402C83  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"05"
                               |
:00402C86  1B3F00              LitStr               ;Push ptr_00402478
:00402C89  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "S"
          strCode = strCode & "05"
****************************************
:00402C8A  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402C8D  1E6605              Branch               ;ESI=00402D4A
:00402C90  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"T"
                               |
:00402C93  3A48FF4000          LitVarStr            ;PushVarString ptr_00402484
:00402C98  5D                  HardType             ;
:00402C99  FB33                EqVarBool            ;
:00402C9B  1CC704              BranchF              ;If Pop=0 then ESI=00402CAB
:00402C9E  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"95"
                               |
:00402CA1  1B4100              LitStr               ;Push ptr_0040248C
:00402CA4  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "T"
          strCode = strCode & "95"
****************************************
:00402CA5  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402CA8  1E6605              Branch               ;ESI=00402D4A
:00402CAB  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"U"
                               |
:00402CAE  3A48FF4200          LitVarStr            ;PushVarString ptr_00402498
:00402CB3  5D                  HardType             ;
:00402CB4  FB33                EqVarBool            ;
:00402CB6  1CE204              BranchF              ;If Pop=0 then ESI=00402CC6
:00402CB9  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"83"
                               |
:00402CBC  1B4300              LitStr               ;Push ptr_004024A0
:00402CBF  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "U"
          strCode = strCode & "83"
****************************************
:00402CC0  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402CC3  1E6605              Branch               ;ESI=00402D4A
:00402CC6  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"V"
                               |
:00402CC9  3A48FF4400          LitVarStr            ;PushVarString ptr_004024AC
:00402CCE  5D                  HardType             ;
:00402CCF  FB33                EqVarBool            ;
:00402CD1  1CFD04              BranchF              ;If Pop=0 then ESI=00402CE1
:00402CD4  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"64"
                               |
:00402CD7  1B4500              LitStr               ;Push ptr_004024B4
:00402CDA  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "V"
          strCode = strCode & "64"
****************************************
:00402CDB  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402CDE  1E6605              Branch               ;ESI=00402D4A
:00402CE1  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"W"
                               |
:00402CE4  3A48FF4600          LitVarStr            ;PushVarString ptr_004024C0
:00402CE9  5D                  HardType             ;
:00402CEA  FB33                EqVarBool            ;
:00402CEC  1C1805              BranchF              ;If Pop=0 then ESI=00402CFC
:00402CEF  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"85"
                               |
:00402CF2  1B4700              LitStr               ;Push ptr_004024C8
:00402CF5  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "W"
          strCode = strCode & "85"
****************************************
:00402CF6  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402CF9  1E6605              Branch               ;ESI=00402D4A
:00402CFC  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"X"
                               |
:00402CFF  3A48FF4800          LitVarStr            ;PushVarString ptr_004024D4
:00402D04  5D                  HardType             ;
:00402D05  FB33                EqVarBool            ;
:00402D07  1C3305              BranchF              ;If Pop=0 then ESI=00402D17
:00402D0A  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"04"
                               |
:00402D0D  1B4900              LitStr               ;Push ptr_004024DC
:00402D10  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "X"
          strCode = strCode & "04"
****************************************
:00402D11  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402D14  1E6605              Branch               ;ESI=00402D4A
:00402D17  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"Y"
                               |
:00402D1A  3A48FF4A00          LitVarStr            ;PushVarString ptr_004024E8
:00402D1F  5D                  HardType             ;
:00402D20  FB33                EqVarBool            ;
:00402D22  1C4E05              BranchF              ;If Pop=0 then ESI=00402D32
:00402D25  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"94"
                               |
:00402D28  1B4B00              LitStr               ;Push ptr_004024F0
:00402D2B  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "Y"
          strCode = strCode & "94"
****************************************
:00402D2C  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402D2F  1E6605              Branch               ;ESI=00402D4A
:00402D32  04B4FE              FLdRfVar             ;Push LOCAL_014C
******Possible String Ref To->"Z"
                               |
:00402D35  3A48FF4C00          LitVarStr            ;PushVarString ptr_004024FC
:00402D3A  5D                  HardType             ;
:00402D3B  FB33                EqVarBool            ;
:00402D3D  1C6605              BranchF              ;If Pop=0 then ESI=00402D4A
:00402D40  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"73"
                               |
:00402D43  1B4D00              LitStr               ;Push ptr_00402504
:00402D46  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "Z"
          strCode = strCode & "73"
****************************************
:00402D47  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
****************************************
小写字符处理
****************************************
:00402D4A  2828FF0100          LitVarI2             ;PushVarInteger 0001
:00402D4F  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:00402D52  E7                  CI4UI1               ;
:00402D53  0478FF              FLdRfVar             ;Push LOCAL_0088
:00402D56  4D48FF0840          CVarRef              ;
:00402D5B  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402D5E  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00402D63  0418FF              FLdRfVar             ;Push LOCAL_00E8
:00402D66  FDFE5CFF            CStrVarVal           ;
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00402D6A  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX
:00402D6F  F461                LitI2_Byte           ;Push 61
:00402D71  DF                  GeI2                 ;
:00402D72  28E8FE0100          LitVarI2             ;PushVarInteger 0001
:00402D77  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:00402D7A  E7                  CI4UI1               ;
:00402D7B  0478FF              FLdRfVar             ;Push LOCAL_0088
:00402D7E  4D08FF0840          CVarRef              ;
:00402D83  04D8FE              FLdRfVar             ;Push LOCAL_0128
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402D86  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00402D8B  04D8FE              FLdRfVar             ;Push LOCAL_0128
:00402D8E  FDFED4FE            CStrVarVal           ;
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00402D92  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX
:00402D97  F47A                LitI2_Byte           ;Push 7A
:00402D99  D5                  LeI2                 ;
:00402D9A  C4                  AndI4                ;
:00402D9B  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:00402DA2  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants
:00402DAD  1CAA08              BranchF              ;If Pop=0 then ESI=0040308E
:00402DB0  2828FF0100          LitVarI2             ;PushVarInteger 0001
:00402DB5  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:00402DB8  E7                  CI4UI1               ;
:00402DB9  0478FF              FLdRfVar             ;Push LOCAL_0088
:00402DBC  4D48FF0840          CVarRef              ;
:00402DC1  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00402DC4  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00402DC9  0418FF              FLdRfVar             ;Push LOCAL_00E8
:00402DCC  FCF6A4FE            FStVar               ;
:00402DD0  3528FF              FFree1Var            ;Free LOCAL_00D8
:00402DD3  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"a"
                               |
:00402DD6  3A48FF4E00          LitVarStr            ;PushVarString ptr_00402510
:00402DDB  5D                  HardType             ;
:00402DDC  FB33                EqVarBool            ;
:00402DDE  1C0A06              BranchF              ;If Pop=0 then ESI=00402DEE
:00402DE1  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"10"
                               |
:00402DE4  1B4F00              LitStr               ;Push ptr_00402518
:00402DE7  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "a"
          strCode = strCode & "10"
****************************************
:00402DE8  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402DEB  1EAA08              Branch               ;ESI=0040308E
:00402DEE  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"b"
                               |
:00402DF1  3A48FF5000          LitVarStr            ;PushVarString ptr_00402524
:00402DF6  5D                  HardType             ;
:00402DF7  FB33                EqVarBool            ;
:00402DF9  1C2506              BranchF              ;If Pop=0 then ESI=00402E09
:00402DFC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"26"
                               |
:00402DFF  1B5100              LitStr               ;Push ptr_0040252C
:00402E02  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "b"
          strCode = strCode & "26"
****************************************
:00402E03  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402E06  1EAA08              Branch               ;ESI=0040308E
:00402E09  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"c"
                               |
:00402E0C  3A48FF5200          LitVarStr            ;PushVarString ptr_00402538
:00402E11  5D                  HardType             ;
:00402E12  FB33                EqVarBool            ;
:00402E14  1C4006              BranchF              ;If Pop=0 then ESI=00402E24
:00402E17  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"18"
                               |
:00402E1A  1B5300              LitStr               ;Push ptr_00402540
:00402E1D  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "c"
          strCode = strCode & "18"
****************************************
:00402E1E  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402E21  1EAA08              Branch               ;ESI=0040308E
:00402E24  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"d"
                               |
:00402E27  3A48FF5400          LitVarStr            ;PushVarString ptr_0040254C
:00402E2C  5D                  HardType             ;
:00402E2D  FB33                EqVarBool            ;
:00402E2F  1C5B06              BranchF              ;If Pop=0 then ESI=00402E3F
:00402E32  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"48"
                               |
:00402E35  1B5500              LitStr               ;Push ptr_00402554
:00402E38  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "d"
          strCode = strCode & "48"
****************************************
:00402E39  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402E3C  1EAA08              Branch               ;ESI=0040308E
:00402E3F  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"e"
                               |
:00402E42  3A48FF5600          LitVarStr            ;PushVarString ptr_00402560
:00402E47  5D                  HardType             ;
:00402E48  FB33                EqVarBool            ;
:00402E4A  1C7606              BranchF              ;If Pop=0 then ESI=00402E5A
:00402E4D  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"36"
                               |
:00402E50  1B5700              LitStr               ;Push ptr_00402568
:00402E53  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "e"
          strCode = strCode & "36"
****************************************
:00402E54  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402E57  1EAA08              Branch               ;ESI=0040308E
:00402E5A  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"f"
                               |
:00402E5D  3A48FF5800          LitVarStr            ;PushVarString ptr_00402574
:00402E62  5D                  HardType             ;
:00402E63  FB33                EqVarBool            ;
:00402E65  1C9106              BranchF              ;If Pop=0 then ESI=00402E75
:00402E68  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"17"
                               |
:00402E6B  1B5900              LitStr               ;Push ptr_0040257C
:00402E6E  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "f"
          strCode = strCode & "17"
****************************************
:00402E6F  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402E72  1EAA08              Branch               ;ESI=0040308E
:00402E75  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"g"
                               |
:00402E78  3A48FF5A00          LitVarStr            ;PushVarString ptr_00402588
:00402E7D  5D                  HardType             ;
:00402E7E  FB33                EqVarBool            ;
:00402E80  1CAC06              BranchF              ;If Pop=0 then ESI=00402E90
:00402E83  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"27"
                               |
:00402E86  1B5B00              LitStr               ;Push ptr_00402590
:00402E89  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "g"
          strCode = strCode & "27"
****************************************
:00402E8A  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402E8D  1EAA08              Branch               ;ESI=0040308E
:00402E90  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"h"
                               |
:00402E93  3A48FF5C00          LitVarStr            ;PushVarString ptr_0040259C
:00402E98  5D                  HardType             ;
:00402E99  FB33                EqVarBool            ;
:00402E9B  1CC706              BranchF              ;If Pop=0 then ESI=00402EAB
:00402E9E  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"19"
                               |
:00402EA1  1B5D00              LitStr               ;Push ptr_004025A4
:00402EA4  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "h"
          strCode = strCode & "19"
****************************************
:00402EA5  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402EA8  1EAA08              Branch               ;ESI=0040308E
:00402EAB  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"i"
                               |
:00402EAE  3A48FF5E00          LitVarStr            ;PushVarString ptr_004025B0
:00402EB3  5D                  HardType             ;
:00402EB4  FB33                EqVarBool            ;
:00402EB6  1CE206              BranchF              ;If Pop=0 then ESI=00402EC6
:00402EB9  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"47"
                               |
:00402EBC  1B5F00              LitStr               ;Push ptr_004025B8
:00402EBF  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "i"
          strCode = strCode & "47"
****************************************
:00402EC0  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402EC3  1EAA08              Branch               ;ESI=0040308E
:00402EC6  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"j"
                               |
:00402EC9  3A48FF6000          LitVarStr            ;PushVarString ptr_004025C4
:00402ECE  5D                  HardType             ;
:00402ECF  FB33                EqVarBool            ;
:00402ED1  1CFD06              BranchF              ;If Pop=0 then ESI=00402EE1
:00402ED4  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"39"
                               |
:00402ED7  1B6100              LitStr               ;Push ptr_004025CC
:00402EDA  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "j"
          strCode = strCode & "39"
****************************************
:00402EDB  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402EDE  1EAA08              Branch               ;ESI=0040308E
:00402EE1  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"k"
                               |
:00402EE4  3A48FF6200          LitVarStr            ;PushVarString ptr_004025D8
:00402EE9  5D                  HardType             ;
:00402EEA  FB33                EqVarBool            ;
:00402EEC  1C1807              BranchF              ;If Pop=0 then ESI=00402EFC
:00402EEF  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"30"
                               |
:00402EF2  1B6300              LitStr               ;Push ptr_004025E0
:00402EF5  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "k"
          strCode = strCode & "30"
****************************************
:00402EF6  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402EF9  1EAA08              Branch               ;ESI=0040308E
:00402EFC  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"l"
                               |
:00402EFF  3A48FF6400          LitVarStr            ;PushVarString ptr_004025EC
:00402F04  5D                  HardType             ;
:00402F05  FB33                EqVarBool            ;
:00402F07  1C3307              BranchF              ;If Pop=0 then ESI=00402F17
:00402F0A  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"28"
                               |
:00402F0D  1B6500              LitStr               ;Push ptr_004025F4
:00402F10  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "l"
          strCode = strCode & "28"
****************************************
:00402F11  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402F14  1EAA08              Branch               ;ESI=0040308E
:00402F17  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"m"
                               |
:00402F1A  3A48FF6600          LitVarStr            ;PushVarString ptr_00402600
:00402F1F  5D                  HardType             ;
:00402F20  FB33                EqVarBool            ;
:00402F22  1C4E07              BranchF              ;If Pop=0 then ESI=00402F32
:00402F25  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"16"
                               |
:00402F28  1B6700              LitStr               ;Push ptr_00402608
:00402F2B  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "m"
          strCode = strCode & "16"
****************************************
:00402F2C  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402F2F  1EAA08              Branch               ;ESI=0040308E
:00402F32  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"n"
                               |
:00402F35  3A48FF6800          LitVarStr            ;PushVarString ptr_00402614
:00402F3A  5D                  HardType             ;
:00402F3B  FB33                EqVarBool            ;
:00402F3D  1C6907              BranchF              ;If Pop=0 then ESI=00402F4D
:00402F40  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"20"
                               |
:00402F43  1B6900              LitStr               ;Push ptr_0040261C
:00402F46  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "n"
          strCode = strCode & "20"
****************************************
:00402F47  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402F4A  1EAA08              Branch               ;ESI=0040308E
:00402F4D  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"o"
                               |
:00402F50  3A48FF6A00          LitVarStr            ;PushVarString ptr_00402628
:00402F55  5D                  HardType             ;
:00402F56  FB33                EqVarBool            ;
:00402F58  1C8407              BranchF              ;If Pop=0 then ESI=00402F68
:00402F5B  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"56"
                               |
:00402F5E  1B6B00              LitStr               ;Push ptr_00402630
:00402F61  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "o"
          strCode = strCode & "56"
****************************************
:00402F62  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402F65  1EAA08              Branch               ;ESI=0040308E
:00402F68  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"p"
                               |
:00402F6B  3A48FF6C00          LitVarStr            ;PushVarString ptr_0040263C
:00402F70  5D                  HardType             ;
:00402F71  FB33                EqVarBool            ;
:00402F73  1C9F07              BranchF              ;If Pop=0 then ESI=00402F83
:00402F76  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"3f"
                               |
:00402F79  1B6D00              LitStr               ;Push ptr_00402644
:00402F7C  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "p"
          strCode = strCode & "3f"
****************************************
:00402F7D  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402F80  1EAA08              Branch               ;ESI=0040308E
:00402F83  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"q"
                               |
:00402F86  3A48FF6E00          LitVarStr            ;PushVarString ptr_00402650
:00402F8B  5D                  HardType             ;
:00402F8C  FB33                EqVarBool            ;
:00402F8E  1CBA07              BranchF              ;If Pop=0 then ESI=00402F9E
:00402F91  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"29"
                               |
:00402F94  1B6F00              LitStr               ;Push ptr_00402658
:00402F97  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "q"
          strCode = strCode & "29"
****************************************
:00402F98  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402F9B  1EAA08              Branch               ;ESI=0040308E
:00402F9E  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"r"
                               |
:00402FA1  3A48FF7000          LitVarStr            ;PushVarString ptr_00402664
:00402FA6  5D                  HardType             ;
:00402FA7  FB33                EqVarBool            ;
:00402FA9  1CD507              BranchF              ;If Pop=0 then ESI=00402FB9
:00402FAC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"57"
                               |
:00402FAF  1B7100              LitStr               ;Push ptr_0040266C
:00402FB2  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "r"
          strCode = strCode & "57"
****************************************
:00402FB3  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402FB6  1EAA08              Branch               ;ESI=0040308E
:00402FB9  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"s"
                               |
:00402FBC  3A48FF7200          LitVarStr            ;PushVarString ptr_00402678
:00402FC1  5D                  HardType             ;
:00402FC2  FB33                EqVarBool            ;
:00402FC4  1CF007              BranchF              ;If Pop=0 then ESI=00402FD4
:00402FC7  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"50"
                               |
:00402FCA  1B7300              LitStr               ;Push ptr_00402680
:00402FCD  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "s"
          strCode = strCode & "50"
****************************************
:00402FCE  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402FD1  1EAA08              Branch               ;ESI=0040308E
:00402FD4  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"t"
                               |
:00402FD7  3A48FF7400          LitVarStr            ;PushVarString ptr_0040268C
:00402FDC  5D                  HardType             ;
:00402FDD  FB33                EqVarBool            ;
:00402FDF  1C0B08              BranchF              ;If Pop=0 then ESI=00402FEF
:00402FE2  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"59"
                               |
:00402FE5  1B7500              LitStr               ;Push ptr_00402694
:00402FE8  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "t"
          strCode = strCode & "59"
****************************************
:00402FE9  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00402FEC  1EAA08              Branch               ;ESI=0040308E
:00402FEF  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"u"
                               |
:00402FF2  3A48FF7600          LitVarStr            ;PushVarString ptr_004026A0
:00402FF7  5D                  HardType             ;
:00402FF8  FB33                EqVarBool            ;
:00402FFA  1C2608              BranchF              ;If Pop=0 then ESI=0040300A
:00402FFD  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"38"
                               |
:00403000  1B7700              LitStr               ;Push ptr_004026A8
:00403003  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "u"
          strCode = strCode & "38"
****************************************
:00403004  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00403007  1EAA08              Branch               ;ESI=0040308E
:0040300A  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"v"
                               |
:0040300D  3A48FF7800          LitVarStr            ;PushVarString ptr_004026B4
:00403012  5D                  HardType             ;
:00403013  FB33                EqVarBool            ;
:00403015  1C4108              BranchF              ;If Pop=0 then ESI=00403025
:00403018  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"46"
                               |
:0040301B  1B7900              LitStr               ;Push ptr_004026BC
:0040301E  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "v"
          strCode = strCode & "46"
****************************************
:0040301F  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00403022  1EAA08              Branch               ;ESI=0040308E
:00403025  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"w"
                               |
:00403028  3A48FF7A00          LitVarStr            ;PushVarString ptr_004026C8
:0040302D  5D                  HardType             ;
:0040302E  FB33                EqVarBool            ;
:00403030  1C5C08              BranchF              ;If Pop=0 then ESI=00403040
:00403033  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"58"
                               |
:00403036  1B7B00              LitStr               ;Push ptr_004026D0
:00403039  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "w"
          strCode = strCode & "58"
****************************************
:0040303A  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:0040303D  1EAA08              Branch               ;ESI=0040308E
:00403040  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"x"
                               |
:00403043  3A48FF7C00          LitVarStr            ;PushVarString ptr_004026DC
:00403048  5D                  HardType             ;
:00403049  FB33                EqVarBool            ;
:0040304B  1C7708              BranchF              ;If Pop=0 then ESI=0040305B
:0040304E  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"40"
                               |
:00403051  1B7D00              LitStr               ;Push ptr_004026E4
:00403054  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "x"
          strCode = strCode & "40"
****************************************
:00403055  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00403058  1EAA08              Branch               ;ESI=0040308E
:0040305B  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"y"
                               |
:0040305E  3A48FF7E00          LitVarStr            ;PushVarString ptr_004026F0
:00403063  5D                  HardType             ;
:00403064  FB33                EqVarBool            ;
:00403066  1C9208              BranchF              ;If Pop=0 then ESI=00403076
:00403069  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"94"
                               |
:0040306C  1B4B00              LitStr               ;Push ptr_004024F0
:0040306F  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "y"
          strCode = strCode & "94"
****************************************
:00403070  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop
:00403073  1EAA08              Branch               ;ESI=0040308E
:00403076  04A4FE              FLdRfVar             ;Push LOCAL_015C
******Possible String Ref To->"z"
                               |
:00403079  3A48FF7F00          LitVarStr            ;PushVarString ptr_004026F8
:0040307E  5D                  HardType             ;
:0040307F  FB33                EqVarBool            ;
:00403081  1CAA08              BranchF              ;If Pop=0 then ESI=0040308E
:00403084  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
******Possible String Ref To->"37"
                               |
:00403087  1B8000              LitStr               ;Push ptr_00402700
:0040308A  2A                  ConcatStr            ;vbaStrCat
****************************************
        Case "z"
          strCode = strCode & "37"
****************************************
:0040308B  3170FF              FStStr               ;SysFreeString [LOCAL_0090]; [LOCAL_0090]=Pop

##################################################################################################################
// 以上操作就是用NAME长度来循环,分别取每一个NAME字符,判断是数字或大小写字符,查表替换。
__________________________________________________________________________________________________________________

:0040308E  2828FF0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:00403093  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | 变量i的值
:00403096  E7                  CI4UI1               ;                       | // MID函数参数入栈
:00403097  0478FF              FLdRfVar             ;Push LOCAL_0088        / 文本内容
:0040309A  4D48FF0840          CVarRef              ;// 创建临时变量
:0040309F  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004030A2  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX // MID()
:004030A7  0418FF              FLdRfVar             ;Push LOCAL_00E8 \
:004030AA  FDFE5CFF            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:004030AE  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX // ASC()
:004030B3  F400                LitI2_Byte           ;Push 00 // 00入栈
:004030B5  DF                  GeI2                 ;// 大于等于比较操作
:004030B6  28E8FE0100          LitVarI2             ;PushVarInteger 0001    \
:004030BB  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | // MID函数参数入栈
:004030BE  E7                  CI4UI1               ;                       |
:004030BF  0478FF              FLdRfVar             ;Push LOCAL_0088        /
:004030C2  4D08FF0840          CVarRef              ;// 创建临时变量
:004030C7  04D8FE              FLdRfVar             ;Push LOCAL_0128 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004030CA  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX //MID()
:004030CF  04D8FE              FLdRfVar             ;Push LOCAL_0128 \
:004030D2  FDFED4FE            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:004030D6  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX //ASC()
:004030DB  F42F                LitI2_Byte           ;Push 2F // 47入栈
:004030DD  D5                  LeI2                 ;// 小于等于比较操作
:004030DE  C4                  AndI4                ;// AND
:004030DF  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:004030E6  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants// 释放临时变量
:004030F1  1C2609              BranchF              ;If Pop=0 then ESI=0040310A //条件为假则跳0040310A
******Possible String Ref To->""
                               |
:004030F4  1B0200              LitStr               ;Push ptr_00402228 // NULL字符入栈
:004030F7  21                  FLdPrThis            ;[SR]=[stack2]               \
:004030F8  0F0403              VCallAd              ;Return the control index 03 / // 获得窗体句柄
:004030FB  1960FF              FStAdFunc            ;// 取propput过程地址
:004030FE  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] //加载过程
***********Reference To:[propput]TextBox.Text // propput,TextBox.Text的赋值过程
                              |
:00403101  0DA4000300          VCallHresult         ;Call ptr_0040222C // 给TextBox.Text赋值
:00403106  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 // 释放加载过程空间
:00403109  13                  ExitProcHresult      ;// 退出过程

****************************************
    If Asc(Mid(name, i, 1)) >= 0 And Asc(Mid(name, i, 1)) <= 47 Then
      Text1.Text = ""
      Exit Sub
      
    End If
****************************************

:0040310A  2828FF0100          LitVarI2             ;PushVarInteger 0001    \
:0040310F  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | // MID函数参数入栈
:00403112  E7                  CI4UI1               ;                       |
:00403113  0478FF              FLdRfVar             ;Push LOCAL_0088        /
:00403116  4D48FF0840          CVarRef              ;// 创建临时变量
:0040311B  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040311E  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX // MID()
:00403123  0418FF              FLdRfVar             ;Push LOCAL_00E8 \
:00403126  FDFE5CFF            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:0040312A  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX // ASC()
:0040312F  F43A                LitI2_Byte           ;Push 3A // 58入栈
:00403131  DF                  GeI2                 ;// 大于等于比较操作
:00403132  28E8FE0100          LitVarI2             ;PushVarInteger 0001    \
:00403137  6B66FF              FLdI2                ;Push WORD [LOCAL_009A] | // MID函数参数入栈
:0040313A  E7                  CI4UI1               ;                       |
:0040313B  0478FF              FLdRfVar             ;Push LOCAL_0088        /
:0040313E  4D08FF0840          CVarRef              ;// 创建临时变量
:00403143  04D8FE              FLdRfVar             ;Push LOCAL_0128 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00403146  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX //MID()
:0040314B  04D8FE              FLdRfVar             ;Push LOCAL_0128 \
:0040314E  FDFED4FE            CStrVarVal           ;                / // ASC函数参数入栈
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00403152  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX //ASC()
:00403157  F440                LitI2_Byte           ;Push 40 // 64入栈
:00403159  D5                  LeI2                 ;// 小于等于比较操作
:0040315A  C4                  AndI4                ;// AND
:0040315B  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:00403162  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants // 释放临时变量
:0040316D  1CA209              BranchF              ;If Pop=0 then ESI=00403186 //条件为假则跳00403186
******Possible String Ref To->""
                               |
:00403170  1B0200              LitStr               ;Push ptr_00402228 // NULL字符入栈
:00403173  21                  FLdPrThis            ;[SR]=[stack2]               \
:00403174  0F0403              VCallAd              ;Return the control index 03 / // 获得窗体句柄
:00403177  1960FF              FStAdFunc            ;// 取propput过程地址
:0040317A  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] //加载过程
***********Reference To:[propput]TextBox.Text // propput,TextBox.Text的赋值过程
                              |
:0040317D  0DA4000300          VCallHresult         ;Call ptr_0040222C // 给TextBox.Text赋值
:00403182  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 // 释放加载过程空间
:00403185  13                  ExitProcHresult      ;// 退出过程
****************************************
    If Asc(Mid(name, i, 1)) >= 58 And Asc(Mid(name, i, 1)) <= 64 Then
      Text1.Text = ""
      Exit Sub
      
    End If
****************************************

######################下面和上面的两个过程是一样的判断NAME中是否是字母或字符不是则给TEXT赋空值退出过程######################
____________________________________________________________________________________________________________________________
:00403186  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040318B  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:0040318E  E7                  CI4UI1               ;
:0040318F  0478FF              FLdRfVar             ;Push LOCAL_0088
:00403192  4D48FF0840          CVarRef              ;
:00403197  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040319A  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:0040319F  0418FF              FLdRfVar             ;Push LOCAL_00E8
:004031A2  FDFE5CFF            CStrVarVal           ;
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:004031A6  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX
:004031AB  F45B                LitI2_Byte           ;Push 5B
:004031AD  DF                  GeI2                 ;
:004031AE  28E8FE0100          LitVarI2             ;PushVarInteger 0001
:004031B3  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:004031B6  E7                  CI4UI1               ;
:004031B7  0478FF              FLdRfVar             ;Push LOCAL_0088
:004031BA  4D08FF0840          CVarRef              ;
:004031BF  04D8FE              FLdRfVar             ;Push LOCAL_0128
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004031C2  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:004031C7  04D8FE              FLdRfVar             ;Push LOCAL_0128
:004031CA  FDFED4FE            CStrVarVal           ;
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:004031CE  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX
:004031D3  F460                LitI2_Byte           ;Push 60
:004031D5  D5                  LeI2                 ;
:004031D6  C4                  AndI4                ;
:004031D7  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:004031DE  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants
:004031E9  1C1E0A              BranchF              ;If Pop=0 then ESI=00403202
******Possible String Ref To->""
                               |
:004031EC  1B0200              LitStr               ;Push ptr_00402228
:004031EF  21                  FLdPrThis            ;[SR]=[stack2]
:004031F0  0F0403              VCallAd              ;Return the control index 03
:004031F3  1960FF              FStAdFunc            ;
:004031F6  0860FF              FLdPr                ;[SR]=[LOCAL_00A0]
***********Reference To:[propput]TextBox.Text
                              |
:004031F9  0DA4000300          VCallHresult         ;Call ptr_0040222C
:004031FE  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 
:00403201  13                  ExitProcHresult      ;
****************************************
    If Asc(Mid(name, i, 1)) >= 91 And Asc(Mid(name, i, 1)) <= 96 Then
      Text1.Text = ""
      Exit Sub
      
    End If
****************************************
:00403202  2828FF0100          LitVarI2             ;PushVarInteger 0001
:00403207  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:0040320A  E7                  CI4UI1               ;
:0040320B  0478FF              FLdRfVar             ;Push LOCAL_0088
:0040320E  4D48FF0840          CVarRef              ;
:00403213  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:00403216  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:0040321B  0418FF              FLdRfVar             ;Push LOCAL_00E8
:0040321E  FDFE5CFF            CStrVarVal           ;
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:00403222  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX
:00403227  F47B                LitI2_Byte           ;Push 7B
:00403229  DF                  GeI2                 ;
:0040322A  28E8FE0100          LitVarI2             ;PushVarInteger 0001
:0040322F  6B66FF              FLdI2                ;Push WORD [LOCAL_009A]
:00403232  E7                  CI4UI1               ;
:00403233  0478FF              FLdRfVar             ;Push LOCAL_0088
:00403236  4D08FF0840          CVarRef              ;
:0040323B  04D8FE              FLdRfVar             ;Push LOCAL_0128
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040323E  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403243  04D8FE              FLdRfVar             ;Push LOCAL_0128
:00403246  FDFED4FE            CStrVarVal           ;
**********Reference To->msvbvm60.rtcAnsiValueBstr
                               |
:0040324A  0B04000400          ImpAdCallI2          ;Call ptr_00401030; check stack 0004; Push EAX
:0040324F  F3FF00              LitI2                ;Push 00FF
:00403252  D5                  LeI2                 ;
:00403253  C4                  AndI4                ;
:00403254  3204005CFFD4FE      FFreeStr             ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg 
:0040325B  36080028FF18FFE8    FFreeVar             ;Free 0008/2 variants
:00403266  1C9B0A              BranchF              ;If Pop=0 then ESI=0040327F
******Possible String Ref To->""
                               |
:00403269  1B0200              LitStr               ;Push ptr_00402228
:0040326C  21                  FLdPrThis            ;[SR]=[stack2]
:0040326D  0F0403              VCallAd              ;Return the control index 03
:00403270  1960FF              FStAdFunc            ;
:00403273  0860FF              FLdPr                ;[SR]=[LOCAL_00A0]
***********Reference To:[propput]TextBox.Text
                              |
:00403276  0DA4000300          VCallHresult         ;Call ptr_0040222C
:0040327B  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 
:0040327E  13                  ExitProcHresult      ;
****************************************
    If Asc(Mid(name, i, 1)) >= 123 And Asc(Mid(name, i, 1)) <= 255 Then
      Text1.Text = ""
      Exit Sub
      
    End If
****************************************

############################################################################################################################
____________________________________________________________________________________________________________________________

:0040327F  0466FF              FLdRfVar             ;Push LOCAL_009A
:00403282  6458FF8E00          NextI2               ;// i循环到这里结束

:00403287  F401                LitI2_Byte           ;Push 01
:00403289  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040328C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040328F  4A                  FnLenStr             ;vbaLenBstr
:00403290  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403291  FE63A0FEF30A        ForI2                ;// FOR J 循环

:00403297  2828FF0100          LitVarI2             ;PushVarInteger 0001    \ 取长度
:0040329C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C] | 变量j的值
:0040329F  E7                  CI4UI1               ;                       | // MID函数参数入栈
:004032A0  0470FF              FLdRfVar             ;Push LOCAL_0090        / 文本内容
:004032A3  4D48FF0840          CVarRef              ;// 创建临时变量
:004032A8  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 加载临时变量
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004032AB  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX // MID()
:004032B0  0418FF              FLdRfVar             ;Push LOCAL_00E8 // 将MID()的字符入栈
******Possible String Ref To->"f"
                               |
:004032B3  3A08FF5800          LitVarStr            ;PushVarString ptr_00402574 // "f"入栈
:004032B8  5D                  HardType             ;
:004032B9  FB33                EqVarBool            ;比较字符是否相等
:004032BB  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:004032C2  1CEB0A              BranchF              ;If Pop=0 then ESI=004032CF // 不相等则跳004032CF        \ 到下面也就是不做字符连接
:004032C5  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C] // 加载code变量                 |
******Possible String Ref To->"f"
                               |
:004032C8  1B5800              LitStr               ;Push ptr_00402574 // "f"入栈                            |
:004032CB  2A                  ConcatStr            ;vbaStrCat //连接字符串                                  |
:004032CC  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop //释放空间 |
:004032CF  0464FF              FLdRfVar             ;Push LOCAL_009C                                         /
:004032D2  64A0FEB30A          NextI2               ;// 循环结束
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "f" Then code = code & "f"
  Next j
********************************************************往下看看下面分别是edcba9876543210的判断结构
********************************************************如果mid到的字符等于判断的字符则作连接
********************************************************作完这些后我们到最后看看,记住[LOCAL_008C]=code变量
:004032D7  F401                LitI2_Byte           ;Push 01
:004032D9  0464FF              FLdRfVar             ;Push LOCAL_009C
:004032DC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:004032DF  4A                  FnLenStr             ;vbaLenBstr
:004032E0  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:004032E1  FE639CFE430B        ForI2                ;
:004032E7  2828FF0100          LitVarI2             ;PushVarInteger 0001
:004032EC  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:004032EF  E7                  CI4UI1               ;
:004032F0  0470FF              FLdRfVar             ;Push LOCAL_0090
:004032F3  4D48FF0840          CVarRef              ;
:004032F8  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004032FB  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403300  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"e"
                               |
:00403303  3A08FF5600          LitVarStr            ;PushVarString ptr_00402560
:00403308  5D                  HardType             ;
:00403309  FB33                EqVarBool            ;
:0040330B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403312  1C3B0B              BranchF              ;If Pop=0 then ESI=0040331F
:00403315  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"e"
                               |
:00403318  1B5600              LitStr               ;Push ptr_00402560
:0040331B  2A                  ConcatStr            ;vbaStrCat
:0040331C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040331F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403322  649CFE030B          NextI2 
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "e" Then code = code & "e"
  Next j              
****************************************
:00403327  F401                LitI2_Byte           ;Push 01
:00403329  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040332C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040332F  4A                  FnLenStr             ;vbaLenBstr
:00403330  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403331  FE6398FE930B        ForI2                ;
:00403337  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040333C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040333F  E7                  CI4UI1               ;
:00403340  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403343  4D48FF0840          CVarRef              ;
:00403348  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040334B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403350  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"d"
                               |
:00403353  3A08FF5400          LitVarStr            ;PushVarString ptr_0040254C
:00403358  5D                  HardType             ;
:00403359  FB33                EqVarBool            ;
:0040335B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403362  1C8B0B              BranchF              ;If Pop=0 then ESI=0040336F
:00403365  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"d"
                               |
:00403368  1B5400              LitStr               ;Push ptr_0040254C
:0040336B  2A                  ConcatStr            ;vbaStrCat
:0040336C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040336F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403372  6498FE530B          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "d" Then code = code & "d"
  Next j              
****************************************
:00403377  F401                LitI2_Byte           ;Push 01
:00403379  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040337C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040337F  4A                  FnLenStr             ;vbaLenBstr
:00403380  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403381  FE6394FEE30B        ForI2                ;
:00403387  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040338C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040338F  E7                  CI4UI1               ;
:00403390  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403393  4D48FF0840          CVarRef              ;
:00403398  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040339B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:004033A0  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"c"
                               |
:004033A3  3A08FF5200          LitVarStr            ;PushVarString ptr_00402538
:004033A8  5D                  HardType             ;
:004033A9  FB33                EqVarBool            ;
:004033AB  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:004033B2  1CDB0B              BranchF              ;If Pop=0 then ESI=004033BF
:004033B5  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"c"
                               |
:004033B8  1B5200              LitStr               ;Push ptr_00402538
:004033BB  2A                  ConcatStr            ;vbaStrCat
:004033BC  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:004033BF  0464FF              FLdRfVar             ;Push LOCAL_009C
:004033C2  6494FEA30B          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "c" Then code = code & "c"
  Next j              
****************************************
:004033C7  F401                LitI2_Byte           ;Push 01
:004033C9  0464FF              FLdRfVar             ;Push LOCAL_009C
:004033CC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:004033CF  4A                  FnLenStr             ;vbaLenBstr
:004033D0  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:004033D1  FE6390FE330C        ForI2                ;
:004033D7  2828FF0100          LitVarI2             ;PushVarInteger 0001
:004033DC  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:004033DF  E7                  CI4UI1               ;
:004033E0  0470FF              FLdRfVar             ;Push LOCAL_0090
:004033E3  4D48FF0840          CVarRef              ;
:004033E8  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004033EB  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:004033F0  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"b"
                               |
:004033F3  3A08FF5000          LitVarStr            ;PushVarString ptr_00402524
:004033F8  5D                  HardType             ;
:004033F9  FB33                EqVarBool            ;
:004033FB  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403402  1C2B0C              BranchF              ;If Pop=0 then ESI=0040340F
:00403405  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"b"
                               |
:00403408  1B5000              LitStr               ;Push ptr_00402524
:0040340B  2A                  ConcatStr            ;vbaStrCat
:0040340C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040340F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403412  6490FEF30B          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "b" Then code = code & "b"
  Next j              
****************************************
:00403417  F401                LitI2_Byte           ;Push 01
:00403419  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040341C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040341F  4A                  FnLenStr             ;vbaLenBstr
:00403420  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403421  FE638CFE830C        ForI2                ;
:00403427  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040342C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040342F  E7                  CI4UI1               ;
:00403430  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403433  4D48FF0840          CVarRef              ;
:00403438  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040343B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403440  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"a"
                               |
:00403443  3A08FF4E00          LitVarStr            ;PushVarString ptr_00402510
:00403448  5D                  HardType             ;
:00403449  FB33                EqVarBool            ;
:0040344B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403452  1C7B0C              BranchF              ;If Pop=0 then ESI=0040345F
:00403455  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"a"
                               |
:00403458  1B4E00              LitStr               ;Push ptr_00402510
:0040345B  2A                  ConcatStr            ;vbaStrCat
:0040345C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040345F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403462  648CFE430C          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "a" Then code = code & "a"
  Next j              
****************************************
:00403467  F401                LitI2_Byte           ;Push 01
:00403469  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040346C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040346F  4A                  FnLenStr             ;vbaLenBstr
:00403470  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403471  FE6388FED30C        ForI2                ;
:00403477  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040347C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040347F  E7                  CI4UI1               ;
:00403480  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403483  4D48FF0840          CVarRef              ;
:00403488  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040348B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403490  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"9"
                               |
:00403493  3A08FF1600          LitVarStr            ;PushVarString ptr_004022E0
:00403498  5D                  HardType             ;
:00403499  FB33                EqVarBool            ;
:0040349B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:004034A2  1CCB0C              BranchF              ;If Pop=0 then ESI=004034AF
:004034A5  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"9"
                               |
:004034A8  1B1600              LitStr               ;Push ptr_004022E0
:004034AB  2A                  ConcatStr            ;vbaStrCat
:004034AC  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:004034AF  0464FF              FLdRfVar             ;Push LOCAL_009C
:004034B2  6488FE930C          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "9" Then code = code & "9"
  Next j              
****************************************
:004034B7  F401                LitI2_Byte           ;Push 01
:004034B9  0464FF              FLdRfVar             ;Push LOCAL_009C
:004034BC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:004034BF  4A                  FnLenStr             ;vbaLenBstr
:004034C0  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:004034C1  FE6384FE230D        ForI2                ;
:004034C7  2828FF0100          LitVarI2             ;PushVarInteger 0001
:004034CC  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:004034CF  E7                  CI4UI1               ;
:004034D0  0470FF              FLdRfVar             ;Push LOCAL_0090
:004034D3  4D48FF0840          CVarRef              ;
:004034D8  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004034DB  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:004034E0  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"8"
                               |
:004034E3  3A08FF1400          LitVarStr            ;PushVarString ptr_004022CC
:004034E8  5D                  HardType             ;
:004034E9  FB33                EqVarBool            ;
:004034EB  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:004034F2  1C1B0D              BranchF              ;If Pop=0 then ESI=004034FF
:004034F5  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"8"
                               |
:004034F8  1B1400              LitStr               ;Push ptr_004022CC
:004034FB  2A                  ConcatStr            ;vbaStrCat
:004034FC  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:004034FF  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403502  6484FEE30C          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "8" Then code = code & "8"
  Next j              
****************************************
:00403507  F401                LitI2_Byte           ;Push 01
:00403509  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040350C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040350F  4A                  FnLenStr             ;vbaLenBstr
:00403510  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403511  FE6380FE730D        ForI2                ;
:00403517  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040351C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040351F  E7                  CI4UI1               ;
:00403520  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403523  4D48FF0840          CVarRef              ;
:00403528  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040352B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403530  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"7"
                               |
:00403533  3A08FF1200          LitVarStr            ;PushVarString ptr_004022B8
:00403538  5D                  HardType             ;
:00403539  FB33                EqVarBool            ;
:0040353B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403542  1C6B0D              BranchF              ;If Pop=0 then ESI=0040354F
:00403545  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"7"
                               |
:00403548  1B1200              LitStr               ;Push ptr_004022B8
:0040354B  2A                  ConcatStr            ;vbaStrCat
:0040354C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040354F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403552  6480FE330D          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "7" Then code = code & "7"
  Next j              
****************************************
:00403557  F401                LitI2_Byte           ;Push 01
:00403559  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040355C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040355F  4A                  FnLenStr             ;vbaLenBstr
:00403560  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403561  FE637CFEC30D        ForI2                ;
:00403567  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040356C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040356F  E7                  CI4UI1               ;
:00403570  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403573  4D48FF0840          CVarRef              ;
:00403578  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040357B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403580  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"6"
                               |
:00403583  3A08FF1000          LitVarStr            ;PushVarString ptr_004022A4
:00403588  5D                  HardType             ;
:00403589  FB33                EqVarBool            ;
:0040358B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403592  1CBB0D              BranchF              ;If Pop=0 then ESI=0040359F
:00403595  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"6"
                               |
:00403598  1B1000              LitStr               ;Push ptr_004022A4
:0040359B  2A                  ConcatStr            ;vbaStrCat
:0040359C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040359F  0464FF              FLdRfVar             ;Push LOCAL_009C
:004035A2  647CFE830D          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "6" Then code = code & "6"
  Next j              
****************************************
:004035A7  F401                LitI2_Byte           ;Push 01
:004035A9  0464FF              FLdRfVar             ;Push LOCAL_009C
:004035AC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:004035AF  4A                  FnLenStr             ;vbaLenBstr
:004035B0  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:004035B1  FE6378FE130E        ForI2                ;
:004035B7  2828FF0100          LitVarI2             ;PushVarInteger 0001
:004035BC  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:004035BF  E7                  CI4UI1               ;
:004035C0  0470FF              FLdRfVar             ;Push LOCAL_0090
:004035C3  4D48FF0840          CVarRef              ;
:004035C8  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004035CB  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:004035D0  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"5"
                               |
:004035D3  3A08FF0E00          LitVarStr            ;PushVarString ptr_00402290
:004035D8  5D                  HardType             ;
:004035D9  FB33                EqVarBool            ;
:004035DB  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:004035E2  1C0B0E              BranchF              ;If Pop=0 then ESI=004035EF
:004035E5  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"5"
                               |
:004035E8  1B0E00              LitStr               ;Push ptr_00402290
:004035EB  2A                  ConcatStr            ;vbaStrCat
:004035EC  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:004035EF  0464FF              FLdRfVar             ;Push LOCAL_009C
:004035F2  6478FED30D          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "5" Then code = code & "5"
  Next j              
****************************************
:004035F7  F401                LitI2_Byte           ;Push 01
:004035F9  0464FF              FLdRfVar             ;Push LOCAL_009C
:004035FC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:004035FF  4A                  FnLenStr             ;vbaLenBstr
:00403600  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403601  FE6374FE630E        ForI2                ;
:00403607  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040360C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040360F  E7                  CI4UI1               ;
:00403610  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403613  4D48FF0840          CVarRef              ;
:00403618  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040361B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403620  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"4"
                               |
:00403623  3A08FF0C00          LitVarStr            ;PushVarString ptr_0040227C
:00403628  5D                  HardType             ;
:00403629  FB33                EqVarBool            ;
:0040362B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403632  1C5B0E              BranchF              ;If Pop=0 then ESI=0040363F
:00403635  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"4"
                               |
:00403638  1B0C00              LitStr               ;Push ptr_0040227C
:0040363B  2A                  ConcatStr            ;vbaStrCat
:0040363C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040363F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403642  6474FE230E          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "4" Then code = code & "4"
  Next j              
****************************************
:00403647  F401                LitI2_Byte           ;Push 01
:00403649  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040364C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040364F  4A                  FnLenStr             ;vbaLenBstr
:00403650  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403651  FE6370FEB30E        ForI2                ;
:00403657  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040365C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040365F  E7                  CI4UI1               ;
:00403660  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403663  4D48FF0840          CVarRef              ;
:00403668  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040366B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403670  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"3"
                               |
:00403673  3A08FF0A00          LitVarStr            ;PushVarString ptr_00402268
:00403678  5D                  HardType             ;
:00403679  FB33                EqVarBool            ;
:0040367B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403682  1CAB0E              BranchF              ;If Pop=0 then ESI=0040368F
:00403685  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"3"
                               |
:00403688  1B0A00              LitStr               ;Push ptr_00402268
:0040368B  2A                  ConcatStr            ;vbaStrCat
:0040368C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040368F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403692  6470FE730E          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "3" Then code = code & "3"
  Next j              
****************************************
:00403697  F401                LitI2_Byte           ;Push 01
:00403699  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040369C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040369F  4A                  FnLenStr             ;vbaLenBstr
:004036A0  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:004036A1  FE636CFE030F        ForI2                ;
:004036A7  2828FF0100          LitVarI2             ;PushVarInteger 0001
:004036AC  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:004036AF  E7                  CI4UI1               ;
:004036B0  0470FF              FLdRfVar             ;Push LOCAL_0090
:004036B3  4D48FF0840          CVarRef              ;
:004036B8  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:004036BB  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:004036C0  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"2"
                               |
:004036C3  3A08FF0800          LitVarStr            ;PushVarString ptr_00402254
:004036C8  5D                  HardType             ;
:004036C9  FB33                EqVarBool            ;
:004036CB  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:004036D2  1CFB0E              BranchF              ;If Pop=0 then ESI=004036DF
:004036D5  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"2"
                               |
:004036D8  1B0800              LitStr               ;Push ptr_00402254
:004036DB  2A                  ConcatStr            ;vbaStrCat
:004036DC  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:004036DF  0464FF              FLdRfVar             ;Push LOCAL_009C
:004036E2  646CFEC30E          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "2" Then code = code & "2"
  Next j              
****************************************
:004036E7  F401                LitI2_Byte           ;Push 01
:004036E9  0464FF              FLdRfVar             ;Push LOCAL_009C
:004036EC  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:004036EF  4A                  FnLenStr             ;vbaLenBstr
:004036F0  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:004036F1  FE6368FE530F        ForI2                ;
:004036F7  2828FF0100          LitVarI2             ;PushVarInteger 0001
:004036FC  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:004036FF  E7                  CI4UI1               ;
:00403700  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403703  4D48FF0840          CVarRef              ;
:00403708  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040370B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403710  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"1"
                               |
:00403713  3A08FF0600          LitVarStr            ;PushVarString ptr_00402240
:00403718  5D                  HardType             ;
:00403719  FB33                EqVarBool            ;
:0040371B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403722  1C4B0F              BranchF              ;If Pop=0 then ESI=0040372F
:00403725  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C]
******Possible String Ref To->"1"
                               |
:00403728  1B0600              LitStr               ;Push ptr_00402240
:0040372B  2A                  ConcatStr            ;vbaStrCat
:0040372C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040372F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403732  6468FE130F          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "1" Then code = code & "1"
  Next j              
****************************************
:00403737  F401                LitI2_Byte           ;Push 01
:00403739  0464FF              FLdRfVar             ;Push LOCAL_009C
:0040373C  6C70FF              ILdRf                ;Push DWORD [LOCAL_0090]
:0040373F  4A                  FnLenStr             ;vbaLenBstr
:00403740  E4                  CI2I4                ;Verify [stack] high word is 0000, ECX=[ECX] 
:00403741  FE6364FEA30F        ForI2                ;
:00403747  2828FF0100          LitVarI2             ;PushVarInteger 0001
:0040374C  6B64FF              FLdI2                ;Push WORD [LOCAL_009C]
:0040374F  E7                  CI4UI1               ;
:00403750  0470FF              FLdRfVar             ;Push LOCAL_0090
:00403753  4D48FF0840          CVarRef              ;
:00403758  0418FF              FLdRfVar             ;Push LOCAL_00E8
**********Reference To->msvbvm60.rtcMidCharVar
                               |
:0040375B  0A05001000          ImpAdCallFPR4        ;Call ptr_00401036; check stack 0010; Push EAX
:00403760  0418FF              FLdRfVar             ;Push LOCAL_00E8
******Possible String Ref To->"0"
                               |
:00403763  3A08FF1800          LitVarStr            ;PushVarString ptr_004022F4
:00403768  5D                  HardType             ;
:00403769  FB33                EqVarBool            ;
:0040376B  36040028FF18FF      FFreeVar             ;Free 0004/2 variants
:00403772  1C9B0F              BranchF              ;If Pop=0 then ESI=0040377F
:00403775  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C] //*********到这里code已经形成*********
******Possible String Ref To->"0"
                               |
:00403778  1B1800              LitStr               ;Push ptr_004022F4
:0040377B  2A                  ConcatStr            ;vbaStrCat
:0040377C  3174FF              FStStr               ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=Pop
:0040377F  0464FF              FLdRfVar             ;Push LOCAL_009C
:00403782  6464FE630F          NextI2               ;
****************************************
  For j = 1 To Len(strCode)
    If Mid(strCode, j, 1) = "0" Then code = code & "0"
  Next j              
****************************************
:00403787  045CFF              FLdRfVar             ;Push LOCAL_00A4 // 开辟内存空间
:0040378A  21                  FLdPrThis            ;[SR]=[stack2]               \
:0040378B  0F0003              VCallAd              ;Return the control index 02 / // 获得窗体句柄
:0040378E  1960FF              FStAdFunc            ;// 取propget过程地址
:00403791  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] // 加载过程
***********Reference To:[propget]TextBox.Text
                              |
:00403794  0DA0000300          VCallHresult         ;Call ptr_0040222C // 获得文本框中的内容(假码)
:00403799  6C5CFF              ILdRf                ;Push DWORD [LOCAL_00A4] // (假码)
:0040379C  6C74FF              ILdRf                ;Push DWORD [LOCAL_008C] // code
:0040379F  FB30                EqStr                ;// 字符串比较
:004037A1  2F5CFF              FFree1Str            ;SysFreeString [LOCAL_00A4]; [LOCAL_00A4]=0 //释放空间
:004037A4  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 
:004037A7  1CF50F              BranchF              ;If Pop=0 then ESI=004037D9 // 不相等则跳004037D9
:004037AA  27E8FE              LitVar               ;PushVar LOCAL_0118          \
:004037AD  2718FF              LitVar               ;PushVar LOCAL_00E8          |
******Possible String Ref To->"CrackmeONEII+LYSA-II"
                               |
:004037B0  3A38FF8100          LitVarStr            ;PushVarString ptr_0040270C  |
:004037B5  4E28FF              FStVarCopyObj        ;[LOCAL_00D8]=vbaVarDup(Pop) | // MsgBox函数参数入栈
:004037B8  0428FF              FLdRfVar             ;Push LOCAL_00D8             |
:004037BB  F500000000          LitI4                ;Push 00000000               |
:004037C0  046CFF              FLdRfVar             ;Push LOCAL_0094             /
:004037C3  4D48FF0840          CVarRef              ;
**********Reference To->msvbvm60.rtcMsgBox
                               |
:004037C8  0A82001400          ImpAdCallFPR4        ;Call ptr_0040103C; check stack 0014; Push EAX // MsgBox()
:004037CD  36060028FF18FFE8    FFreeVar             ;Free 0006/2 variants
:004037D6  1E4B10              Branch               ;ESI=0040382F //探出正确注册后跳到结束过程0040382F
******Possible String Ref To->""
                               |
:004037D9  1B0200              LitStr               ;Push ptr_00402228 // 不正确跳到这里,NULL字符入栈
:004037DC  21                  FLdPrThis            ;[SR]=[stack2]               \
:004037DD  0F0403              VCallAd              ;Return the control index 03 / //取窗体句柄
:004037E0  1960FF              FStAdFunc            ;// 取propput过程地址
:004037E3  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] // 加载过程
***********Reference To:[propput]TextBox.Text
                              |
:004037E6  0DA4000300          VCallHresult         ;Call ptr_0040222C // 给TextBox.Text赋值
:004037EB  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 
******Possible String Ref To->""
                               |
:004037EE  1B0200              LitStr               ;Push ptr_00402228 // NULL字符入栈
:004037F1  21                  FLdPrThis            ;[SR]=[stack2]               \
:004037F2  0F0003              VCallAd              ;Return the control index 02 / //取窗体句柄
:004037F5  1960FF              FStAdFunc            ;// 取propput过程地址
:004037F8  0860FF              FLdPr                ;[SR]=[LOCAL_00A0] // 加载过程
***********Reference To:[propput]TextBox.Text
                              |
:004037FB  0DA4000300          VCallHresult         ;Call ptr_0040222C // 给TextBox.Text赋值
:00403800  1A60FF              FFree1Ad             ;Push [LOCAL_00A0]; Call [[[LOCAL_00A0]]+8]; [[LOCAL_00A0]]=0 
:00403803  27E8FE              LitVar               ;PushVar LOCAL_0118          \
:00403806  2718FF              LitVar               ;PushVar LOCAL_00E8          |
******Possible String Ref To->"CrackmeONEII+LYSA-II"
                               |
:00403809  3A38FF8100          LitVarStr            ;PushVarString ptr_0040270C  |
:0040380E  4E28FF              FStVarCopyObj        ;[LOCAL_00D8]=vbaVarDup(Pop) |  // MsgBox函数参数入栈
:00403811  0428FF              FLdRfVar             ;Push LOCAL_00D8             |
:00403814  F500000000          LitI4                ;Push 00000000               |
:00403819  0468FF              FLdRfVar             ;Push LOCAL_0098             /
:0040381C  4D48FF0840          CVarRef              ;
**********Reference To->msvbvm60.rtcMsgBox
                               |
:00403821  0A82001400          ImpAdCallFPR4        ;Call ptr_0040103C; check stack 0014; Push EAX //MsgBox,探出错误码
:00403826  36060028FF18FFE8    FFreeVar             ;Free 0006/2 variants
:0040382F  13                  ExitProcHresult      ;// 退出过程

    感谢大家对我的支持,看完这篇文章,还是老话,小鸟一只请大家不要见笑,如有错误还希望大家批评指正

                                                                          Moodsky[DFCG]
                                                                             2005.02.05