飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2820|回复: 6

Piao Yun's CrackMe003简单算法分析+VB注册机源码

[复制链接]
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-3-27 10:37:40 | 显示全部楼层 |阅读模式

    1. 【破文标题】Piao Yun's CrackMe003简单算法分析+VB注册机源码
    2. 破解作者】hrbx
    3. 【作者主页】hrbx.ys168.com
    4. 【作者邮箱】hrbx@163.com
    5. 【破解平台】WinXP
    6. 【使用工具】flyOD1.10、Peid
    7. 【破解日期】2006-03-27
    8. 【软件名称】Piao Yun's CrackMe003
    9. 【软件大小】56.5KB
    10. 【下载地址】https://www.chinapyg.com/viewthread.php?tid=4214&extra=page%3D1
    11. 【加壳方式】UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
    12. 【软件简介】Piao Yun's CrackMe003
    13. -----------------------------------------------------------------------------------------------
    14. 【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    15. -----------------------------------------------------------------------------------------------
    16. 【破解过程】
    17. 1.脱壳。用Peid扫描,显示为:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo,直接用PEID自带的
    18. 脱壳插件脱之。再次用用Peid扫描,显示为:Microsoft Visual Basic 5.0 / 6.0。
    19. 2.试运行crackme。输入注册信息:

    20. ====================================================================
    21. Hard Code:16856497051497056666666666666653371299410299411333333333333330
    22. Serial:9876543210
    23. ====================================================================

    24. 点击Check按钮,主窗体关闭,弹出一个"Bye!Dear Cracker!"提示窗体。
    25. 3.找出Hard Code的由来。OD载入,命令行下断点:bp  __vbaLenBstr,回车,F9运行,中断:

    26. 660E5F5F MS>  8B4424 04       mov eax,dword ptr ss:[esp+4]               ; 在此中断
    27. 660E5F63      85C0            test eax,eax
    28. 660E5F65      74 05           je short MSVBVM60.660E5F6C
    29. 660E5F67      8B40 FC         mov eax,dword ptr ds:[eax-4]
    30. 660E5F6A      D1E8            shr eax,1

    31. 观察堆栈友好提示:

    32. 0012F9A0     660E5FAD   返回到 MSVBVM60.660E5FAD 来自 MSVBVM60.__vbaLenBstr
    33. 0012F9A4     0015DE64   UNICODE "D81F31F8"

    34. 堆栈中的 "D81F31F8"是C盘卷标号:D81F-31F8去掉中间的"-"得到的字符串,ALT+F9返回,来到:

    35. 0041023B      FF15 78104000   call dword ptr ds:[<&MSVBVM60.__vbaLenVar>]       ; 获取字符串"D81F31F8"长度,EAX=8
    36. 00410241      50              push eax                                          ; 返回到这里
    37. 00410242      FF15 58114000   call dword ptr ds:[<&MSVBVM60.__vbaI2Var>]      
    38. 00410248      8985 58FFFFFF   mov dword ptr ss:[ebp-A8],eax                     ; 字符串长度EAX=8保存
    39. 0041024E      66:C746 68 0100 mov word ptr ds:[esi+68],1
    40. 00410254      66:8B46 68      mov ax,word ptr ds:[esi+68]                       ; 循环次数给AX
    41. 00410258      66:3B85 58FFFFF>cmp ax,word ptr ss:[ebp-A8]                       ; 循环次数与字符串长度比较
    42. 0041025F      0F8F 97000000   jg CrackMe0.004102FC                              ; 大于则跳,否则继续
    43. 00410265      0FBFD0          movsx edx,ax
    44. 00410268      8D4D CC         lea ecx,dword ptr ss:[ebp-34]
    45. 0041026B      8D46 6C         lea eax,dword ptr ds:[esi+6C]
    46. 0041026E      51              push ecx
    47. 0041026F      52              push edx
    48. 00410270      50              push eax
    49. 00410271      8D45 BC         lea eax,dword ptr ss:[ebp-44]
    50. 00410274      BF 02000000     mov edi,2
    51. 00410279      50              push eax
    52. 0041027A      C745 D4 0100000>mov dword ptr ss:[ebp-2C],1
    53. 00410281      897D CC         mov dword ptr ss:[ebp-34],edi
    54. 00410284      FF15 AC104000   call dword ptr ds:[<&MSVBVM60.rtcMidCharVar>]     ; 从字符串"D81F31F8"第1位开始取1位字符
    55. 0041028A      8D4D BC         lea ecx,dword ptr ss:[ebp-44]
    56. 0041028D      8D55 E8         lea edx,dword ptr ss:[ebp-18]
    57. 00410290      51              push ecx
    58. 00410291      52              push edx
    59. 00410292      FF15 4C114000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   
    60. 00410298      50              push eax
    61. 00410299      FF15 44104000   call dword ptr ds:[<&MSVBVM60.rtcAnsiValueBstr>]  ; 取字符的ASCII值,EAX=0X44("D")
    62. 0041029F      89BD 7CFFFFFF   mov dword ptr ss:[ebp-84],edi
    63. 004102A5      66:8945 84      mov word ptr ss:[ebp-7C],ax                       ; AX=0X44("D"),字符的ASCII值保存
    64. 004102A9      8D7E 34         lea edi,dword ptr ds:[esi+34]
    65. 004102AC      8D85 7CFFFFFF   lea eax,dword ptr ss:[ebp-84]
    66. 004102B2      57              push edi
    67. 004102B3      8D4D AC         lea ecx,dword ptr ss:[ebp-54]
    68. 004102B6      50              push eax
    69. 004102B7      51              push ecx
    70. 004102B8      FF15 54114000   call dword ptr ds:[<&MSVBVM60.__vbaVarCat>]       ; 字符的ASCII值转为10进制后依次连接
    71. 004102BE      8BD0            mov edx,eax                                       ; 最后得到字符串"6856497051497056"
    72. 004102C0      8BCF            mov ecx,edi
    73. 004102C2      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]      
    74. 004102C8      8D4D E8         lea ecx,dword ptr ss:[ebp-18]
    75. 004102CB      FF15 E4114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]      
    76. 004102D1      8D55 AC         lea edx,dword ptr ss:[ebp-54]
    77. 004102D4      8D45 BC         lea eax,dword ptr ss:[ebp-44]
    78. 004102D7      52              push edx
    79. 004102D8      8D4D CC         lea ecx,dword ptr ss:[ebp-34]
    80. 004102DB      50              push eax
    81. 004102DC      51              push ecx
    82. 004102DD      6A 03           push 3
    83. 004102DF      FFD3            call ebx
    84. 004102E1      B8 01000000     mov eax,1
    85. 004102E6      83C4 10         add esp,10
    86. 004102E9      66:0346 68      add ax,word ptr ds:[esi+68]
    87. 004102ED      0F80 77020000   jo CrackMe0.0041056A
    88. 004102F3      66:8946 68      mov word ptr ds:[esi+68],ax
    89. 004102F7    ^ E9 58FFFFFF     jmp CrackMe0.00410254                             ; 跳回去继续取一位字符
    90. 004102FC      8D7E 34         lea edi,dword ptr ds:[esi+34]
    91. 004102FF      8D55 8C         lea edx,dword ptr ss:[ebp-74]
    92. 00410302      57              push edi
    93. 00410303      52              push edx
    94. 00410304      8D45 CC         lea eax,dword ptr ss:[ebp-34]
    95. 00410307      57              push edi
    96. 00410308      50              push eax
    97. 00410309      C745 94 1E00000>mov dword ptr ss:[ebp-6C],1E                      ; 常数0x1E(30)
    98. 00410310      C745 8C 0200000>mov dword ptr ss:[ebp-74],2
    99. 00410317      FF15 78104000   call dword ptr ds:[<&MSVBVM60.__vbaLenVar>]       ; 获取字符串"6856497051497056"长度0x10
    100. 0041031D      8D4D BC         lea ecx,dword ptr ss:[ebp-44]
    101. 00410320      50              push eax
    102. 00410321      51              push ecx
    103. 00410322      FF15 04104000   call dword ptr ds:[<&MSVBVM60.__vbaVarSub>]       ; 0x1E-x10=0xE
    104. 00410328      50              push eax
    105. 00410329      FF15 94114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Var>]      
    106. 0041032F      8D55 AC         lea edx,dword ptr ss:[ebp-54]                     ; EAX=0xE
    107. 00410332      50              push eax
    108. 00410333      52              push edx
    109. 00410334      FF15 38114000   call dword ptr ds:[<&MSVBVM60.rtcStringVar>]      ; 内置字符串"66666666666666"
    110. 0041033A      8D45 AC         lea eax,dword ptr ss:[ebp-54]                     ; 字符串长度为上面相减得到的差(0xE)
    111. 0041033D      57              push edi
    112. 0041033E      8D4D 9C         lea ecx,dword ptr ss:[ebp-64]
    113. 00410341      50              push eax
    114. 00410342      51              push ecx
    115. 00410343      FF15 54114000   call dword ptr ds:[<&MSVBVM60.__vbaVarCat>]       ; 连接字符串"6856497051497056"       

    116.                                         ; 与"66666666666666"
    117. 00410349      8BD0            mov edx,eax                                       ; 得到"685649705149705666666666666666"
    118. 0041034B      8BCF            mov ecx,edi
    119. 0041034D      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]      
    120. 00410353      8D55 9C         lea edx,dword ptr ss:[ebp-64]
    121. 00410356      8D45 AC         lea eax,dword ptr ss:[ebp-54]
    122. 00410359      52              push edx
    123. 0041035A      50              push eax
    124. 0041035B      6A 02           push 2
    125. 0041035D      FFD3            call ebx
    126. 0041035F      83C4 0C         add esp,0C
    127. 00410362      8D4D CC         lea ecx,dword ptr ss:[ebp-34]
    128. 00410365      8D55 BC         lea edx,dword ptr ss:[ebp-44]
    129. 00410368      C745 D4 3900000>mov dword ptr ss:[ebp-2C],39
    130. 0041036F      51              push ecx
    131. 00410370      6A 1E           push 1E                                           ; 0x1E(30)
    132. 00410372      52              push edx
    133. 00410373      C745 CC 0200000>mov dword ptr ss:[ebp-34],2
    134. 0041037A      FF15 38114000   call dword ptr ds:[<&MSVBVM60.rtcStringVar>]      ; 内置固定字符串,长度为0x1E(30)      

    135. 00410380      8D4E 44         lea ecx,dword ptr ds:[esi+44]                    ; "999999999999999999999999999999"
    136. 00410383      8D55 BC         lea edx,dword ptr ss:[ebp-44]
    137. 00410386      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]      
    138. 0041038C      8D45 BC         lea eax,dword ptr ss:[ebp-44]
    139. 0041038F      8D4D CC         lea ecx,dword ptr ss:[ebp-34]
    140. 00410392      50              push eax
    141. 00410393      51              push ecx
    142. 00410394      6A 02           push 2
    143. 00410396      FFD3            call ebx
    144. 00410398      8B1D 48104000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaStrErrVarCo>
    145. 0041039E      83C4 0C         add esp,0C
    146. 004103A1      8D46 44         lea eax,dword ptr ds:[esi+44]
    147. 004103A4      50              push eax
    148. 004103A5      FFD3            call ebx
    149. 004103A7      8BD0            mov edx,eax
    150. 004103A9      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    151. 004103AC      FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]      
    152. 004103B2      57              push edi
    153. 004103B3      FFD3            call ebx
    154. 004103B5      8BD0            mov edx,eax
    155. 004103B7      8D4D E8         lea ecx,dword ptr ss:[ebp-18]
    156. 004103BA      FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]     
    157. 004103C0      8B16            mov edx,dword ptr ds:[esi]
    158. 004103C2      8D45 CC         lea eax,dword ptr ss:[ebp-34]
    159. 004103C5      50              push eax
    160. 004103C6      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    161. 004103C9      8D45 E8         lea eax,dword ptr ss:[ebp-18]
    162. 004103CC      51              push ecx
    163. 004103CD      50              push eax
    164. 004103CE      56              push esi
    165. 004103CF      FF92 00070000   call dword ptr ds:[edx+700]                       ; 关键CALL,F7进入
    166. 004103D5      85C0            test eax,eax
    167. 004103D7      7D 12           jge short CrackMe0.004103EB
    168. 004103D9      68 00070000     push 700
    169. 004103DE      68 C43B4000     push CrackMe0.00403BC4
    170. 004103E3      56              push esi
    171. 004103E4      50              push eax
    172. 004103E5      FF15 74104000   call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckOb>
    173. 004103EB      8D7E 54         lea edi,dword ptr ds:[esi+54]
    174. 004103EE      8D55 CC         lea edx,dword ptr ss:[ebp-34]
    175. 004103F1      8BCF            mov ecx,edi
    176. 004103F3      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]      
    177. 004103F9      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    178. 004103FC      8D55 E8         lea edx,dword ptr ss:[ebp-18]
    179. 004103FF      51              push ecx
    180. 00410400      52              push edx
    181. 00410401      6A 02           push 2
    182. 00410403      FF15 7C114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>]  
    183. 00410409      83C4 0C         add esp,0C
    184. 0041040C      8D4D CC         lea ecx,dword ptr ss:[ebp-34]
    185. 0041040F      FF15 24104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]      
    186. 00410415      8B06            mov eax,dword ptr ds:[esi]
    187. 00410417      56              push esi
    188. 00410418      FF90 00030000   call dword ptr ds:[eax+300]
    189. 0041041E      8D4D DC         lea ecx,dword ptr ss:[ebp-24]
    190. 00410421      50              push eax
    191. 00410422      51              push ecx
    192. 00410423      FF15 8C104000   call dword ptr ds:[<&MSVBVM60.__vbaObjSet>]      
    193. 00410429      57              push edi
    194. 0041042A      8985 74FFFFFF   mov dword ptr ss:[ebp-8C],eax
    195. 00410430      FFD3            call ebx
    196. 00410432      57              push edi
    197. 00410433      8945 C4         mov dword ptr ss:[ebp-3C],eax                     ; 字符串"1685649705149705666666666666665"
    198. 00410436      C745 BC 0800000>mov dword ptr ss:[ebp-44],8
    199. 0041043D      FFD3            call ebx
    200. 0041043F      8BD0            mov edx,eax
    201. 00410441      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    202. 00410444      FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]      
    203. 0041044A      57              push edi
    204. 0041044B      FFD3            call ebx
    205. 0041044D      8BD0            mov edx,eax                                       ; 字符串"1685649705149705666666666666665"
    206. 0041044F      8D4D E8         lea ecx,dword ptr ss:[ebp-18]
    207. 00410452      FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]      
    208. 00410458      8B16            mov edx,dword ptr ds:[esi]
    209. 0041045A      8D45 CC         lea eax,dword ptr ss:[ebp-34]
    210. 0041045D      50              push eax
    211. 0041045E      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    212. 00410461      8D45 E8         lea eax,dword ptr ss:[ebp-18]
    213. 00410464      51              push ecx
    214. 00410465      50              push eax
    215. 00410466      56              push esi
    216. 00410467      FF92 00070000   call dword ptr ds:[edx+700]                       ; 同上面关键CALL,参加运算的两个字符串都变成
    217. 0041046D      85C0            test eax,eax                                      ; "1685649705149705666666666666665"
    218. 0041046F      7D 12           jge short CrackMe0.00410483                       ; 运算结果得到字符串            

    219. 00410471      68 00070000     push 700                     ; "3371299410299411333333333333330"
    220. 00410476      68 C43B4000     push CrackMe0.00403BC4
    221. 0041047B      56              push esi
    222. 0041047C      50              push eax
    223. 0041047D      FF15 74104000   call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckOb>
    224. 00410483      8BB5 74FFFFFF   mov esi,dword ptr ss:[ebp-8C]
    225. 00410489      8D4D BC         lea ecx,dword ptr ss:[ebp-44]
    226. 0041048C      8D55 CC         lea edx,dword ptr ss:[ebp-34]
    227. 0041048F      51              push ecx
    228. 00410490      8B3E            mov edi,dword ptr ds:[esi]
    229. 00410492      8D45 AC         lea eax,dword ptr ss:[ebp-54]
    230. 00410495      52              push edx
    231. 00410496      50              push eax
    232. 00410497      FF15 54114000   call dword ptr ds:[<&MSVBVM60.__vbaVarCat>]       ; 连接两次运算得到的字符串
    233. 0041049D      8D4D E0         lea ecx,dword ptr ss:[ebp-20]
    234. 004104A0      50              push eax
    235. 004104A1      51              push ecx
    236. 004104A2      FF15 4C114000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   
    237. 004104A8      50              push eax                                          ; 得到Hard Code"168564970514970566666666  

    238. 004104A9      56              push esi                     ; 66666653371299410299411333333333333330"

    239. F7进入004103D5处的关键CALL,来到:

    240. 00402E9D     /E9 CED60000     jmp CrackMe0.00410570
    241. 00402EA2     |816C24 04 B7000>sub dword ptr ss:[esp+4],0B7
    242. 00402EAA     |E9 11DE0000     jmp CrackMe0.00410CC0

    243. 再F8一次,来到:

    244. 00410570      55              push ebp
    245. 00410571      8BEC            mov ebp,esp
    246. .......................................................

    247.                      省略部分代码

    248. .......................................................
    249. 00410617      8B35 2C104000   mov esi,dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]   ; MSVBVM60.__vbaLenBstr
    250. 0041061D      50              push eax                                          ; 字符串1"649705149705666666666666665337"
    251. 0041061E      FFD6            call esi                                          ; 获取字符串1长度,EAX=0x1E(30)
    252. 00410620      8B1D 20104000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaVarMove>]   
    253. 00410626      8D95 10FFFFFF   lea edx,dword ptr ss:[ebp-F0]
    254. 0041062C      8D4D CC         lea ecx,dword ptr ss:[ebp-34]
    255. 0041062F      8985 18FFFFFF   mov dword ptr ss:[ebp-E8],eax                     ; 字符串1长度EAX=0x1E(30)保存
    256. 00410635      C785 10FFFFFF 0>mov dword ptr ss:[ebp-F0],3
    257. 0041063F      FFD3            call ebx
    258. 00410641      8B4D 10         mov ecx,dword ptr ss:[ebp+10]
    259. 00410644      8B11            mov edx,dword ptr ds:[ecx]
    260. 00410646      52              push edx                                          ; 字符串2"999999999999999999999999999999"
    261. 00410647      FFD6            call esi                                          ; 获取字符串2长度,EAX=0x1E(30)
    262. 00410649      8D95 10FFFFFF   lea edx,dword ptr ss:[ebp-F0]
    263. 0041064F      8D4D AC         lea ecx,dword ptr ss:[ebp-54]
    264. 00410652      8985 18FFFFFF   mov dword ptr ss:[ebp-E8],eax                     ; 字符串2长度EAX=0x1E(30)保存
    265. 00410658      C785 10FFFFFF 0>mov dword ptr ss:[ebp-F0],3
    266. .......................................................

    267.                      省略部分代码

    268. .......................................................
    269. 0041084B      52              push edx
    270. 0041084C      C785 00FFFFFF 0>mov dword ptr ss:[ebp-100],4008
    271. 00410856      FF15 04104000   call dword ptr ds:[<&MSVBVM60.__vbaVarSub>]       ; 字符串1长度(0x1E)-循环次数
    272. 0041085C      50              push eax
    273. 0041085D      8D85 10FFFFFF   lea eax,dword ptr ss:[ebp-F0]
    274. 00410863      8D8D 40FFFFFF   lea ecx,dword ptr ss:[ebp-C0]
    275. 00410869      50              push eax
    276. 0041086A      51              push ecx
    277. 0041086B      FFD6            call esi                                          ; 再加上1,准备从字符串1最后一位开始取
    278. 0041086D      50              push eax
    279. 0041086E      FF15 94114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Var>]     
    280. 00410874      50              push eax                                          ; EAX=0x1E
    281. 00410875      8D95 00FFFFFF   lea edx,dword ptr ss:[ebp-100]
    282. 0041087B      8D85 20FFFFFF   lea eax,dword ptr ss:[ebp-E0]
    283. 00410881      52              push edx
    284. 00410882      50              push eax
    285. 00410883      FF15 AC104000   call dword ptr ds:[<&MSVBVM60.rtcMidCharVar>]     ; 字符串1"685649705149705666666666666666"
    286. 00410889      8D8D 20FFFFFF   lea ecx,dword ptr ss:[ebp-E0]                     ; 从字符串1最后一位开始倒序取一位字符
    287. 0041088F      8D95 60FFFFFF   lea edx,dword ptr ss:[ebp-A0]
    288. 00410895      51              push ecx
    289. 00410896      52              push edx
    290. 00410897      FF15 4C114000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   
    291. 0041089D      50              push eax
    292. 0041089E      FF15 EC114000   call dword ptr ds:[<&MSVBVM60.rtcR8ValFromBstr>]  ; 取出的字符转为实数,"6"-->6.0
    293. 004108A4      DD9D E8FEFFFF   fstp qword ptr ss:[ebp-118]                       ; st=6.0000000000000000000
    294. 004108AA      8D95 E0FEFFFF   lea edx,dword ptr ss:[ebp-120]
    295. 004108B0      8D4D 88         lea ecx,dword ptr ss:[ebp-78]
    296. 004108B3      C785 E0FEFFFF 0>mov dword ptr ss:[ebp-120],5
    297. 004108BD      FFD3            call ebx
    298. 004108BF      8D8D 60FFFFFF   lea ecx,dword ptr ss:[ebp-A0]
    299. 004108C5      FF15 E4114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]      
    300. 004108CB      8D85 20FFFFFF   lea eax,dword ptr ss:[ebp-E0]
    301. 004108D1      8D8D 30FFFFFF   lea ecx,dword ptr ss:[ebp-D0]
    302. 004108D7      50              push eax
    303. 004108D8      8D95 40FFFFFF   lea edx,dword ptr ss:[ebp-C0]
    304. 004108DE      51              push ecx
    305. 004108DF      52              push edx
    306. 004108E0      6A 03           push 3
    307. 004108E2      FFD7            call edi
    308. 004108E4      B8 02000000     mov eax,2
    309. 004108E9      B9 01000000     mov ecx,1
    310. 004108EE      8985 30FFFFFF   mov dword ptr ss:[ebp-D0],eax
    311. 004108F4      8985 10FFFFFF   mov dword ptr ss:[ebp-F0],eax
    312. 004108FA      8B45 10         mov eax,dword ptr ss:[ebp+10]
    313. 004108FD      83C4 10         add esp,10
    314. 00410900      898D 38FFFFFF   mov dword ptr ss:[ebp-C8],ecx
    315. 00410906      898D 18FFFFFF   mov dword ptr ss:[ebp-E8],ecx
    316. 0041090C      8D8D 30FFFFFF   lea ecx,dword ptr ss:[ebp-D0]
    317. 00410912      8985 08FFFFFF   mov dword ptr ss:[ebp-F8],eax
    318. 00410918      8D55 BC         lea edx,dword ptr ss:[ebp-44]
    319. 0041091B      51              push ecx
    320. 0041091C      8D45 DC         lea eax,dword ptr ss:[ebp-24]
    321. 0041091F      52              push edx
    322. 00410920      8D8D 50FFFFFF   lea ecx,dword ptr ss:[ebp-B0]
    323. 00410926      50              push eax
    324. 00410927      51              push ecx
    325. 00410928      C785 00FFFFFF 0>mov dword ptr ss:[ebp-100],4008
    326. 00410932      FF15 04104000   call dword ptr ds:[<&MSVBVM60.__vbaVarSub>]       ; 字符串2长度(0x1E)-循环次数
    327. 00410938      50              push eax
    328. 00410939      8D95 10FFFFFF   lea edx,dword ptr ss:[ebp-F0]
    329. 0041093F      8D85 40FFFFFF   lea eax,dword ptr ss:[ebp-C0]
    330. 00410945      52              push edx
    331. 00410946      50              push eax
    332. 00410947      FFD6            call esi                                          ; 再加上1,准备从字符串2最后一位开始取
    333. 00410949      50              push eax
    334. 0041094A      FF15 94114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Var>]        
    335. 00410950      8D8D 00FFFFFF   lea ecx,dword ptr ss:[ebp-100]
    336. 00410956      50              push eax
    337. 00410957      8D95 20FFFFFF   lea edx,dword ptr ss:[ebp-E0]
    338. 0041095D      51              push ecx
    339. 0041095E      52              push edx
    340. 0041095F      FF15 AC104000   call dword ptr ds:[<&MSVBVM60.rtcMidCharVar>]     ; 字符串2"999999999999999999999999999999"
    341. 00410965      8D85 20FFFFFF   lea eax,dword ptr ss:[ebp-E0]                     ; 从字符串2最后一位开始倒序取一位字符
    342. 0041096B      8D8D 60FFFFFF   lea ecx,dword ptr ss:[ebp-A0]
    343. 00410971      50              push eax
    344. 00410972      51              push ecx
    345. 00410973      FF15 4C114000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   
    346. 00410979      50              push eax
    347. 0041097A      FF15 EC114000   call dword ptr ds:[<&MSVBVM60.rtcR8ValFromBstr>]  ; 取出的字符转为实数,"9"-->9.0
    348. 00410980      DD9D E8FEFFFF   fstp qword ptr ss:[ebp-118]                       ; st=9.0000000000000000000
    349. 00410986      8D95 E0FEFFFF   lea edx,dword ptr ss:[ebp-120]
    350. 0041098C      8D8D 68FFFFFF   lea ecx,dword ptr ss:[ebp-98]
    351. 00410992      C785 E0FEFFFF 0>mov dword ptr ss:[ebp-120],5
    352. 0041099C      FFD3            call ebx
    353. 0041099E      8D8D 60FFFFFF   lea ecx,dword ptr ss:[ebp-A0]
    354. 004109A4      FF15 E4114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]      
    355. 004109AA      8D95 20FFFFFF   lea edx,dword ptr ss:[ebp-E0]
    356. 004109B0      8D85 30FFFFFF   lea eax,dword ptr ss:[ebp-D0]
    357. 004109B6      52              push edx
    358. 004109B7      8D8D 40FFFFFF   lea ecx,dword ptr ss:[ebp-C0]
    359. 004109BD      50              push eax
    360. 004109BE      51              push ecx
    361. 004109BF      6A 03           push 3
    362. 004109C1      FFD7            call edi
    363. 004109C3      83C4 10         add esp,10
    364. 004109C6      8D55 88         lea edx,dword ptr ss:[ebp-78]
    365. 004109C9      8D85 68FFFFFF   lea eax,dword ptr ss:[ebp-98]
    366. 004109CF      8D8D 50FFFFFF   lea ecx,dword ptr ss:[ebp-B0]
    367. 004109D5      52              push edx
    368. 004109D6      50              push eax
    369. 004109D7      51              push ecx
    370. 004109D8      FFD6            call esi                                          ; MSVBVM60.__vbaVarAdd,取出的两个实数相加
    371. 004109DA      50              push eax                                          ; 9.0+6.0=15.0
    372. 004109DB      8D55 98         lea edx,dword ptr ss:[ebp-68]
    373. 004109DE      8D85 40FFFFFF   lea eax,dword ptr ss:[ebp-C0]
    374. 004109E4      52              push edx
    375. 004109E5      50              push eax
    376. 004109E6      FFD6            call esi                                          ; __vbaVarAdd,前一次运算结果若大于9则再加上1
    377. 004109E8      50              push eax
    378. 004109E9      FF15 58114000   call dword ptr ds:[<&MSVBVM60.__vbaI2Var>]        
    379. 004109EF      8D8D 40FFFFFF   lea ecx,dword ptr ss:[ebp-C0]
    380. 004109F5      8D95 50FFFFFF   lea edx,dword ptr ss:[ebp-B0]
    381. 004109FB      51              push ecx
    382. 004109FC      52              push edx
    383. 004109FD      6A 02           push 2
    384. 004109FF      8985 64FFFFFF   mov dword ptr ss:[ebp-9C],eax
    385. 00410A05      FFD7            call edi
    386. 00410A07      8B85 64FFFFFF   mov eax,dword ptr ss:[ebp-9C]
    387. 00410A0D      83C4 0C         add esp,0C
    388. 00410A10      66:3D 0900      cmp ax,9                                          ; 相加之和与9比较,AX=0xF(15)
    389. 00410A14      7E 1C           jle short CrackMe0.00410A32                       ; 若小于等于9则跳
    390. 00410A16      66:2D 0A00      sub ax,0A                                         ; 否则AX=AX-0xA=5
    391. 00410A1A      C785 18FFFFFF 0>mov dword ptr ss:[ebp-E8],1                       ; 将数字1放入地址ss:[ebp-E8],加到下次运算中
    392. 00410A24      0F80 86020000   jo CrackMe0.00410CB0
    393. 00410A2A      8985 64FFFFFF   mov dword ptr ss:[ebp-9C],eax                     ; 保存AX
    394. 00410A30      EB 0A           jmp short CrackMe0.00410A3C
    395. 00410A32      C785 18FFFFFF 0>mov dword ptr ss:[ebp-E8],0
    396. 00410A3C      8D95 10FFFFFF   lea edx,dword ptr ss:[ebp-F0]
    397. 00410A42      8D4D 98         lea ecx,dword ptr ss:[ebp-68]
    398. 00410A45      C785 10FFFFFF 0>mov dword ptr ss:[ebp-F0],2
    399. 00410A4F      FFD3            call ebx
    400. 00410A51      8D8D 10FFFFFF   lea ecx,dword ptr ss:[ebp-F0]
    401. 00410A57      8D95 50FFFFFF   lea edx,dword ptr ss:[ebp-B0]
    402. 00410A5D      8D85 64FFFFFF   lea eax,dword ptr ss:[ebp-9C]
    403. 00410A63      51              push ecx
    404. 00410A64      52              push edx
    405. 00410A65      8985 18FFFFFF   mov dword ptr ss:[ebp-E8],eax
    406. 00410A6B      C785 10FFFFFF 0>mov dword ptr ss:[ebp-F0],4002
    407. 00410A75      FF15 A8114000   call dword ptr ds:[<&MSVBVM60.rtcVarStrFromVar>]  ; 将相减之后所得的数字转为字符串,5-->"5"
    408. 00410A7B      8D85 50FFFFFF   lea eax,dword ptr ss:[ebp-B0]
    409. 00410A81      6A 01           push 1
    410. 00410A83      8D8D 40FFFFFF   lea ecx,dword ptr ss:[ebp-C0]
    411. 00410A89      50              push eax
    412. 00410A8A      51              push ecx
    413. 00410A8B      FF15 C8114000   call dword ptr ds:[<&MSVBVM60.rtcRightCharVar>]   ; 取字符串"5"右边一位字符"5"
    414. 00410A91      8B55 A8         mov edx,dword ptr ss:[ebp-58]
    415. 00410A94      8D85 40FFFFFF   lea eax,dword ptr ss:[ebp-C0]
    416. 00410A9A      8995 08FFFFFF   mov dword ptr ss:[ebp-F8],edx
    417. 00410AA0      8D8D 00FFFFFF   lea ecx,dword ptr ss:[ebp-100]
    418. 00410AA6      50              push eax
    419. 00410AA7      8D95 30FFFFFF   lea edx,dword ptr ss:[ebp-D0]
    420. 00410AAD      51              push ecx
    421. 00410AAE      52              push edx
    422. 00410AAF      C785 00FFFFFF 0>mov dword ptr ss:[ebp-100],8
    423. 00410AB9      FFD6            call esi                                          ; VarBstrCat,连接每次得到的字符
    424. 00410ABB      50              push eax
    425. 00410ABC      FF15 28104000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>]   
    426. 00410AC2      8BD0            mov edx,eax
    427. 00410AC4      8D4D A8         lea ecx,dword ptr ss:[ebp-58]
    428. 00410AC7      FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]     
    429. 00410ACD      8D85 30FFFFFF   lea eax,dword ptr ss:[ebp-D0]
    430. 00410AD3      8D8D 40FFFFFF   lea ecx,dword ptr ss:[ebp-C0]
    431. 00410AD9      50              push eax
    432. 00410ADA      8D95 50FFFFFF   lea edx,dword ptr ss:[ebp-B0]
    433. 00410AE0      51              push ecx
    434. 00410AE1      52              push edx
    435. 00410AE2      6A 03           push 3
    436. 00410AE4      FFD7            call edi
    437. 00410AE6      83C4 10         add esp,10
    438. 00410AE9      8D85 C0FEFFFF   lea eax,dword ptr ss:[ebp-140]
    439. 00410AEF      8D8D D0FEFFFF   lea ecx,dword ptr ss:[ebp-130]
    440. 00410AF5      8D55 DC         lea edx,dword ptr ss:[ebp-24]
    441. 00410AF8      50              push eax
    442. 00410AF9      51              push ecx
    443. 00410AFA      52              push edx
    444. 00410AFB      FF15 DC114000   call dword ptr ds:[<&MSVBVM60.__vbaVarForNext>]   
    445. 00410B01    ^ E9 FDFCFFFF     jmp CrackMe0.00410803
    446. 00410B06      8D45 98         lea eax,dword ptr ss:[ebp-68]
    447. 00410B09      8D8D 10FFFFFF   lea ecx,dword ptr ss:[ebp-F0]
    448. 00410B0F      50              push eax
    449. 00410B10      51              push ecx
    450. 00410B11      C785 18FFFFFF 0>mov dword ptr ss:[ebp-E8],0
    451. 00410B1B      C785 10FFFFFF 0>mov dword ptr ss:[ebp-F0],8002
    452. 00410B25      FF15 90114000   call dword ptr ds:[<&MSVBVM60.__vbaVarTstNe>]     
    453. 00410B2B      66:85C0         test ax,ax
    454. 00410B2E      74 7F           je short CrackMe0.00410BAF
    455. 00410B30      8D55 98         lea edx,dword ptr ss:[ebp-68]
    456. 00410B33      8D85 50FFFFFF   lea eax,dword ptr ss:[ebp-B0]
    457. 00410B39      52              push edx
    458. 00410B3A      50              push eax
    459. 00410B3B      FF15 A8114000   call dword ptr ds:[<&MSVBVM60.rtcVarStrFromVar>]  
    460. 00410B41      8D8D 50FFFFFF   lea ecx,dword ptr ss:[ebp-B0]
    461. 00410B47      6A 01           push 1
    462. 00410B49      8D95 40FFFFFF   lea edx,dword ptr ss:[ebp-C0]
    463. 00410B4F      51              push ecx
    464. 00410B50      52              push edx
    465. 00410B51      FF15 C8114000   call dword ptr ds:[<&MSVBVM60.rtcRightCharVar>]   
    466. 00410B57      8B45 A8         mov eax,dword ptr ss:[ebp-58]                     ; 得到字符串"685649705149705666666666666665"
    467. 00410B5A      8D8D 40FFFFFF   lea ecx,dword ptr ss:[ebp-C0]
    468. 00410B60      8985 18FFFFFF   mov dword ptr ss:[ebp-E8],eax
    469. 00410B66      8D95 10FFFFFF   lea edx,dword ptr ss:[ebp-F0]
    470. 00410B6C      51              push ecx
    471. 00410B6D      8D85 30FFFFFF   lea eax,dword ptr ss:[ebp-D0]
    472. 00410B73      52              push edx
    473. 00410B74      50              push eax
    474. 00410B75      C785 10FFFFFF 0>mov dword ptr ss:[ebp-F0],8
    475. 00410B7F      FFD6            call esi                                          ; VarBstrCat,最后一次运算结果大于9
    476.                                         ; 所以在字符串前再连接字符"1"
    477. 00410B81      50              push eax                                          ; 得到字符串"1685649705149705666666666666665"
    478. 00410B82      FF15 28104000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>]   

    479. 4.追出算法。OD载入,F9运行程序,输入注册信息后,命令栏下断点:bp rtcMidCharBstr,回车,点Check按钮,中断:

    480. 660E64A6 MS>  55              push ebp                                          ; 在此中断
    481. 660E64A7      8BEC            mov ebp,esp
    482. 660E64A9      83EC 10         sub esp,10
    483. 660E64AC      8B45 10         mov eax,dword ptr ss:[ebp+10]

    484. 命令栏输入:bc rtcMidCharBstr,回车,清除断点,ALT+F9返回,来到:

    485. 0040F72C      FF15 AC104000   call dword ptr ds:[<&MSVBVM60.rtcMidCharVar>]     ; MSVBVM60.rtcMidCharVar
    486. 0040F732      8D5E 34         lea ebx,dword ptr ds:[esi+34]                     ; 返回来到这里
    487. 0040F735      8D55 A8         lea edx,dword ptr ss:[ebp-58]
    488. 0040F738      8BCB            mov ecx,ebx
    489. 0040F73A      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]      

    490. 向上查找,来到0040F650 处F2下断,Ctrl+F2重新载入程序,输入注册信息后点Check按钮,立即中断:

    491. 0040F650      55              push ebp                                          ; 在此下断
    492. 0040F651      8BEC            mov ebp,esp
    493. .......................................................

    494.                      省略部分代码

    495. .......................................................
    496. 0040F706      8945 D0         mov dword ptr ss:[ebp-30],eax                  ; 硬盘号"1685649705149705666666666666665337  

    497. 0040F709      8D45 B8         lea eax,dword ptr ss:[ebp-48]         ; 1299410299411333333333333330"
    498. 0040F70C      50              push eax
    499. 0040F70D      6A 05           push 5                                         ; 常数5
    500. 0040F70F      8D55 A8         lea edx,dword ptr ss:[ebp-58]
    501. 0040F712      51              push ecx
    502. 0040F713      52              push edx
    503. 0040F714      C745 C0 1E00000>mov dword ptr ss:[ebp-40],1E                   ; 常数0x1E(30)
    504. 0040F71B      C745 B8 0200000>mov dword ptr ss:[ebp-48],2
    505. 0040F722      895D E0         mov dword ptr ss:[ebp-20],ebx
    506. 0040F725      C745 C8 0800000>mov dword ptr ss:[ebp-38],8
    507. 0040F72C      FF15 AC104000   call dword ptr ds:[<&MSVBVM60.rtcMidCharVar>]  ; 从字符串第5位开始取0x1E(30)位字符
    508. 0040F732      8D5E 34         lea ebx,dword ptr ds:[esi+34]                  ; 得到字符串"649705149705666666666666665337"
    509. 0040F735      8D55 A8         lea edx,dword ptr ss:[ebp-58]
    510. 0040F738      8BCB            mov ecx,ebx
    511. 0040F73A      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]   
    512. 0040F740      8D4D D8         lea ecx,dword ptr ss:[ebp-28]
    513. 0040F743      FF15 E8114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]   
    514. 0040F749      8D45 A8         lea eax,dword ptr ss:[ebp-58]
    515. 0040F74C      8D4D B8         lea ecx,dword ptr ss:[ebp-48]
    516. 0040F74F      50              push eax
    517. 0040F750      8D55 C8         lea edx,dword ptr ss:[ebp-38]
    518. 0040F753      51              push ecx
    519. 0040F754      52              push edx
    520. 0040F755      6A 03           push 3
    521. 0040F757      FF15 38104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>
    522. 0040F75D      8B06            mov eax,dword ptr ds:[esi]
    523. 0040F75F      83C4 10         add esp,10
    524. 0040F762      56              push esi
    525. 0040F763      FF90 00030000   call dword ptr ds:[eax+300]
    526. 0040F769      8D4D D8         lea ecx,dword ptr ss:[ebp-28]
    527. 0040F76C      50              push eax
    528. 0040F76D      51              push ecx
    529. 0040F76E      FF15 8C104000   call dword ptr ds:[<&MSVBVM60.__vbaObjSet>]   
    530. 0040F774      8BF8            mov edi,eax
    531. 0040F776      8D45 E0         lea eax,dword ptr ss:[ebp-20]
    532. 0040F779      50              push eax
    533. 0040F77A      57              push edi
    534. 0040F77B      8B17            mov edx,dword ptr ds:[edi]
    535. 0040F77D      FF92 A0000000   call dword ptr ds:[edx+A0]
    536. 0040F783      85C0            test eax,eax
    537. 0040F785      DBE2            fclex
    538. 0040F787      7D 12           jge short CrackMe0.0040F79B
    539. 0040F789      68 A0000000     push 0A0
    540. 0040F78E      68 743E4000     push CrackMe0.00403E74
    541. 0040F793      57              push edi
    542. 0040F794      50              push eax
    543. 0040F795      FF15 74104000   call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>
    544. 0040F79B      8B45 E0         mov eax,dword ptr ss:[ebp-20]                  ; 硬盘号"1685649705149705666666666666665337
    545. 0040F79E      8D4D C8         lea ecx,dword ptr ss:[ebp-38]         ; 1299410299411333333333333330"
    546. 0040F7A1      6A 1E           push 1E                                        ; 常数0x1E(30)
    547. 0040F7A3      8D55 B8         lea edx,dword ptr ss:[ebp-48]
    548. 0040F7A6      51              push ecx
    549. 0040F7A7      52              push edx
    550. 0040F7A8      C745 E0 0000000>mov dword ptr ss:[ebp-20],0
    551. 0040F7AF      8945 D0         mov dword ptr ss:[ebp-30],eax
    552. 0040F7B2      C745 C8 0800000>mov dword ptr ss:[ebp-38],8
    553. 0040F7B9      FF15 C8114000   call dword ptr ds:[<&MSVBVM60.rtcRightCharVar>>; 取字符串右边30位字符
    554. 0040F7BF      8D7E 44         lea edi,dword ptr ds:[esi+44]                  ; 得到字符串"371299410299411333333333333330"
    555. 0040F7C2      8D55 B8         lea edx,dword ptr ss:[ebp-48]
    556. 0040F7C5      8BCF            mov ecx,edi
    557. 0040F7C7      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]   
    558. 0040F7CD      8D4D D8         lea ecx,dword ptr ss:[ebp-28]
    559. 0040F7D0      FF15 E8114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]   
    560. 0040F7D6      8D45 B8         lea eax,dword ptr ss:[ebp-48]
    561. 0040F7D9      8D4D C8         lea ecx,dword ptr ss:[ebp-38]
    562. 0040F7DC      50              push eax
    563. 0040F7DD      51              push ecx
    564. 0040F7DE      6A 02           push 2
    565. 0040F7E0      FF15 38104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>;
    566. 0040F7E6      83C4 0C         add esp,0C
    567. 0040F7E9      57              push edi
    568. 0040F7EA      FF15 48104000   call dword ptr ds:[<&MSVBVM60.__vbaStrErrVarCo>
    569. 0040F7F0      8B3D C4114000   mov edi,dword ptr ds:[<&MSVBVM60.__vbaStrMove>>
    570. 0040F7F6      8BD0            mov edx,eax
    571. 0040F7F8      8D4D DC         lea ecx,dword ptr ss:[ebp-24]
    572. 0040F7FB      FFD7            call edi
    573. 0040F7FD      53              push ebx
    574. 0040F7FE      FF15 48104000   call dword ptr ds:[<&MSVBVM60.__vbaStrErrVarCo>
    575. 0040F804      8BD0            mov edx,eax
    576. 0040F806      8D4D E0         lea ecx,dword ptr ss:[ebp-20]
    577. 0040F809      FFD7            call edi
    578. 0040F80B      8B16            mov edx,dword ptr ds:[esi]
    579. 0040F80D      8D45 C8         lea eax,dword ptr ss:[ebp-38]
    580. 0040F810      50              push eax
    581. 0040F811      8D4D DC         lea ecx,dword ptr ss:[ebp-24]
    582. 0040F814      8D45 E0         lea eax,dword ptr ss:[ebp-20]
    583. 0040F817      51              push ecx
    584. 0040F818      50              push eax
    585. 0040F819      56              push esi
    586. 0040F81A      FF92 00070000   call dword ptr ds:[edx+700]                    ; 同关键CALL,运算的字符串换成上面两个字符串
    587. 0040F820      85C0            test eax,eax                                   ; 得到字符串"1021004560005078000000000000459"
    588. 0040F822      7D 12           jge short CrackMe0.0040F836
    589. 0040F824      68 00070000     push 700
    590. 0040F829      68 C43B4000     push CrackMe0.00403BC4
    591. 0040F82E      56              push esi
    592. 0040F82F      50              push eax
    593. 0040F830      FF15 74104000   call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>
    594. 0040F836      8D5E 54         lea ebx,dword ptr ds:[esi+54]
    595. 0040F839      8D55 C8         lea edx,dword ptr ss:[ebp-38]
    596. 0040F83C      8BCB            mov ecx,ebx
    597. 0040F83E      FF15 20104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]  
    598. 0040F844      8D4D DC         lea ecx,dword ptr ss:[ebp-24]
    599. 0040F847      8D55 E0         lea edx,dword ptr ss:[ebp-20]
    600. 0040F84A      51              push ecx
    601. 0040F84B      52              push edx
    602. 0040F84C      6A 02           push 2
    603. 0040F84E      FF15 7C114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>;
    604. 0040F854      83C4 0C         add esp,0C
    605. 0040F857      8D4D C8         lea ecx,dword ptr ss:[ebp-38]
    606. 0040F85A      FF15 24104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]   
    607. 0040F860      66:8B86 8200000>mov ax,word ptr ds:[esi+82]                    ; ax=0x300(768),ds:[esi+80]=0x400(1024)
    608. 0040F867      66:0386 8000000>add ax,word ptr ds:[esi+80]                    ; ax=ax+ds:[esi+80]=0x300+0x400=x700
    609. 0040F86E      0F80 42040000   jo CrackMe0.0040FCB6
    610. 0040F874      50              push eax                                       ; eax=0x700(1792)
    611. 0040F875      FF15 10104000   call dword ptr ds:[<&MSVBVM60.__vbaStrI2>]     ; 整数转为字符串"1792",1792-->"1792"
    612. 0040F87B      8BD0            mov edx,eax
    613. 0040F87D      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    614. 0040F880      FFD7            call edi
    615. 0040F882      8B55 E4         mov edx,dword ptr ss:[ebp-1C]
    616. 0040F885      8D4D DC         lea ecx,dword ptr ss:[ebp-24]
    617. 0040F888      FF15 74114000   call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>]   
    618. 0040F88E      53              push ebx
    619. 0040F88F      FF15 48104000   call dword ptr ds:[<&MSVBVM60.__vbaStrErrVarCo>
    620. 0040F895      8BD0            mov edx,eax
    621. 0040F897      8D4D E0         lea ecx,dword ptr ss:[ebp-20]
    622. 0040F89A      FFD7            call edi
    623. 0040F89C      8B0E            mov ecx,dword ptr ds:[esi]
    624. 0040F89E      8D55 C8         lea edx,dword ptr ss:[ebp-38]
    625. 0040F8A1      52              push edx
    626. 0040F8A2      8D45 DC         lea eax,dword ptr ss:[ebp-24]
    627. 0040F8A5      8D55 E0         lea edx,dword ptr ss:[ebp-20]
    628. 0040F8A8      50              push eax
    629. 0040F8A9      52              push edx
    630. 0040F8AA      56              push esi
    631. 0040F8AB      FF91 00070000   call dword ptr ds:[ecx+700]                    ; 同关键CALL,运算的字符串换成上面两个字符串
    632. 0040F8B1      85C0            test eax,eax                                   ; 得到字符串"1021004560005078000000000000459"
    633. 0040F8B3      7D 12           jge short CrackMe0.0040F8C7
    634. 0040F8B5      68 00070000     push 700
    635. 0040F8BA      68 C43B4000     push CrackMe0.00403BC4
    636. 0040F8BF      56              push esi
    637. 0040F8C0      50              push eax
    638. 0040F8C1      FF15 74104000   call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>
    639. 0040F8C7      8D45 C8         lea eax,dword ptr ss:[ebp-38]
    640. 0040F8CA      50              push eax
    641. 0040F8CB      FF15 28104000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>>
    642. 0040F8D1      8BD0            mov edx,eax                                    ; 真码"1021004560005078000000000000459"
    643. 0040F8D3      8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
    644. 0040F8D6      FFD7            call edi
    645. 0040F8D8      8D4D DC         lea ecx,dword ptr ss:[ebp-24]
    646. 0040F8DB      8D55 E0         lea edx,dword ptr ss:[ebp-20]
    647. 0040F8DE      51              push ecx
    648. 0040F8DF      52              push edx
    649. 0040F8E0      6A 02           push 2
    650. 0040F8E2      FF15 7C114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>
    651. 0040F8E8      83C4 0C         add esp,0C
    652. 0040F8EB      8D4D C8         lea ecx,dword ptr ss:[ebp-38]
    653. 0040F8EE      FF15 24104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]   
    654. 0040F8F4      8B45 E4         mov eax,dword ptr ss:[ebp-1C]
    655. 0040F8F7      50              push eax
    656. 0040F8F8      FF15 2C104000   call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]   ; 获取真码长度,EAX=0x1F(31)
    657. 0040F8FE      8BC8            mov ecx,eax
    658. 0040F900      FF15 D8104000   call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]      
    659. 0040F906      8B1D 90114000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaVarTstNe>
    660. 0040F90C      66:8946 68      mov word ptr ds:[esi+68],ax
    661. 0040F910      B8 01000000     mov eax,1
    662. 0040F915      66:3946 68      cmp word ptr ds:[esi+68],ax
    663. 0040F919      0F8C 10010000   jl CrackMe0.0040FA2F
    664. 0040F91F      8B0E            mov ecx,dword ptr ds:[esi]
    665. 0040F921      56              push esi
    666. 0040F922      FF91 04030000   call dword ptr ds:[ecx+304]
    667. 0040F928      8D55 D8         lea edx,dword ptr ss:[ebp-28]
    668. 0040F92B      50              push eax
    669. 0040F92C      52              push edx
    670. 0040F92D      FF15 8C104000   call dword ptr ds:[<&MSVBVM60.__vbaObjSet>]   
    671. 0040F933      8BF8            mov edi,eax
    672. 0040F935      8D4D E0         lea ecx,dword ptr ss:[ebp-20]
    673. 0040F938      51              push ecx
    674. 0040F939      57              push edi
    675. 0040F93A      8B07            mov eax,dword ptr ds:[edi]
    676. 0040F93C      FF90 A0000000   call dword ptr ds:[eax+A0]
    677. 0040F942      85C0            test eax,eax
    678. 0040F944      DBE2            fclex
    679. 0040F946      7D 12           jge short CrackMe0.0040F95A
    680. 0040F948      68 A0000000     push 0A0
    681. 0040F94D      68 743E4000     push CrackMe0.00403E74
    682. 0040F952      57              push edi
    683. 0040F953      50              push eax
    684. 0040F954      FF15 74104000   call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>
    685. 0040F95A      8B45 E0         mov eax,dword ptr ss:[ebp-20]                  ; 假码"9876543210"
    686. 0040F95D      8B3D AC104000   mov edi,dword ptr ds:[<&MSVBVM60.rtcMidCharVar>
    687. 0040F963      8945 D0         mov dword ptr ss:[ebp-30],eax
    688. 0040F966      8D55 B8         lea edx,dword ptr ss:[ebp-48]
    689. 0040F969      0FBF46 68       movsx eax,word ptr ds:[esi+68]
    690. 0040F96D      52              push edx
    691. 0040F96E      8D4D C8         lea ecx,dword ptr ss:[ebp-38]
    692. 0040F971      50              push eax
    693. 0040F972      8D55 A8         lea edx,dword ptr ss:[ebp-58]
    694. 0040F975      51              push ecx
    695. 0040F976      52              push edx
    696. 0040F977      C745 C0 0100000>mov dword ptr ss:[ebp-40],1
    697. 0040F97E      C745 B8 0200000>mov dword ptr ss:[ebp-48],2
    698. 0040F985      C745 E0 0000000>mov dword ptr ss:[ebp-20],0
    699. 0040F98C      C745 C8 0800000>mov dword ptr ss:[ebp-38],8
    700. 0040F993      FFD7            call edi                                       ; rtcMidCharVar,循环取假码每一个字符
    701. 0040F995      0FBF56 68       movsx edx,word ptr ds:[esi+68]
    702. 0040F999      8D45 E4         lea eax,dword ptr ss:[ebp-1C]
    703. 0040F99C      8D4D 98         lea ecx,dword ptr ss:[ebp-68]
    704. 0040F99F      8985 60FFFFFF   mov dword ptr ss:[ebp-A0],eax
    705. 0040F9A5      51              push ecx
    706. 0040F9A6      8D85 58FFFFFF   lea eax,dword ptr ss:[ebp-A8]
    707. 0040F9AC      52              push edx
    708. 0040F9AD      8D4D 88         lea ecx,dword ptr ss:[ebp-78]
    709. 0040F9B0      50              push eax
    710. 0040F9B1      51              push ecx
    711. 0040F9B2      C745 A0 0100000>mov dword ptr ss:[ebp-60],1
    712. 0040F9B9      C745 98 0200000>mov dword ptr ss:[ebp-68],2
    713. 0040F9C0      C785 58FFFFFF 0>mov dword ptr ss:[ebp-A8],4008
    714. 0040F9CA      FFD7            call edi                                       ; rtcMidCharVar,循环取真码每一个字符
    715. 0040F9CC      8D55 A8         lea edx,dword ptr ss:[ebp-58]
    716. 0040F9CF      8D45 88         lea eax,dword ptr ss:[ebp-78]
    717. 0040F9D2      52              push edx
    718. 0040F9D3      50              push eax
    719. 0040F9D4      FFD3            call ebx                                       ; __vbaVarTstNe,真假码逐位字符进行比较
    720. 0040F9D6      8D4D D8         lea ecx,dword ptr ss:[ebp-28]
    721. 0040F9D9      8BF8            mov edi,eax
    722. 0040F9DB      FF15 E8114000   call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]   
    723. 0040F9E1      8D4D 88         lea ecx,dword ptr ss:[ebp-78]
    724. 0040F9E4      8D55 A8         lea edx,dword ptr ss:[ebp-58]
    725. 0040F9E7      51              push ecx
    726. 0040F9E8      8D45 98         lea eax,dword ptr ss:[ebp-68]
    727. 0040F9EB      52              push edx
    728. 0040F9EC      8D4D B8         lea ecx,dword ptr ss:[ebp-48]
    729. 0040F9EF      50              push eax
    730. 0040F9F0      8D55 C8         lea edx,dword ptr ss:[ebp-38]
    731. 0040F9F3      51              push ecx
    732. 0040F9F4      52              push edx
    733. 0040F9F5      6A 05           push 5
    734. 0040F9F7      FF15 38104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>
    735. 0040F9FD      83C4 18         add esp,18
    736. 0040FA00      66:85FF         test di,di
    737. 0040FA03      75 11           jnz short CrackMe0.0040FA16
    738. 0040FA05      66:8B45 E8      mov ax,word ptr ss:[ebp-18]
    739. 0040FA09      66:05 0100      add ax,1
    740. 0040FA0D      0F80 A3020000   jo CrackMe0.0040FCB6
    741. 0040FA13      8945 E8         mov dword ptr ss:[ebp-18],eax
    742. 0040FA16      66:8B4E 68      mov cx,word ptr ds:[esi+68]
    743. 0040FA1A      83C8 FF         or eax,FFFFFFFF
    744. 0040FA1D      66:03C8         add cx,ax
    745. 0040FA20      0F80 90020000   jo CrackMe0.0040FCB6
    746. 0040FA26      66:894E 68      mov word ptr ds:[esi+68],cx
    747. 0040FA2A    ^ E9 E1FEFFFF     jmp CrackMe0.0040F910
    748. 0040FA2F      8B55 E4         mov edx,dword ptr ss:[ebp-1C]
    749. 0040FA32      52              push edx
    750. 0040FA33      FF15 2C104000   call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]  
    751. 0040FA39      8BC8            mov ecx,eax
    752. 0040FA3B      FF15 D8104000   call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]      
    753. 0040FA41      8B4D E8         mov ecx,dword ptr ss:[ebp-18]
    754. 0040FA44      66:3BC8         cmp cx,ax
    755. 0040FA47      0F85 21010000   jnz CrackMe0.0040FB6E                          ; 暴破点1,NOP掉
    756. 0040FA4D      8B06            mov eax,dword ptr ds:[esi]
    757. 0040FA4F      56              push esi
    758. 0040FA50      FF90 08030000   call dword ptr ds:[eax+308]
    759. 0040FA56      8B1D 8C104000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaObjSet>]
    760. 0040FA5C      8D4D D8         lea ecx,dword ptr ss:[ebp-28]
    761. 0040FA5F      50              push eax
    762. 0040FA60      51              push ecx
    763. 0040FA61      FFD3            call ebx
    764. 0040FA63      8BF8            mov edi,eax
    765. 0040FA65      68 883E4000     push CrackMe0.00403E88                         ; UNICODE "^OK^"
    766. 0040FA6A      57              push edi
    767. 0040FA6B      8B17            mov edx,dword ptr ds:[edi]
    768. 0040FA6D      FF52 54         call dword ptr ds:[edx+54]
    769. 0040FA70      85C0            test eax,eax
    770. 0040FA72      DBE2            fclex
    771. 0040FA74      7D 0F           jge short CrackMe0.0040FA85
    772. .......................................................

    773.                      省略部分代码

    774. .......................................................
    775. 0040FB99      A1 38E04100     mov eax,dword ptr ds:[41E038]
    776. 0040FB9E      85C0            test eax,eax
    777. 0040FBA0      75 10           jnz short CrackMe0.0040FBB2                    ; 暴破点2,NOP掉

    778. 5.屏幕分辨率问题。找出0040F860处的mov ax,word ptr ds:[esi+82]中,地址ds:[esi+82]和ds:[esi+80]中的数值的来源。
    779. 由于ds:[esi+82]=0015C06A,Ctrl+F2重新载入程序,F9运行,
    780. 命令栏输入D 0015C06A,然后在0015C06A下内存写入断点,切换到程序窗口,中断:

    781. 00410EEB      66:8982 8200000>mov word ptr ds:[edx+82],ax                   ; 中断在这里
    782. 00410EF2      8D45 E4         lea eax,dword ptr ss:[ebp-1C]
    783. 00410EF5      50              push eax
    784. 00410EF6      51              push ecx

    785. 向上查找,来到00410CC0处F2下断,Ctrl+F2重新载入程序,F9运行,中断:

    786. 00410CC0      55              push ebp
    787. 00410CC1      8BEC            mov ebp,esp
    788. .......................................................

    789.                      省略部分代码

    790. .......................................................
    791. 00410D93      8B35 08E54100   mov esi,dword ptr ds:[41E508]
    792. 00410D99      8D45 E4         lea eax,dword ptr ss:[ebp-1C]
    793. 00410D9C      50              push eax
    794. 00410D9D      56              push esi
    795. 00410D9E      8B16            mov edx,dword ptr ds:[esi]
    796. 00410DA0      FF52 18         call dword ptr ds:[edx+18]                    ; 关键CALL-1,F7进入
    797. 00410DA3      3BC3            cmp eax,ebx
    798. 00410DA5      DBE2            fclex
    799. 00410DA7      7D 0B           jge short CrackMe0.00410DB4
    800. 00410DA9      6A 18           push 18
    801. 00410DAB      68 50404000     push CrackMe0.00404050
    802. 00410DB0      56              push esi
    803. 00410DB1      50              push eax
    804. 00410DB2      FFD7            call edi
    805. 00410DB4      8B45 E4         mov eax,dword ptr ss:[ebp-1C]
    806. 00410DB7      8D55 DC         lea edx,dword ptr ss:[ebp-24]
    807. 00410DBA      52              push edx
    808. 00410DBB      50              push eax
    809. 00410DBC      8B08            mov ecx,dword ptr ds:[eax]
    810. 00410DBE      8BF0            mov esi,eax
    811. 00410DC0      FF91 80000000   call dword ptr ds:[ecx+80]
    812. 00410DC6      3BC3            cmp eax,ebx
    813. 00410DC8      DBE2            fclex
    814. 00410DCA      7D 0E           jge short CrackMe0.00410DDA
    815. 00410DCC      68 80000000     push 80
    816. 00410DD1      68 70404000     push CrackMe0.00404070
    817. 00410DD6      56              push esi
    818. 00410DD7      50              push eax
    819. 00410DD8      FFD7            call edi
    820. 00410DDA      D945 DC         fld dword ptr ss:[ebp-24]                     ; 载入实数,ss:[0012F918]=15.00000
    821. 00410DDD      8B1D B4114000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaFpI4>]  
    822. 00410DE3      FFD3            call ebx                                      ; 15.00000转为长整型0xF
    823. 00410DE5      D945 E0         fld dword ptr ss:[ebp-20]                     ; 载入实数,ss:[0012F91C]=15360.00
    824. 00410DE8      8BF0            mov esi,eax                                   ; ESI=EAX=0xF
    825. 00410DEA      FFD3            call ebx                                      ; 15360.00转成长整型0x3C00,EAX=0x3C00
    826. 00410DEC      99              cdq
    827. 00410DED      F7FE            idiv esi                                      ; EAX/ESI,商给EAX,余数给EDX
    828. 00410DEF      8BC8            mov ecx,eax                                   ; EAX=0x400,VB默认单位为Twip,转为以像素为单位
    829. 00410DF1      FF15 D8104000   call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]     
    830. 00410DF7      8B4D 08         mov ecx,dword ptr ss:[ebp+8]
    831. 00410DFA      8D55 E4         lea edx,dword ptr ss:[ebp-1C]
    832. 00410DFD      52              push edx
    833. 00410DFE      66:8981 8000000>mov word ptr ds:[ecx+80],ax                   ; AX=0x400保存在地址ds:[ecx+80]处
    834. 00410E05      8D45 E8         lea eax,dword ptr ss:[ebp-18]
    835. 00410E08      50              push eax
    836. .......................................................

    837.                      省略部分代码

    838. .......................................................
    839. 00410EC0      68 88000000     push 88
    840. 00410EC5      68 70404000     push CrackMe0.00404070
    841. 00410ECA      56              push esi
    842. 00410ECB      50              push eax
    843. 00410ECC      FFD7            call edi
    844. 00410ECE      D945 DC         fld dword ptr ss:[ebp-24]                     ; 载入实数,ss:[0012F918]=15.00000
    845. 00410ED1      FFD3            call ebx                                      ; 15.00000转为长整型0xF
    846. 00410ED3      D945 E0         fld dword ptr ss:[ebp-20]                     ; 载入实数,ss:[0012F91C]=11520.00
    847. 00410ED6      8BF0            mov esi,eax
    848. 00410ED8      FFD3            call ebx                                      ; 15360.00转成长整型0x2D00,EAX=0x2D00
    849. 00410EDA      99              cdq
    850. 00410EDB      F7FE            idiv esi                                      ; EAX/ESI,商给EAX,余数给EDX
    851. 00410EDD      8BC8            mov ecx,eax                                   ; ECX=EAX=0x300
    852. 00410EDF      FF15 D8104000   call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]     ; MSVBVM60.__vbaI2I4
    853. 00410EE5      8B55 08         mov edx,dword ptr ss:[ebp+8]
    854. 00410EE8      8D4D E8         lea ecx,dword ptr ss:[ebp-18]
    855. 00410EEB      66:8982 8200000>mov word ptr ds:[edx+82],ax                   ; AX=0x300保存在地址ds:[ecx+80]处
    856. 00410EF2      8D45 E4         lea eax,dword ptr ss:[ebp-1C]
    857. 00410EF5      50              push eax
    858. 00410EF6      51              push ecx

    859. 进入00410DA0处的关键CALL-1,来到:

    860. 660C8643      8B4C24 04       mov ecx,dword ptr ss:[esp+4]
    861. 660C8647      E8 D4FEFFFF     call MSVBVM60.660C8520                        ; 关键CALL-2,F7进入
    862. 660C864C      8B4C24 08       mov ecx,dword ptr ss:[esp+8]
    863. 660C8650      50              push eax
    864. 660C8651      8901            mov dword ptr ds:[ecx],eax
    865. 660C8653      8B08            mov ecx,dword ptr ds:[eax]

    866. 进入660C8647 处的关键CALL-1,来到:

    867. 660C8520      55              push ebp
    868. 660C8521      8BEC            mov ebp,esp
    869. 660C8523      51              push ecx
    870. 660C8524      8379 40 00      cmp dword ptr ds:[ecx+40],0
    871. 660C8528      56              push esi
    872. 660C8529      8D71 40         lea esi,dword ptr ds:[ecx+40]
    873. 660C852C      75 2F           jnz short MSVBVM60.660C855D
    874. 660C852E      6A 01           push 1
    875. 660C8530      6A FF           push -1
    876. 660C8532      6A 02           push 2
    877. 660C8534      8D45 FE         lea eax,dword ptr ss:[ebp-2]
    878. 660C8537      6A 00           push 0
    879. 660C8539      50              push eax
    880. 660C853A      68 201B0166     push MSVBVM60.66011B20                        ; ASCII "Screen",屏幕分辨率
    881. 660C853F      8065 FF 00      and byte ptr ss:[ebp-1],0
    882. 660C8543      FF71 0C         push dword ptr ds:[ecx+C]
    883. 660C8546      C645 FE 0E      mov byte ptr ss:[ebp-2],0E
    884. 660C854A      56              push esi
    885. 660C854B      FF71 34         push dword ptr ds:[ecx+34]
    886. 660C854E      E8 0C1FF9FF     call MSVBVM60.6605A45F
    887. 660C8553      85C0            test eax,eax
    888. 660C8555      74 06           je short MSVBVM60.660C855D
    889. 660C8557      50              push eax
    890. 660C8558      E8 4198F8FF     call MSVBVM60.66051D9E
    891. 660C855D      8B06            mov eax,dword ptr ds:[esi]
    892. 660C855F      5E              pop esi
    893. 660C8560      C9              leave
    894. 660C8561      C3              retn

    895. -----------------------------------------------------------------------------------------------
    896. 【破解总结】
    897. 1.取系统所在盘的卷标号,去掉中间的"-",得到字符串st1.
    898. 2.循环取字符串st1中每一位字符的ASCII值的10进制形式,形成新的字符串st2.
    899. 3.在字符串st2后面补上6,直到补足0x1E(30)位,形成新的字符串st3.
    900. 4.内置长度为0x1E(30)位的字符串"99999……",记为字符串st4.
    901. 5.取字符串st3和st4上的数值进行相加,形成新字符串st5,作为硬盘号前半部分.
    902. 6.取字符串st5的数值*2形成新字符串st6,作为硬盘号后半部分.
    903. 7.从硬盘号第5位开始取0x1E(30)位字符,记为字符串st7.
    904. 8.取硬盘号右边0x1E(30)位字符,记为字符串st8.
    905. 9.取字符串st7和st8上的数值进行相加,结果再加上屏幕分辨率的两个数值(以像素为单位)即为注册码.
    906. 一组可用注册码:
    907. Hard Code:16856497051497056666666666666653371299410299411333333333333330
    908. Serial:1021004560005078000000000000459

    909. 暴破更改以下位置:
    910. 0040FA47                      jnz CrackMe0.0040FB6E                  ; jnz====>NOP
    911. 0040FBA0                      jnz short CrackMe0.0040FBB2            ; jnz====>NOP

    912. 内存注册机:

    913. 中断地址:0040F8D3
    914. 中断次数:1
    915. 第一字节:8D
    916. 指令长度:3

    917. 内存方式--->寄存器:EDX,同时勾选"宽字符串"

    918. 【VB注册机源码】
    919. Private Sub Generate_Click()

    920. Dim HardCode As String
    921. Dim Serial As String
    922. Dim str1 As String
    923. Dim str2 As String
    924. Dim str3 As String
    925. Dim str4 As String

    926. Dim i As Integer
    927. Dim length As Integer
    928. Dim Number As Integer
    929. Dim Number1 As Integer
    930. Dim Number2 As Integer
    931. Dim Number3 As Integer
    932. Dim ResWidth As Integer
    933. Dim ResHeight As Integer
    934. Dim ResPixel As Integer

    935. HardCode = Text1.Text
    936. Number3 = 0

    937. str1 = Mid(HardCode, 5, 30)
    938. str2 = Right(HardCode, 30)

    939. For i = 1 To 30

    940.     Number1 = Mid(str1, 30 - i + 1, 1)
    941.     Number2 = Mid(str2, 30 - i + 1, 1)
    942.     Number = Number1 + Number2 + Number3
    943.    
    944.     If (Number > 9) Then
    945.        Number = Number - 10
    946.        Number3 = 1
    947.     Else
    948.        Number3 = 0
    949.     End If
    950.       
    951.    str3 = Number & str3
    952. Next i

    953. If (Number3 = 1) Then str3 = Number3 & str3

    954. Number3 = 0
    955. length = Len(str3)

    956. ResWidth = Screen.Width \ Screen.TwipsPerPixelX
    957. ResHeight = Screen.Height \ Screen.TwipsPerPixelY
    958. ResPixel = ResWidth + ResHeight

    959. str4 = ResPixel

    960. For i = 1 To length - 4
    961.    str4 = "0" & str4
    962. Next i

    963. For i = 1 To length

    964.     Number1 = Mid(str3, length - i + 1, 1)
    965.     Number2 = Mid(str4, length - i + 1, 1)
    966.     Number = Number1 + Number2 + Number3
    967.    
    968.     If (Number > 9) Then
    969.        Number = Number - 10
    970.        Number3 = 1
    971.     Else
    972.        Number3 = 0
    973.     End If
    974.         
    975.    Serial = Number & Serial
    976. Next i

    977. If (Number3 = 1) Then Serial = Number3 & Serial

    978. Text2.Text = Serial

    979. End Sub

    980. -----------------------------------------------------------------------------------------------
    981. 【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    复制代码

    [ 本帖最后由 hrbx 于 2006-3-29 04:22 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-3-27 12:37:57 | 显示全部楼层
    兄弟分析得好,建议深入分析一下~~

    你将 分辨率调成 800*600 试试注册机~~
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2006-3-27 16:18:16 | 显示全部楼层
    谢谢坛主提示!
    用到2个参数为屏幕分辨率的值,已更改!
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-3-28 07:43:22 | 显示全部楼层
    原帖由 hrbx 于 2006-3-27 08:18 发表
    谢谢坛主提示!
    用到2个参数为屏幕分辨率的值,已更改!



    再完善一下 就是精华了~~

    想必你的系统是装再C盘吧?  聪明的你一定想到了
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2006-3-28 12:41:52 | 显示全部楼层
    再次谢谢指点!
    不知“再完善一下”指哪方面,
    程序分析,还是注册机有误?
    我的系统的确是装在C盘,跟这有关?
    取系统所在盘的卷标号?而不一定是C盘?
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-3-28 16:22:09 | 显示全部楼层
    原帖由 hrbx 于 2006-3-28 04:41 发表
    再次谢谢指点!
    不知“再完善一下”指哪方面,
    程序分析,还是注册机有误?
    我的系统的确是装在C盘,跟这有关?
    取系统所在盘的卷标号?而不一定是C盘?



    确实!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2006-3-29 12:23:46 | 显示全部楼层
    明白了!
    再次谢谢指点!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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