飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5556|回复: 10

HappyTown CrackMe_0008 简单算法分析

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

    [LV.1]初来乍到

    发表于 2005-12-19 00:02:14 | 显示全部楼层 |阅读模式

    1. 【破文标题】HappyTown CrackMe_0008 简单算法分析
    2. 破解作者】hrbx
    3. 【作者主页】hrbx.ys168.com
    4. 【作者邮箱】[email protected]
    5. 【破解平台】WinXP
    6. 【使用工具】flyOD1.10、Peid
    7. 【破解日期】2005-12-18
    8. 【软件名称】HappyTown CrackMe_0008
    9. 【软件大小】471KB
    10. 【下载地址】看雪论坛
    11. 【加壳方式】未知
    12. 【软件简介】HappyTown CrackMe_0008
    13. -----------------------------------------------------------------------------------------------
    14. 【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    15. -----------------------------------------------------------------------------------------------
    16. 【破解过程】
    17. 1.脱壳。用Peid扫描程序,显示为:Not a valid PE file。OD载入,来到:

    18. 00455D1D > $  40                inc eax                                        ;  OD载入后,来到这里
    19. 00455D1E   .  41                inc ecx
    20. 00455D1F   .^ 0F84 03FFFFFF     je CrackMe_.00455C28
    21. 00455D25   .  C1E1 02           shl ecx,2
    22. 00455D28   .  C1E8 03           shr eax,3
    23. 00455D2B   .  61                popad
    24. 00455D2C   .  67:64:FF36 0000   push dword ptr fs:[0]                          ;  F8到这里,ESP变化了
    25. 00455D32   .  55                push ebp
    26. 00455D33   .  8BEC              mov ebp,esp
    27. 00455D35   .  6A FF             push -1

    28. F8走到00455D2C处,观察寄存器:

    29. EAX FFFFFFFF
    30. ECX 8053D88F
    31. EDX 0012FFC8
    32. EBX F1578CF0
    33. ESP 0012FFE4                <========ESP变成0012FFE4
    34. EBP FFFFFFFF
    35. ESI 00000001
    36. EDI 77E614C7 kernel32.77E614C7
    37. EIP 00455D2C CrackMe_.00455D2C

    38. 根据ESP定律,命令栏下断 hr 0012ffe4,回车,F9运行,来到:

    39. 00455D50   .  8BE8              mov ebp,eax                                    ;  F9运行后来这里,F8两次
    40. 00455D52   .  6A 70             push 70
    41. 00455D54   .  6A FF             push -1                                        ;  F8到这里,ESP变化了
    42. 00455D56   .  E8 23000000       call CrackMe_.00455D7E
    43. 00455D5B   .^ E9 B8FEFFFF       jmp CrackMe_.00455C18

    44. 再F8两次走到00455D56处,观察寄存器:

    45. EAX 0012FFE0
    46. ECX 8053D88F
    47. EDX 0012FFC8
    48. EBX F3B50CF0
    49. ESP 0012FFE0               <========ESP变成0012FFE0
    50. EBP 0012FFE0
    51. ESI 00000000
    52. EDI 77E614C7 kernel32.77E614C7
    53. EIP 00455D54 CrackMe_.00455D54

    54. 根据ESP定律,命令栏下断 hr 0012ffe0,回车,F9运行,来到:

    55. 00455D93  |.  896C24 10         mov dword ptr ss:[esp+10],ebp                  ;  F9后中断在这里,F8往下走
    56. 00455D97  |.  8D6C24 10         lea ebp,dword ptr ss:[esp+10]
    57. 00455D9B  |.  2BE0              sub esp,eax
    58. 00455D9D  |.  53                push ebx
    59. 00455D9E  |.  56                push esi
    60. 00455D9F  |.  57                push edi
    61. 00455DA0  |.  8B45 F8           mov eax,dword ptr ss:[ebp-8]
    62. 00455DA3  |.  8965 E8           mov dword ptr ss:[ebp-18],esp
    63. 00455DA6  |.  50                push eax
    64. 00455DA7  |.  8B45 FC           mov eax,dword ptr ss:[ebp-4]
    65. 00455DAA  |.  C745 FC FFFFFFFF  mov dword ptr ss:[ebp-4],-1
    66. 00455DB1  |.  8945 F8           mov dword ptr ss:[ebp-8],eax
    67. 00455DB4  \.  C3                retn

    68. 继续F8,直到来到:

    69. 00455C18   > /55                push ebp                                       ;  OEP,可以DUMP
    70. 00455C19   . |8BEC              mov ebp,esp
    71. 00455C1B   . |83C4 F0           add esp,-10
    72. 00455C1E   . |53                push ebx
    73. 00455C1F   . |B8 305A4500       mov eax,CrackMe_.00455A30
    74. 00455C24     |E8                db E8

    75. 用LordPE完整脱壳,SuperImportREC填入00055C18,获取输入表,全部有效,修复抓取文件,可以运行了。
    76. 再次用Peid核心扫描,显示为:Borland Delphi 6.0 - 7.0。
    77. 2.试运行。输入注册信息,点Check按钮后程序没有任何提示。通过DeDe分析得知,确定按钮事件开始地址为00455338。
    78. 3.追出算法。OD载入,Ctrl+G,输入 00455338,回车,在00455338处按F2下断,F9运行,输入注册信息:

    79. ================================
    80. Name:hrbxhui
    81. Serial:9876543210
    82. ================================

    83. 点击Check按钮立即中断:

    84. 00455338   /.  55          push ebp                             ;  在此下断,中断后F8往下走
    85. 00455339   |.  8BEC            mov ebp,esp
    86. 0045533B   |.  B9 06000000     mov ecx,6
    87. 00455340   |>  6A 00           /push 0
    88. 00455342   |.  6A 00           |push 0
    89. 00455344   |.  49              |dec ecx
    90. 00455345   |.^ 75 F9           \jnz short dumped_.00455340
    91. 00455347   |.  53              push ebx
    92. 00455348   |.  56              push esi
    93. 00455349   |.  57              push edi
    94. 0045534A   |.  8BF8            mov edi,eax
    95. 0045534C   |.  BB 148C4500     mov ebx,dumped_.00458C14
    96. 00455351   |.  BE 108C4500     mov esi,dumped_.00458C10
    97. 00455356   |.  33C0            xor eax,eax
    98. 00455358   |.  55              push ebp
    99. 00455359   |.  68 77594500     push dumped_.00455977
    100. 0045535E   |.  64:FF30         push dword ptr fs:[eax]
    101. 00455361   |.  64:8920         mov dword ptr fs:[eax],esp
    102. 00455364   |.  8D45 E8         lea eax,dword ptr ss:[ebp-18]
    103. 00455367   |.  BA 90594500     mov edx,dumped_.00455990         
    104. 0045536C   |.  E8 7BEBFAFF     call dumped_.00403EEC
    105. 00455371   |.  8D45 E4         lea eax,dword ptr ss:[ebp-1C]
    106. 00455374   |.  BA A0594500     mov edx,dumped_.004559A0         
    107. 00455379   |.  E8 6EEBFAFF     call dumped_.00403EEC
    108. 0045537E   |.  8D45 E0         lea eax,dword ptr ss:[ebp-20]
    109. 00455381   |.  BA B0594500     mov edx,dumped_.004559B0        
    110. 00455386   |.  E8 61EBFAFF     call dumped_.00403EEC
    111. 0045538B   |.  8D55 FC         lea edx,dword ptr ss:[ebp-4]      ;  用户名"hrbxhui"
    112. 0045538E   |.  8B87 04030000   mov eax,dword ptr ds:[edi+304]
    113. 00455394   |.  E8 0FE6FDFF     call dumped_.004339A8
    114. 00455399   |.  BA 04000000     mov edx,4                         ;  EDX=4
    115. 0045539E   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    116. 004553A1   |.  E8 CEFAFFFF     call dumped_.00454E74             ;  比较用户名长度是否大于4位
    117. 004553A6   |.  803B 00         cmp byte ptr ds:[ebx],0
    118. 004553A9   |.  0F84 AD050000   je dumped_.0045595C               ;  暴破点1,NOP掉
    119. 004553AF   |.  BA 10000000     mov edx,10                        ;  EDX=0X10(16)
    120. 004553B4   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    121. 004553B7   |.  E8 18FBFFFF     call dumped_.00454ED4             ;  比较用户名长度是否小于16位
    122. 004553BC   |.  803B 00         cmp byte ptr ds:[ebx],0
    123. 004553BF   |.  0F84 97050000   je dumped_.0045595C               ;  暴破点2,NOP掉
    124. 004553C5   |.  8D55 F4         lea edx,dword ptr ss:[ebp-C]      
    125. 004553C8   |.  8B87 0C030000   mov eax,dword ptr ds:[edi+30C]
    126. 004553CE   |.  E8 D5E5FDFF     call dumped_.004339A8
    127. 004553D3   |.  BA 0C000000     mov edx,0C                        ;  EDX=0XC
    128. 004553D8   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]      ;  假码"9876543210"
    129. 004553DB   |.  E8 54FBFFFF     call dumped_.00454F34             ;  比较注册码是否等于0xC(12)位
    130. 004553E0   |.  803B 00         cmp byte ptr ds:[ebx],0
    131. 004553E3   |.  0F84 73050000   je dumped_.0045595C               ;  暴破点3,NOP掉
    132. 004553E9   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    133. 004553EC   |.  50              push eax
    134. 004553ED   |.  B9 06000000     mov ecx,6                         ;  ECX=6
    135. 004553F2   |.  BA 01000000     mov edx,1                         ;  EDX=1
    136. 004553F7   |.  8B06            mov eax,dword ptr ds:[esi]        ;  固定字符串"ORACLE-BenQ-HP-IBM-SIEMENS-CISCO SYSTEMS-                                                                       ;  intel-Sun-DELL-SYBASE-Maxtor-lenovo"
    137. 004553F9   |.  E8 76EFFAFF     call dumped_.00404374             ;  从固定字符串第1位开始起取6位,即第1段"ORACLE"
    138. 004553FE   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]      ;  EAX="ORACLE"
    139. 00455401   |.  E8 AEF8FFFF     call dumped_.00454CB4             ;  "ORACLE"各位字符的ASCII值相加,EAX=0X1B6
    140. 00455406   |.  50              push eax                          
    141. 00455407   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]      ;  用户名"hrbxhui"
    142. 0045540A   |.  E8 A5F8FFFF     call dumped_.00454CB4             ;  用户名"hrbxhui"各位字符的ASCII值相加,EDX=0X2FA
    143. 0045540F   |.  5A              pop edx                           
    144. 00455410   |.  E8 47FAFFFF     call dumped_.00454E5C             ;  EAX=EAX xor EDX=0X34C
    145. 00455415   |.  BA 0A000000     mov edx,0A                        ;  EDX=0XA
    146. 0045541A   |.  E8 45FAFFFF     call dumped_.00454E64             ;  EAX/EDX,并将余数EDX给EAX,EAX=4
    147. 0045541F   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    148. 00455422   |.  E8 F928FBFF     call dumped_.00407D20
    149. 00455427   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    150. 0045542A   |.  50              push eax
    151. 0045542B   |.  B9 01000000     mov ecx,1                         ;  ECX=1
    152. 00455430   |.  BA 01000000     mov edx,1                         ;  EDX=1
    153. 00455435   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]      ;  假码"987654321012"
    154. 00455438   |.  E8 37EFFAFF     call dumped_.00404374             ;  从假码第1位开始起取1位,即"9"
    155. 0045543D   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]     ;  ss:[ebp-10]=0x34("4")
    156. 00455440   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]     ;  ss:[ebp-14]=0x39("9")
    157. 00455443   |.  E8 4CFBFFFF     call dumped_.00454F94             ;  比较是否相等
    158. 00455448   |.  803B 00         cmp byte ptr ds:[ebx],0
    159. 0045544B   |.  0F84 0B050000   je dumped_.0045595C               ;  暴破点4,NOP掉
    160. 00455451   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    161. 00455454   |.  50              push eax
    162. 00455455   |.  B9 04000000     mov ecx,4                         ;  ECX=4
    163. 0045545A   |.  BA 08000000     mov edx,8                         ;  EDX=8
    164. 0045545F   |.  8B06            mov eax,dword ptr ds:[esi]        ;  固定字符串"ORACLE-BenQ-HP-IBM-SIEMENS-CISCO SYSTEMS-                                                                       ;  intel-Sun-DELL-SYBASE-Maxtor-lenovo"
    165. 00455461   |.  E8 0EEFFAFF     call dumped_.00404374             ;  从固定字符串第8位开始起取4位,即第2段"BenQ"
    166. 00455466   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]      ;  EAX="BenQ"
    167. 00455469   |.  E8 46F8FFFF     call dumped_.00454CB4             ;  "BenQ"各位字符的ASCII值相加, EAX=0X166
    168. 0045546E   |.  50              push eax                          
    169. 0045546F   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]      ;  用户名"hrbxhui"
    170. 00455472   |.  E8 3DF8FFFF     call dumped_.00454CB4             ;  用户名"hrbxhui"各位字符的ASCII值相加, EDX=0X2FA
    171. 00455477   |.  5A              pop edx                           
    172. 00455478   |.  E8 E3F9FFFF     call dumped_.00454E60             ;  EAX=EAX and EDX=0X62
    173. 0045547D   |.  BA 0A000000     mov edx,0A                        ;  EDX=0XA
    174. 00455482   |.  E8 DDF9FFFF     call dumped_.00454E64             ;  EAX/EDX,并将余数EDX给EAX,EAX=8
    175. 00455487   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    176. 0045548A   |.  E8 9128FBFF     call dumped_.00407D20
    177. 0045548F   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    178. 00455492   |.  50              push eax
    179. 00455493   |.  B9 01000000     mov ecx,1                         ;  ECX=1
    180. 00455498   |.  BA 02000000     mov edx,2                         ;  EDX=2
    181. 0045549D   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]      ;  假码"987654321012"
    182. 004554A0   |.  E8 CFEEFAFF     call dumped_.00404374             ;  从假码第2位开始起取1位,即"8"
    183. 004554A5   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]     ;  ss:[ebp-10]=0x38("8")
    184. 004554A8   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]     ;  ss:[ebp-14]=0x38("8")
    185. 004554AB   |.  E8 E4FAFFFF     call dumped_.00454F94             ;  比较是否相等
    186. 004554B0   |.  803B 00         cmp byte ptr ds:[ebx],0
    187. 004554B3   |.  0F84 A3040000   je dumped_.0045595C               ;  暴破点5,NOP掉
    188. 004554B9   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]      
    189. 004554BC   |.  50              push eax                          ;  以下过程大致相同,故简略注释
    190. 004554BD   |.  B9 02000000     mov ecx,2                         ;  ECX=2
    191. 004554C2   |.  BA 0D000000     mov edx,0D                        ;  EDX=0XD
    192. 004554C7   |.  8B06            mov eax,dword ptr ds:[esi]
    193. 004554C9   |.  E8 A6EEFAFF     call dumped_.00404374             ;  从固定字符串第0XD位开始起取2位,即第3段"HP"
    194. 004554CE   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    195. 004554D1   |.  E8 DEF7FFFF     call dumped_.00454CB4
    196. 004554D6   |.  50              push eax
    197. 004554D7   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    198. 004554DA   |.  E8 D5F7FFFF     call dumped_.00454CB4
    199. 004554DF   |.  5A              pop edx
    200. 004554E0   |.  E8 7BF9FFFF     call dumped_.00454E60             ;  EAX=EAX and EDX
    201. 004554E5   |.  BA 0A000000     mov edx,0A
    202. 004554EA   |.  E8 75F9FFFF     call dumped_.00454E64
    203. 004554EF   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    204. 004554F2   |.  E8 2928FBFF     call dumped_.00407D20
    205. 004554F7   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    206. 004554FA   |.  50              push eax
    207. 004554FB   |.  B9 01000000     mov ecx,1
    208. 00455500   |.  BA 03000000     mov edx,3
    209. 00455505   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    210. 00455508   |.  E8 67EEFAFF     call dumped_.00404374
    211. 0045550D   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    212. 00455510   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    213. 00455513   |.  E8 7CFAFFFF     call dumped_.00454F94
    214. 00455518   |.  803B 00         cmp byte ptr ds:[ebx],0
    215. 0045551B   |.  0F84 3B040000   je dumped_.0045595C               ;  暴破点6,NOP掉
    216. 00455521   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    217. 00455524   |.  50              push eax
    218. 00455525   |.  B9 03000000     mov ecx,3
    219. 0045552A   |.  BA 10000000     mov edx,10
    220. 0045552F   |.  8B06            mov eax,dword ptr ds:[esi]
    221. 00455531   |.  E8 3EEEFAFF     call dumped_.00404374
    222. 00455536   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    223. 00455539   |.  E8 76F7FFFF     call dumped_.00454CB4
    224. 0045553E   |.  50              push eax
    225. 0045553F   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    226. 00455542   |.  E8 6DF7FFFF     call dumped_.00454CB4
    227. 00455547   |.  5A              pop edx
    228. 00455548   |.  E8 0FF9FFFF     call dumped_.00454E5C             ;  EAX=EAX xor EDX
    229. 0045554D   |.  BA 0A000000     mov edx,0A
    230. 00455552   |.  E8 0DF9FFFF     call dumped_.00454E64
    231. 00455557   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    232. 0045555A   |.  E8 C127FBFF     call dumped_.00407D20
    233. 0045555F   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    234. 00455562   |.  50              push eax
    235. 00455563   |.  B9 01000000     mov ecx,1
    236. 00455568   |.  BA 04000000     mov edx,4
    237. 0045556D   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    238. 00455570   |.  E8 FFEDFAFF     call dumped_.00404374
    239. 00455575   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    240. 00455578   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    241. 0045557B   |.  E8 14FAFFFF     call dumped_.00454F94
    242. 00455580   |.  803B 00         cmp byte ptr ds:[ebx],0
    243. 00455583   |.  0F84 D3030000   je dumped_.0045595C               ;  暴破点7,NOP掉
    244. 00455589   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    245. 0045558C   |.  50              push eax
    246. 0045558D   |.  B9 07000000     mov ecx,7
    247. 00455592   |.  BA 14000000     mov edx,14
    248. 00455597   |.  8B06            mov eax,dword ptr ds:[esi]
    249. 00455599   |.  E8 D6EDFAFF     call dumped_.00404374
    250. 0045559E   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    251. 004555A1   |.  E8 0EF7FFFF     call dumped_.00454CB4
    252. 004555A6   |.  50              push eax
    253. 004555A7   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    254. 004555AA   |.  E8 05F7FFFF     call dumped_.00454CB4
    255. 004555AF   |.  5A              pop edx
    256. 004555B0   |.  E8 A7F8FFFF     call dumped_.00454E5C             ;  EAX=EAX xor EDX
    257. 004555B5   |.  BA 07000000     mov edx,7
    258. 004555BA   |.  E8 A5F8FFFF     call dumped_.00454E64
    259. 004555BF   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    260. 004555C2   |.  E8 5927FBFF     call dumped_.00407D20
    261. 004555C7   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    262. 004555CA   |.  50              push eax
    263. 004555CB   |.  B9 01000000     mov ecx,1
    264. 004555D0   |.  BA 05000000     mov edx,5
    265. 004555D5   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    266. 004555D8   |.  E8 97EDFAFF     call dumped_.00404374
    267. 004555DD   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    268. 004555E0   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    269. 004555E3   |.  E8 ACF9FFFF     call dumped_.00454F94
    270. 004555E8   |.  803B 00         cmp byte ptr ds:[ebx],0
    271. 004555EB   |.  0F84 6B030000   je dumped_.0045595C               ;  暴破点8,NOP掉
    272. 004555F1   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    273. 004555F4   |.  50              push eax
    274. 004555F5   |.  B9 0D000000     mov ecx,0D
    275. 004555FA   |.  BA 1C000000     mov edx,1C
    276. 004555FF   |.  8B06            mov eax,dword ptr ds:[esi]
    277. 00455601   |.  E8 6EEDFAFF     call dumped_.00404374
    278. 00455606   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    279. 00455609   |.  E8 A6F6FFFF     call dumped_.00454CB4
    280. 0045560E   |.  50              push eax
    281. 0045560F   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    282. 00455612   |.  E8 9DF6FFFF     call dumped_.00454CB4
    283. 00455617   |.  5A              pop edx
    284. 00455618   |.  E8 43F8FFFF     call dumped_.00454E60             ;  EAX=EAX and EDX
    285. 0045561D   |.  BA 09000000     mov edx,9                         ;  EDX=9
    286. 00455622   |.  E8 3DF8FFFF     call dumped_.00454E64
    287. 00455627   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    288. 0045562A   |.  E8 F126FBFF     call dumped_.00407D20
    289. 0045562F   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    290. 00455632   |.  50              push eax
    291. 00455633   |.  B9 01000000     mov ecx,1
    292. 00455638   |.  BA 06000000     mov edx,6
    293. 0045563D   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    294. 00455640   |.  E8 2FEDFAFF     call dumped_.00404374
    295. 00455645   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    296. 00455648   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    297. 0045564B   |.  E8 44F9FFFF     call dumped_.00454F94
    298. 00455650   |.  803B 00         cmp byte ptr ds:[ebx],0
    299. 00455653   |.  0F84 03030000   je dumped_.0045595C               ;  暴破点9,NOP掉
    300. 00455659   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    301. 0045565C   |.  50              push eax
    302. 0045565D   |.  B9 05000000     mov ecx,5
    303. 00455662   |.  BA 2A000000     mov edx,2A
    304. 00455667   |.  8B06            mov eax,dword ptr ds:[esi]
    305. 00455669   |.  E8 06EDFAFF     call dumped_.00404374
    306. 0045566E   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    307. 00455671   |.  E8 3EF6FFFF     call dumped_.00454CB4
    308. 00455676   |.  50              push eax
    309. 00455677   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    310. 0045567A   |.  E8 35F6FFFF     call dumped_.00454CB4
    311. 0045567F   |.  5A              pop edx
    312. 00455680   |.  E8 DBF7FFFF     call dumped_.00454E60             ;  EAX=EAX and EDX
    313. 00455685   |.  BA 0A000000     mov edx,0A
    314. 0045568A   |.  E8 D5F7FFFF     call dumped_.00454E64
    315. 0045568F   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    316. 00455692   |.  E8 8926FBFF     call dumped_.00407D20
    317. 00455697   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    318. 0045569A   |.  50              push eax
    319. 0045569B   |.  B9 01000000     mov ecx,1
    320. 004556A0   |.  BA 07000000     mov edx,7
    321. 004556A5   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    322. 004556A8   |.  E8 C7ECFAFF     call dumped_.00404374
    323. 004556AD   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    324. 004556B0   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    325. 004556B3   |.  E8 DCF8FFFF     call dumped_.00454F94
    326. 004556B8   |.  803B 00         cmp byte ptr ds:[ebx],0
    327. 004556BB   |.  0F84 9B020000   je dumped_.0045595C               ;  暴破点10,NOP掉
    328. 004556C1   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    329. 004556C4   |.  50              push eax
    330. 004556C5   |.  B9 03000000     mov ecx,3
    331. 004556CA   |.  BA 30000000     mov edx,30
    332. 004556CF   |.  8B06            mov eax,dword ptr ds:[esi]
    333. 004556D1   |.  E8 9EECFAFF     call dumped_.00404374
    334. 004556D6   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    335. 004556D9   |.  E8 D6F5FFFF     call dumped_.00454CB4
    336. 004556DE   |.  50              push eax
    337. 004556DF   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    338. 004556E2   |.  E8 CDF5FFFF     call dumped_.00454CB4
    339. 004556E7   |.  5A              pop edx
    340. 004556E8   |.  E8 6FF7FFFF     call dumped_.00454E5C             ;  EAX=EAX xor EDX
    341. 004556ED   |.  BA 09000000     mov edx,9                         ;  EDX=9
    342. 004556F2   |.  E8 6DF7FFFF     call dumped_.00454E64
    343. 004556F7   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    344. 004556FA   |.  E8 2126FBFF     call dumped_.00407D20
    345. 004556FF   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    346. 00455702   |.  50              push eax
    347. 00455703   |.  B9 01000000     mov ecx,1
    348. 00455708   |.  BA 08000000     mov edx,8
    349. 0045570D   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    350. 00455710   |.  E8 5FECFAFF     call dumped_.00404374
    351. 00455715   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    352. 00455718   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    353. 0045571B   |.  E8 74F8FFFF     call dumped_.00454F94
    354. 00455720   |.  803B 00         cmp byte ptr ds:[ebx],0
    355. 00455723   |.  0F84 33020000   je dumped_.0045595C               ;  暴破点11,NOP掉
    356. 00455729   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    357. 0045572C   |.  50              push eax
    358. 0045572D   |.  B9 04000000     mov ecx,4
    359. 00455732   |.  BA 34000000     mov edx,34
    360. 00455737   |.  8B06            mov eax,dword ptr ds:[esi]
    361. 00455739   |.  E8 36ECFAFF     call dumped_.00404374
    362. 0045573E   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    363. 00455741   |.  E8 6EF5FFFF     call dumped_.00454CB4
    364. 00455746   |.  50              push eax
    365. 00455747   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    366. 0045574A   |.  E8 65F5FFFF     call dumped_.00454CB4
    367. 0045574F   |.  5A              pop edx
    368. 00455750   |.  E8 07F7FFFF     call dumped_.00454E5C             ;  EAX=EAX xor EDX
    369. 00455755   |.  BA 07000000     mov edx,7
    370. 0045575A   |.  E8 05F7FFFF     call dumped_.00454E64
    371. 0045575F   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    372. 00455762   |.  E8 B925FBFF     call dumped_.00407D20
    373. 00455767   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    374. 0045576A   |.  50              push eax
    375. 0045576B   |.  B9 01000000     mov ecx,1
    376. 00455770   |.  BA 09000000     mov edx,9
    377. 00455775   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    378. 00455778   |.  E8 F7EBFAFF     call dumped_.00404374
    379. 0045577D   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    380. 00455780   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    381. 00455783   |.  E8 0CF8FFFF     call dumped_.00454F94
    382. 00455788   |.  803B 00         cmp byte ptr ds:[ebx],0
    383. 0045578B   |.  0F84 CB010000   je dumped_.0045595C               ;  暴破点12,NOP掉
    384. 00455791   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    385. 00455794   |.  50              push eax
    386. 00455795   |.  B9 06000000     mov ecx,6
    387. 0045579A   |.  BA 39000000     mov edx,39
    388. 0045579F   |.  8B06            mov eax,dword ptr ds:[esi]
    389. 004557A1   |.  E8 CEEBFAFF     call dumped_.00404374
    390. 004557A6   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    391. 004557A9   |.  E8 06F5FFFF     call dumped_.00454CB4
    392. 004557AE   |.  50              push eax
    393. 004557AF   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    394. 004557B2   |.  E8 FDF4FFFF     call dumped_.00454CB4
    395. 004557B7   |.  5A              pop edx
    396. 004557B8   |.  E8 9FF6FFFF     call dumped_.00454E5C             ;  EAX=EAX xor EDX
    397. 004557BD   |.  BA 0A000000     mov edx,0A
    398. 004557C2   |.  E8 9DF6FFFF     call dumped_.00454E64
    399. 004557C7   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    400. 004557CA   |.  E8 5125FBFF     call dumped_.00407D20
    401. 004557CF   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    402. 004557D2   |.  50              push eax
    403. 004557D3   |.  B9 01000000     mov ecx,1
    404. 004557D8   |.  BA 0A000000     mov edx,0A
    405. 004557DD   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    406. 004557E0   |.  E8 8FEBFAFF     call dumped_.00404374
    407. 004557E5   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    408. 004557E8   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    409. 004557EB   |.  E8 A4F7FFFF     call dumped_.00454F94
    410. 004557F0   |.  803B 00         cmp byte ptr ds:[ebx],0
    411. 004557F3   |.  0F84 63010000   je dumped_.0045595C               ;  暴破点13,NOP掉
    412. 004557F9   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    413. 004557FC   |.  50              push eax
    414. 004557FD   |.  B9 06000000     mov ecx,6
    415. 00455802   |.  BA 40000000     mov edx,40
    416. 00455807   |.  8B06            mov eax,dword ptr ds:[esi]
    417. 00455809   |.  E8 66EBFAFF     call dumped_.00404374
    418. 0045580E   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    419. 00455811   |.  E8 9EF4FFFF     call dumped_.00454CB4
    420. 00455816   |.  50              push eax
    421. 00455817   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    422. 0045581A   |.  E8 95F4FFFF     call dumped_.00454CB4
    423. 0045581F   |.  5A              pop edx
    424. 00455820   |.  E8 3BF6FFFF     call dumped_.00454E60             ;  EAX=EAX and EDX
    425. 00455825   |.  BA 0A000000     mov edx,0A
    426. 0045582A   |.  E8 35F6FFFF     call dumped_.00454E64
    427. 0045582F   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    428. 00455832   |.  E8 E924FBFF     call dumped_.00407D20
    429. 00455837   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    430. 0045583A   |.  50              push eax
    431. 0045583B   |.  B9 01000000     mov ecx,1
    432. 00455840   |.  BA 0B000000     mov edx,0B
    433. 00455845   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    434. 00455848   |.  E8 27EBFAFF     call dumped_.00404374
    435. 0045584D   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    436. 00455850   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    437. 00455853   |.  E8 3CF7FFFF     call dumped_.00454F94
    438. 00455858   |.  803B 00         cmp byte ptr ds:[ebx],0
    439. 0045585B   |.  0F84 FB000000   je dumped_.0045595C               ;  暴破点14,NOP掉
    440. 00455861   |.  8D45 F8         lea eax,dword ptr ss:[ebp-8]
    441. 00455864   |.  50              push eax
    442. 00455865   |.  B9 06000000     mov ecx,6
    443. 0045586A   |.  BA 47000000     mov edx,47
    444. 0045586F   |.  8B06            mov eax,dword ptr ds:[esi]
    445. 00455871   |.  E8 FEEAFAFF     call dumped_.00404374
    446. 00455876   |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
    447. 00455879   |.  E8 36F4FFFF     call dumped_.00454CB4
    448. 0045587E   |.  50              push eax
    449. 0045587F   |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
    450. 00455882   |.  E8 2DF4FFFF     call dumped_.00454CB4
    451. 00455887   |.  5A              pop edx
    452. 00455888   |.  E8 D3F5FFFF     call dumped_.00454E60             ;  EAX=EAX and EDX
    453. 0045588D   |.  BA 09000000     mov edx,9                         ;  EDX=9
    454. 00455892   |.  E8 CDF5FFFF     call dumped_.00454E64
    455. 00455897   |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
    456. 0045589A   |.  E8 8124FBFF     call dumped_.00407D20
    457. 0045589F   |.  8D45 EC         lea eax,dword ptr ss:[ebp-14]
    458. 004558A2   |.  50              push eax
    459. 004558A3   |.  B9 01000000     mov ecx,1
    460. 004558A8   |.  BA 0C000000     mov edx,0C
    461. 004558AD   |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
    462. 004558B0   |.  E8 BFEAFAFF     call dumped_.00404374
    463. 004558B5   |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
    464. 004558B8   |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]
    465. 004558BB   |.  E8 D4F6FFFF     call dumped_.00454F94
    466. 004558C0   |.  803B 00         cmp byte ptr ds:[ebx],0
    467. 004558C3   |.  0F84 93000000   je dumped_.0045595C               ;  暴破点15,NOP掉
    468. 004558C9   |.  E8 DAF3FFFF     call dumped_.00454CA8             ;  关键CALL,F7进入
    469. 004558CE   |.  3D FE010000     cmp eax,1FE                       ;  比较是否等于0X1FE(510)
    470. 004558D3   |.  0F85 83000000   jnz dumped_.0045595C              ;  暴破点16,NOP掉
    471. 004558D9   |.  E8 F662FBFF     call dumped_.0040BBD4
    472. 004558DE   |.  8D45 DC         lea eax,dword ptr ss:[ebp-24]
    473. 004558E1   |.  50              push eax

    474. 关键CALL,F7进入004558C9处的关键CALL,来到:

    475. 00454CA8   /$  A1 048C4500      mov eax,dword ptr ds:[458C04]
    476. 00454CAD   |.  8B40 48          mov eax,dword ptr ds:[eax+48]   ;  ds:[009C1FE0]=000001BA
    477. 00454CB0   \.  C3               retn

    478. 程序将ds:[009C1FE0]处的数据赋值给EAX,看看ds:[009C1FE0]处的数据是如何得到的。

    479. 命令栏输入: D 009C1FE0,得到如下数据:
    480. ===========================================================================
    481. 009C1FE0  BA 01 00 00 15 01 00 00 AB 00 00 00 00 00 00 01  ?....?.....
    482. 009C1FF0  01 00 00 00 00 00 00 00 01 03 00 00 00 00 00 00  .............
    483. ===========================================================================
    484. 在009C1FE0处下内存写入断点,F9运行程序,中断在以下位置:

    485. 0043A52D   |.  8943 48          mov dword ptr ds:[ebx+48],eax   ;  中断在这里
    486. 0043A530   |.  8B4424 0C        mov eax,dword ptr ss:[esp+C]
    487. 0043A534   |.  2B4424 04        sub eax,dword ptr ss:[esp+4]
    488. 0043A538   |.  8943 4C          mov dword ptr ds:[ebx+4C],eax

    489. 向上查看,来到:

    490. 0043A4D1   |> \54               push esp                                      
    491. 0043A4D2   |.  8B83 80010000    mov eax,dword ptr ds:[ebx+180]               
    492. 0043A4D8   |.  50               push eax                                      
    493. 0043A4D9   |.  E8 4AC0FCFF      call <jmp.&user32.GetWindowRect>              
    494. 0043A4DE   |>  6A F0            push -10                                      
    495. 0043A4E0   |.  8B83 80010000    mov eax,dword ptr ds:[ebx+180]               
    496. 0043A4E6   |.  50               push eax                                      
    497. 0043A4E7   |.  E8 2CC0FCFF      call <jmp.&user32.GetWindowLongA>             ; 调用GetWindowLongA函数获取程序窗体长度
    498. 0043A4EC   |.  A9 00000040      test eax,40000000
    499. 0043A4F1   |.  74 26            je short dumped_.0043A519
    500. 0043A4F3   |.  6A F8            push -8                                      
    501. 0043A4F5   |.  8B83 80010000    mov eax,dword ptr ds:[ebx+180]               
    502. 0043A4FB   |.  50               push eax                                    
    503. 0043A4FC   |.  E8 17C0FCFF      call <jmp.&user32.GetWindowLongA>             ; GetWindowLongA
    504. 0043A501   |.  8BF0             mov esi,eax
    505. 0043A503   |.  85F6             test esi,esi
    506. 0043A505   |.  74 12            je short dumped_.0043A519
    507. 0043A507   |.  54               push esp                                      ; pPoint
    508. 0043A508   |.  56               push esi                                      
    509. 0043A509   |.  E8 6AC1FCFF      call <jmp.&user32.ScreenToClient>            
    510. 0043A50E   |.  8D4424 08        lea eax,dword ptr ss:[esp+8]
    511. 0043A512   |.  50               push eax                                    
    512. 0043A513   |.  56               push esi                                      
    513. 0043A514   |.  E8 5FC1FCFF      call <jmp.&user32.ScreenToClient>            
    514. 0043A519   |>  8B0424           mov eax,dword ptr ss:[esp]
    515. 0043A51C   |.  8943 40          mov dword ptr ds:[ebx+40],eax
    516. 0043A51F   |.  8B4424 04        mov eax,dword ptr ss:[esp+4]
    517. 0043A523   |.  8943 44          mov dword ptr ds:[ebx+44],eax
    518. 0043A526   |.  8B4424 08        mov eax,dword ptr ss:[esp+8]
    519. 0043A52A   |.  2B0424           sub eax,dword ptr ss:[esp]
    520. 0043A52D   |.  8943 48          mov dword ptr ds:[ebx+48],eax                 ;  将程序窗体长度EAX值保存

    521. 程序调用GetWindowLongA函数获取程序窗体长度,然后与固定值0x1FE(510)比较。

    522. -----------------------------------------------------------------------------------------------
    523. 【破解总结】
    524. 1.用户名长度必需大于4位且小于16位,注册码固定为12位。
    525. 2. 固定字符串"ORACLE-BenQ-HP-IBM-SIEMENS-CISCO SYSTEMS-intel-Sun-DELL-SYBASE-Maxtor-lenovo",
    526. 取用户各位字符ASCII的累加值分别与固定字符串的每一段各位字符ASCII的累加值进行xor或and运算,结果除以0xA(0X9),
    527. 依次连接所得余数即为注册码。
    528. 3.最后,程序比较窗口长度是否为0x1FE(510)像素(约15.94厘米),是则注册成功。
    529. 一组可用注册码:
    530. Name:hrbxhui
    531. Serial:482601600941

    532. 暴破更改以下位置:
    533. 004553A9         je dumped_.0045595C               ;  je====> NOP
    534. 004553BF         je dumped_.0045595C               ;  je====> NOP
    535. 004553E3         je dumped_.0045595C               ;  je====> NOP
    536. 0045544B         je dumped_.0045595C               ;  je====> NOP
    537. 004554B3         je dumped_.0045595C               ;  je====> NOP
    538. 0045551B         je dumped_.0045595C               ;  je====> NOP
    539. 00455583         je dumped_.0045595C               ;  je====> NOP
    540. 004555EB         je dumped_.0045595C               ;  je====> NOP
    541. 00455653         je dumped_.0045595C               ;  je====> NOP
    542. 004556BB         je dumped_.0045595C               ;  je====> NOP
    543. 00455723         je dumped_.0045595C               ;  je====> NOP
    544. 0045578B         je dumped_.0045595C               ;  je====> NOP
    545. 004557F3         je dumped_.0045595C               ;  je====> NOP
    546. 0045585B         je dumped_.0045595C               ;  je====> NOP
    547. 004558C3         je dumped_.0045595C               ;  je====> NOP
    548. 004558D3         jnz dumped_.0045595C              ;  jnz===> NOP

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

    复制代码

    [ 本帖最后由 hrbx 于 2005-12-19 12:05 AM 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2005-12-19 00:07:19 | 显示全部楼层
    附件上传老是说超过限制,Crackme没办法转过来,晕。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-12-19 08:46:05 | 显示全部楼层
    发看雪会更受欢迎!!
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-28 11:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2005-12-19 10:45:05 | 显示全部楼层
    不错~~
    支持一下~~

    知道用
    [ code ] [ / cole ]
    代码~~
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-12-19 10:55:34 | 显示全部楼层
    原帖由 pentacle 于 2005-12-19 10:45 AM 发表
    不错~~
    支持一下~~

    知道用
    [ code ] [ / cole ]
    代码~~



    呵呵,难道说,只有你才懂吗?

    可能就我不懂啦!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-12-19 11:13:34 | 显示全部楼层
    很好```
    我也玩过这个东东,呵```
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-28 11:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2005-12-19 11:16:18 | 显示全部楼层
    原帖由 冷血书生 于 2005-12-19 10:55 AM 发表



    呵呵,难道说,只有你才懂吗?

    可能就我不懂啦!


    不好意思。可能我说话的方式不对~~

    我的意思是,一般发这种[code]贴的人少~~
    所以我支持一下~~
    因为用这种方式的人一般都很细心~~

    其实我是想赞一下,:L没想让你们误会了
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-12-19 14:02:31 | 显示全部楼层
    原帖由 pentacle 于 2005-12-19 11:16 AM 发表


    不好意思。可能我说话的方式不对~~

    我的意思是,一般发这种[code]贴的人少~~
    所以我支持一下~~
    因为用这种方式的人一般都很细心~~

    其实我是想赞一下,:L没想让你们误会了



    哈哈!是我爱抓鸡脚吧!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-12-21 14:31:41 | 显示全部楼层
    厉害~学习了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-12-17 14:52
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2005-12-29 14:32:24 | 显示全部楼层
    看得有点晕!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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