TA的每日心情 | 开心 2015-8-23 23:49 |
---|
签到天数: 27 天 [LV.4]偶尔看看III
|
本帖最后由 GGLHY 于 2010-6-4 00:16 编辑
今天终于有了一点小空闲,想起前段时间搞过的一个软件Art*** Pro(稍微隐藏下软件名哈),便抽空整理了下笔记。
呵呵,简单的爆了下,没看算法哈。本文如有错误,敬请大牛指正!
OD载入,运行Art*** Pro,输入注册信息:
name:gglhy
key:15987530
点注册,弹出:please reenter key. key is required 的对话框。
好的。看看用什么断点能直捣黄龙?
F12的方法、或者MessageBoxA都能来到达到目的哈。现在我们看看有什么有用的字符串参考:
00551687 mov ecx, 005516A8 invalid key
0055DA6F mov edx, 0055DAB8 please reenter key.\n\n
0055DB51 mov eax, 0055E150 - key begin key -
0055DB6A mov eax, 0055E16C - key end key -
0055DB99 mov edx, 0055E184 not found row: - key begin key -
0055DBB4 mov edx, 0055E1B0 not found row: - key end key -
0055DF8F push 0055E1F0 software\aha-soft\
0055DF9B push 0055E20C \
0055DFD5 mov edx, 0055E218 key
0055DFE2 mov edx, 0055E218 key
0055E00D mov edx, 0055E224 time
0055E025 mov edx, 0055E234 fullproductname
0055E057 push 0055E24C <br>
0055E05C push 0055E25C -
0055E06F push 0055E1D8
0055E074 push 0055E268 licenses -
0055E089 mov edx, 0055E27C username
0055E0DD mov eax, 0055E290 you should restart application now
有这么多,够了哈。
那我们先来看这里:
- key begin key - 、 - key end key -
呵呵,显然是对注册码的格式要求哈。
如果选其他的字符串也可以很快定位到关键部分。
那我们双击就可以来到注册验证的地方。
0055DAD0 /$ 55 push ebp ***在这里下断,F2
0055DAD1 |. 8BEC mov ebp, esp
0055DAD3 |. B9 0F000000 mov ecx, 0F
0055DAD8 |> 6A 00 /push 0
0055DADA |. 6A 00 |push 0
0055DADC |. 49 |dec ecx
0055DADD |.^ 75 F9 \jnz short 0055DAD8
0055DADF |. 53 push ebx
0055DAE0 |. 56 push esi
0055DAE1 |. 57 push edi
0055DAE2 |. 8945 FC mov dword ptr [ebp-4], eax
0055DAE5 |. 33C0 xor eax, eax
0055DAE7 |. 55 push ebp
0055DAE8 |. 68 34E15500 push 0055E134
0055DAED |. 64:FF30 push dword ptr fs:[eax]
0055DAF0 |. 64:8920 mov dword ptr fs:[eax], esp
0055DAF3 |. C745 E8 FFFFF>mov dword ptr [ebp-18], -1
0055** |. C745 E4 FFFFF>mov dword ptr [ebp-1C], -1
0055DB01 |. 8B45 FC mov eax, dword ptr [ebp-4]
0055DB04 |. 8B80 E0020000 mov eax, dword ptr [eax+2E0]
0055DB0A |. 8B80 08020000 mov eax, dword ptr [eax+208]
0055DB10 |. 8B10 mov edx, dword ptr [eax]
0055DB12 |. FF52 14 call dword ptr [edx+14]
0055DB15 |. 8BF0 mov esi, eax
0055DB17 |. 4E dec esi
0055DB18 |. 85F6 test esi, esi
0055DB1A |. 7C 66 jl short 0055DB82
0055DB1C |. 46 inc esi
0055DB1D |. 33DB xor ebx, ebx
0055DB1F |> 8D4D C0 /lea ecx, dword ptr [ebp-40]
0055DB22 |. 8B45 FC |mov eax, dword ptr [ebp-4]
0055DB25 |. 8B80 E0020000 |mov eax, dword ptr [eax+2E0]
0055DB2B |. 8B80 08020000 |mov eax, dword ptr [eax+208]
0055DB31 |. 8BD3 |mov edx, ebx
0055DB33 |. 8B38 |mov edi, dword ptr [eax]
0055DB35 |. FF57 0C |call dword ptr [edi+C]
0055DB38 |. 8B45 C0 |mov eax, dword ptr [ebp-40]
0055DB3B |. 8D55 C4 |lea edx, dword ptr [ebp-3C]
0055DB3E |. E8 D9C2EAFF |call 00409E1C
0055DB43 |. 8B45 C4 |mov eax, dword ptr [ebp-3C]
0055DB46 |. 8D55 F0 |lea edx, dword ptr [ebp-10]
0055DB49 |. E8 1AC6EAFF |call 0040A168
0055DB4E |. 8B55 F0 |mov edx, dword ptr [ebp-10]
0055DB51 |. B8 50E15500 |mov eax, 0055E150 ; - key begin key -
0055DB56 |. E8 9172EAFF |call 00404DEC
0055DB5B |. 85C0 |test eax, eax
0055DB5D |. 7E 08 |jle short 0055DB67
0055DB5F |. 8D43 01 |lea eax, dword ptr [ebx+1]
0055DB62 |. 8945 E8 |mov dword ptr [ebp-18], eax
0055DB65 |. EB 17 |jmp short 0055DB7E
0055DB67 |> 8B55 F0 |mov edx, dword ptr [ebp-10]
0055DB6A |. B8 6CE15500 |mov eax, 0055E16C ; - key end key -
0055DB6F |. E8 7872EAFF |call 00404DEC
0055DB74 |. 85C0 |test eax, eax
0055DB76 |. 7E 06 |jle short 0055DB7E
0055DB78 |. 8BC3 |mov eax, ebx
0055DB7A |. 48 |dec eax
0055DB7B |. 8945 E4 |mov dword ptr [ebp-1C], eax
0055DB7E |> 43 |inc ebx
0055DB7F |. 4E |dec esi
0055DB80 |.^ 75 9D \jnz short 0055DB1F
0055DB82 |> 8D45 EC lea eax, dword ptr [ebp-14] ***上面的循环应该是对输入的注册码的格式检验
0055DB85 |. E8 BE6CEAFF call 00404848
0055DB8A |. 837D E8 FF cmp dword ptr [ebp-18], -1
0055DB8E |. 75 15 jnz short 0055DBA5
0055DB90 |. 837D E4 00 cmp dword ptr [ebp-1C], 0
0055DB94 |. 7E 0F jle short 0055DBA5
0055DB96 |. 8D45 EC lea eax, dword ptr [ebp-14]
0055DB99 |. BA 84E15500 mov edx, 0055E184 ; not found row: - key begin key -
0055DB9E |. E8 3D6DEAFF call 004048E0
0055DBA3 |. EB 19 jmp short 0055DBBE
0055DBA5 |> 837D E4 FF cmp dword ptr [ebp-1C], -1
0055DBA9 |. 75 13 jnz short 0055DBBE
0055DBAB |. 837D E8 00 cmp dword ptr [ebp-18], 0
0055DBAF |. 7E 0D jle short 0055DBBE
0055DBB1 |. 8D45 EC lea eax, dword ptr [ebp-14]
0055DBB4 |. BA B0E15500 mov edx, 0055E1B0 ; not found row: - key end key -
0055DBB9 |. E8 226DEAFF call 004048E0
0055DBBE |> 837D EC 00 cmp dword ptr [ebp-14], 0
0055DBC2 |. 74 08 je short 0055DBCC
0055DBC4 |. 8B45 EC mov eax, dword ptr [ebp-14]
0055DBC7 |. E8 88FEFFFF call 0055DA54
0055DBCC |> 8D45 F4 lea eax, dword ptr [ebp-C]
0055DBCF |. E8 746CEAFF call 00404848
0055DBD4 |. 837D E8 00 cmp dword ptr [ebp-18], 0
0055DBD8 |. 7E 06 jle short 0055DBE0
0055DBDA |. 837D E4 00 cmp dword ptr [ebp-1C], 0
0055DBDE |. 7F 1D jg short 0055DBFD
0055DBE0 |> 33C0 xor eax, eax
0055DBE2 |. 8945 E8 mov dword ptr [ebp-18], eax
0055DBE5 |. 8B45 FC mov eax, dword ptr [ebp-4]
0055DBE8 |. 8B80 E0020000 mov eax, dword ptr [eax+2E0]
0055DBEE |. 8B80 08020000 mov eax, dword ptr [eax+208]
0055DBF4 |. 8B10 mov edx, dword ptr [eax]
0055DBF6 |. FF52 14 call dword ptr [edx+14]
0055DBF9 |. 48 dec eax
0055DBFA |. 8945 E4 mov dword ptr [ebp-1C], eax
0055DBFD |> 8B45 FC mov eax, dword ptr [ebp-4]
0055DC00 |. 8B80 FC020000 mov eax, dword ptr [eax+2FC]
0055DC06 |. 8B10 mov edx, dword ptr [eax]
0055DC08 |. FF52 40 call dword ptr [edx+40]
0055DC0B |. 33C0 xor eax, eax
0055DC0D |. 8945 E0 mov dword ptr [ebp-20], eax
0055DC10 |. 8B5D E8 mov ebx, dword ptr [ebp-18]
0055DC13 |. 8B75 E4 mov esi, dword ptr [ebp-1C]
0055DC16 |. 2BF3 sub esi, ebx
0055DC18 |. 0F8C 8E000000 jl 0055DCAC
0055DC1E |. 46 inc esi
0055DC1F |> 8D4D BC /lea ecx, dword ptr [ebp-44]
0055DC22 |. 8B45 FC |mov eax, dword ptr [ebp-4]
0055DC25 |. 8B80 E0020000 |mov eax, dword ptr [eax+2E0]
0055DC2B |. 8B80 08020000 |mov eax, dword ptr [eax+208]
0055DC31 |. 8BD3 |mov edx, ebx
0055DC33 |. 8B38 |mov edi, dword ptr [eax]
0055DC35 |. FF57 0C |call dword ptr [edi+C]
0055DC38 |. 8B45 BC |mov eax, dword ptr [ebp-44]
0055DC3B |. 8D55 D4 |lea edx, dword ptr [ebp-2C]
0055DC3E |. E8 25C5EAFF |call 0040A168
0055DC43 |. 8D45 B8 |lea eax, dword ptr [ebp-48]
0055DC46 |. 50 |push eax
0055DC47 |. 33C9 |xor ecx, ecx
0055DC49 |. BA D8E15500 |mov edx, 0055E1D8
0055DC4E |. 8B45 D4 |mov eax, dword ptr [ebp-2C]
0055DC51 |. E8 E25AF1FF |call 00473738
0055DC56 |. 8B55 B8 |mov edx, dword ptr [ebp-48]
0055DC59 |. 8D45 D4 |lea eax, dword ptr [ebp-2C]
0055DC5C |. E8 7F6CEAFF |call 004048E0
0055DC61 |. 8D45 F4 |lea eax, dword ptr [ebp-C]
0055DC64 |. 8B55 D4 |mov edx, dword ptr [ebp-2C]
0055DC67 |. E8 9C6EEAFF |call 00404B08
0055DC6C |. 8B45 D4 |mov eax, dword ptr [ebp-2C]
0055DC6F |. E8 8C6EEAFF |call 00404B00
0055DC74 |. 83F8 0A |cmp eax, 0A
0055DC77 |. 7E 17 |jle short 0055DC90
0055DC79 |. 837D E0 00 |cmp dword ptr [ebp-20], 0
0055DC7D |. 75 11 |jnz short 0055DC90
0055DC7F |. 8B45 FC |mov eax, dword ptr [ebp-4]
0055DC82 |. 8B80 FC020000 |mov eax, dword ptr [eax+2FC]
0055DC88 |. 8B55 D4 |mov edx, dword ptr [ebp-2C]
0055DC8B |. 8B08 |mov ecx, dword ptr [eax]
0055DC8D |. FF51 34 |call dword ptr [ecx+34]
0055DC90 |> 8B55 D4 |mov edx, dword ptr [ebp-2C]
0055DC93 |. B8 E4E15500 |mov eax, 0055E1E4 ; =
0055DC98 |. E8 4F71EAFF |call 00404DEC
0055DC9D |. 85C0 |test eax, eax
0055DC9F |. 7E 03 |jle short 0055DCA4
0055DCA1 |. FF45 E0 |inc dword ptr [ebp-20]
0055DCA4 |> 43 |inc ebx
0055DCA5 |. 4E |dec esi
0055DCA6 |.^ 0F85 73FFFFFF \jnz 0055DC1F
0055DCAC |> 837D F4 00 cmp dword ptr [ebp-C], 0 ***这看来是对注册码中间部分的检验(是否输入了)
0055DCB0 |. 75 0C jnz short 0055DCBE
0055DCB2 |. A1 C8D45A00 mov eax, dword ptr [5AD4C8]
0055DCB7 |. 8B00 mov eax, dword ptr [eax]
0055DCB9 |. E8 96FDFFFF call 0055DA54
0055DCBE |> 8B45 F4 mov eax, dword ptr [ebp-C] ***输入的注册码中间部分(我这里是15987530)
0055DCC1 |. E8 3A6EEAFF call 00404B00
0055DCC6 |. 8B55 F4 mov edx, dword ptr [ebp-C]
0055DCC9 |. 807C02 FF 22 cmp byte ptr [edx+eax-1], 22 ***最后1位与"比较。
0055DCCE |. 75 17 jnz short 0055DCE7
0055DCD0 |. 8B45 F4 mov eax, dword ptr [ebp-C]
0055DCD3 |. E8 286EEAFF call 00404B00
0055DCD8 |. 8BD0 mov edx, eax
0055DCDA |. 8D45 F4 lea eax, dword ptr [ebp-C]
0055DCDD |. B9 01000000 mov ecx, 1
0055DCE2 |. E8 6170EAFF call 00404D48
0055DCE7 |> 8B45 F4 mov eax, dword ptr [ebp-C]
0055DCEA |. E8 116EEAFF call 00404B00
0055DCEF |. 8BD8 mov ebx, eax
0055DCF1 |. 83FB 01 cmp ebx, 1
0055DCF4 |. 7C 2A jl short 0055DD20
0055DCF6 |> 8B45 F4 /mov eax, dword ptr [ebp-C]
0055DCF9 |. 807C18 FF 22 |cmp byte ptr [eax+ebx-1], 22
0055DCFE |. 75 1B |jnz short 0055DD1B
0055DD00 |. 8B45 F4 |mov eax, dword ptr [ebp-C]
0055DD03 |. E8 F86DEAFF |call 00404B00
0055DD08 |. 3BD8 |cmp ebx, eax
0055DD0A |. 7F 0F |jg short 0055DD1B
0055DD0C |. 8D45 F4 |lea eax, dword ptr [ebp-C]
0055DD0F |. 8BCB |mov ecx, ebx
0055DD11 |. BA 01000000 |mov edx, 1
0055DD16 |. E8 2D70EAFF |call 00404D48
0055DD1B |> 4B |dec ebx
0055DD1C |. 85DB |test ebx, ebx
0055DD1E |.^ 75 D6 \jnz short 0055DCF6
0055DD20 |> 8D55 B4 lea edx, dword ptr [ebp-4C] ***是否还有"。有的话就OVER
0055DD23 |. 8B45 F4 mov eax, dword ptr [ebp-C]
0055DD26 |. E8 3DC4EAFF call 0040A168
0055DD2B |. 8B55 B4 mov edx, dword ptr [ebp-4C]
0055DD2E |. 8D45 F4 lea eax, dword ptr [ebp-C]
0055DD31 |. E8 AA6BEAFF call 004048E0
0055DD36 |. 8B45 F4 mov eax, dword ptr [ebp-C]
0055DD39 |. E8 C26DEAFF call 00404B00
0055DD3E |. 83F8 64 cmp eax, 64 ; 哈哈,比较注册码的长度
0055DD41 |. 7D 0C jge short 0055DD4F ***是不是该JMP呢?/:017
0055DD43 |. A1 C8D45A00 mov eax, dword ptr [5AD4C8]
0055DD48 |. 8B00 mov eax, dword ptr [eax]
....(省略部分代码)...
0055DF5D |> 8B45 F4 mov eax, dword ptr [ebp-C]
0055DF60 |. E8 0337FFFF call 00551668 ; F7***注册码或格式不对的话,这里肯定挂。有猫腻哈
0055DF65 |. B2 01 mov dl, 1
0055DF67 |. A1 98DF4800 mov eax, dword ptr [48DF98]
0055DF6C |. E8 7F01F3FF call 0048E0F0
0055DF71 |. 8945 DC mov dword ptr [ebp-24], eax
0055DF74 |. 33C0 xor eax, eax
0055DF76 |. 55 push ebp
0055DF77 |. 68 ACE05500 push 0055E0AC
0055DF7C |. 64:FF30 push dword ptr fs:[eax]
0055DF7F |. 64:8920 mov dword ptr fs:[eax], esp
0055DF82 |. BA 01000080 mov edx, 80000001
0055DF87 |. 8B45 DC mov eax, dword ptr [ebp-24] ***准备将注册信息写入注册表了
0055DF8A |. E8 9102F3FF call 0048E220
0055DF8F |. 68 F0E15500 push 0055E1F0 ; software\aha-soft\
0055DF94 |. A1 78D75A00 mov eax, dword ptr [5AD778]
0055DF99 |. FF30 push dword ptr [eax]
0055DF9B |. 68 0CE25500 push 0055E20C ; \
0055DFA0 |. 8D45 98 lea eax, dword ptr [ebp-68]
0055DFA3 |. E8 4034FFFF call 005513E8
0055DFA8 |. FF75 98 push dword ptr [ebp-68]
0055DFAB |. 8D45 9C lea eax, dword ptr [ebp-64]
0055DFAE |. BA 04000000 mov edx, 4
0055DFB3 |. E8 086CEAFF call 00404BC0
0055DFB8 |. 8B55 9C mov edx, dword ptr [ebp-64]
0055DFBB |. B1 01 mov cl, 1
0055DFBD |. 8B45 DC mov eax, dword ptr [ebp-24]
0055DFC0 |. E8 2B03F3FF call 0048E2F0
0055DFC5 |. 8845 FB mov byte ptr [ebp-5], al
0055DFC8 |. 807D FB 00 cmp byte ptr [ebp-5], 0
0055DFCC |. 0F84 C4000000 je 0055E096
0055DFD2 |. 8B4D F4 mov ecx, dword ptr [ebp-C]
0055DFD5 |. BA 18E25500 mov edx, 0055E218 ; key
0055DFDA |. 8B45 DC mov eax, dword ptr [ebp-24]
0055DFDD |. E8 EA08F3FF call 0048E8CC
0055DFE2 |. BA 18E25500 mov edx, 0055E218 ; key
0055DFE7 |. 8D4D 94 lea ecx, dword ptr [ebp-6C]
0055DFEA |. 8B45 DC mov eax, dword ptr [ebp-24]
0055DFED |. E8 0E09F3FF call 0048E900
0055DFF2 |. 8B55 94 mov edx, dword ptr [ebp-6C]
0055DFF5 |. 8B45 F4 mov eax, dword ptr [ebp-C]
0055DFF8 |. E8 136CEAFF call 00404C10
0055DFFD |. 0F9445 FB sete byte ptr [ebp-5]
0055E001 |. E8 F2DCEAFF call 0040BCF8
0055E006 |. 83C4 F8 add esp, -8 ; /
0055E009 |. DD1C24 fstp qword ptr [esp] ; |Arg1 (8 字节)
0055E00C |. 9B wait ; |
0055E00D |. BA 24E25500 mov edx, 0055E224 ; |time
0055E012 |. 8B45 DC mov eax, dword ptr [ebp-24] ; |
0055E015 |. E8 7209F3FF call 0048E98C ; \ART***.0048E98C
0055E01A |. 8D45 90 lea eax, dword ptr [ebp-70]
0055E01D |. E8 B2510400 call 005A31D4
0055E022 |. 8B4D 90 mov ecx, dword ptr [ebp-70]
0055E025 |. BA 34E25500 mov edx, 0055E234 ; fullproductname
0055E02A |. 8B45 DC mov eax, dword ptr [ebp-24]
0055E02D |. E8 9A08F3FF call 0048E8CC
0055E032 |. 8D55 8C lea edx, dword ptr [ebp-74]
0055E035 |. 8B45 FC mov eax, dword ptr [ebp-4]
0055E038 |. 8B80 F0020000 mov eax, dword ptr [eax+2F0]
0055E03E |. E8 410AEEFF call 0043EA84
0055E043 |. 8B45 8C mov eax, dword ptr [ebp-74]
0055E046 |. 8D55 D8 lea edx, dword ptr [ebp-28]
0055E049 |. E8 1AC1EAFF call 0040A168
0055E04E |. 837D E0 01 cmp dword ptr [ebp-20], 1
0055E052 |. 74 32 je short 0055E086
0055E054 |. FF75 D8 push dword ptr [ebp-28]
0055E057 |. 68 4CE25500 push 0055E24C ; <br>
0055E05C |. 68 5CE25500 push 0055E25C ; -
0055E061 |. 8D55 88 lea edx, dword ptr [ebp-78]
0055E064 |. 8B45 E0 mov eax, dword ptr [ebp-20]
0055E067 |. E8 30C3EAFF call 0040A39C
0055E06C |. FF75 88 push dword ptr [ebp-78]
0055E06F |. 68 D8E15500 push 0055E1D8
0055E074 |. 68 68E25500 push 0055E268 ; licenses -
0055E079 |. 8D45 D8 lea eax, dword ptr [ebp-28]
0055E07C |. BA 06000000 mov edx, 6
0055E081 |. E8 3A6BEAFF call 00404BC0
0055E086 |> 8B4D D8 mov ecx, dword ptr [ebp-28]
0055E089 |. BA 7CE25500 mov edx, 0055E27C ; username
0055E08E |. 8B45 DC mov eax, dword ptr [ebp-24]
0055E091 |. E8 3608F3FF call 0048E8CC
0055E096 |> 33C0 xor eax, eax
0055E098 |. 5A pop edx
0055E099 |. 59 pop ecx
0055E09A |. 59 pop ecx
0055E09B |. 64:8910 mov dword ptr fs:[eax], edx
0055E09E |. 68 B3E05500 push 0055E0B3
0055E0A3 |> 8B45 DC mov eax, dword ptr [ebp-24]
0055E0A6 |. E8 F558EAFF call 004039A0
0055E0AB \. C3 retn
显然,如果不想输入100位以上,那就把:
0055DD3E |. 83F8 64 cmp eax, 64 ; 哈哈,比较注册码的长度
0055DD41 |. 7D 0C jge short 0055DD4F
这里的jge short 0055DD4F
改成JMP short 0055DD4F
这个CALL有问题:
0055DF60 |. E8 0337FFFF call 00551668 ***我们要进去“改造”它
我们F7进来后,重点修改这里:
00551668 53 push ebx
00551669 |. 8BD8 mov ebx, eax
0055166B |. 803B 30 cmp byte ptr [ebx], 30
0055166E 75 17 jnz short 00551687 ***一跳就挂
00551670 |. 8BC3 mov eax, ebx
00551672 |. E8 8934EBFF call 00404B00
00551677 |. 3D AD000000 cmp eax, 0AD
0055167C 75 09 jnz short 00551687 ***一跳就挂
0055167E |. 80BB AC000000>cmp byte ptr [ebx+AC], 3D
00551685 74 16 je short 0055169D ***跳向光明之巅
00551687 |> B9 A8165500 mov ecx, 005516A8 ; invalid key ***这2个单词不用说了吧
0055168C B2 01 mov dl, 1
0055168E |. A1 B8914000 mov eax, dword ptr [4091B8]
00551693 |. E8 34C7EBFF call 0040DDCC
00551698 |. E8 F72AEBFF call 00404194
0055169D |> 5B pop ebx
0055169E \. C3 retn
呵呵,那我们看看有什么方法可以实现暴破?
方法一:
00551668 53 push ebx
直接改成
00551668 C3 retn
方法二:
00551669 |. 8BD8 mov ebx, eax
0055166B |. 803B 30 cmp byte ptr [ebx], 30
直接改成
00551669 5B pop ebx
0055166A C3 retn
方法三:
同时改掉下面几处:
0055166E /75 17 jnz short 00551687
直接NOP掉(或者改成JZ)
0055167C /75 09 jnz short 00551687
也要NOP掉(或者改成JZ)
00551685 /74 16 je short 0055169D
改成
00551685 /EB 16 jmp short 0055169D
呵呵,三种方法都能爆破成功!,而且不用受到- key begin key - 、 - key end key -的格式限制。
在这里强调一下,为避免出现3楼的朋友那样的情况,这里要改一下,不然就输入至少100位注册码哈/:017
0055DD41 |. 7D 0C jge short 0055DD4F
这里的jge short 0055DD4F
改成JMP short 0055DD4F
注册信息保存在注册表里哈:
[HKEY_CURRENT_USER\Software\Aha-soft\Art***\Registered]
"Key"="15987530"
"Time"=hex:71,1f,43,23,cf,b0,e3,40
"FullProductName"="Aha-soft Art*** 5.28 Build 2010-May-03"
"UserName"="gglhy"
另外,这个软件如果破解注册成功,运行原版也成了注册版。可能只是判断了下注册表里是否存在注册信息而已。(没OD啊,猜的。哈哈)
这倒有点像泡MM,没搞定的时候你无可奈何,一旦追到手,哈哈。她可不问你是绅士还是流氓,反正就是对你死心塌地的人了!/:017
刚看了下,只要注册表里有"Key"且值不为空即是注册版了。兄弟们自己动手建立一下就ok了。"UserName"倒是可有可无,如果没有程序会把电脑的系统属性中注册到的名称当做USERMANE的。
这个CALL给出了注册码的限制条件:
(用户名貌似没有参与运算,而且好像不存在算法,只要满足一定条件即可。有时间仔细验证下)
0055DF60 |. E8 0337FFFF CALL ARTICONS.00551668 进入后:
00551668 /$ 53 PUSH EBX
00551669 8BD8 MOV EBX,EAX
0055166B |. 803B 30 CMP BYTE PTR DS:[EBX],30 ; 输入的注册码是不是0开头?不是就错。
0055166E |. 75 17 JNZ SHORT ARTICONS.00551687
00551670 |. 8BC3 MOV EAX,EBX
00551672 |. E8 8934EBFF CALL ARTICONS.00404B00
00551677 |. 3D AD000000 CMP EAX,0AD ; 输入的注册码的长度是否为AD,即173位,不是就错。
0055167C |. 75 09 JNZ SHORT ARTICONS.00551687 ;
0055167E |. 80BB AC000000>CMP BYTE PTR DS:[EBX+AC],3D ; 输入的注册码的是否以=结尾,不是就错。
00551685 |. 74 16 JE SHORT ARTICONS.0055169D ;
00551687 |> B9 A8165500 MOV ECX,ARTICONS.005516A8 ; Invalid key
0055168C |. B2 01 MOV DL,1
0055168E |. A1 B8914000 MOV EAX,DWORD PTR DS:[4091B8]
00551693 |. E8 34C7EBFF CALL ARTICONS.0040DDCC
00551698 |. E8 F72AEBFF CALL ARTICONS.00404194
0055169D |> 5B POP EBX
0055169E \. C3 RETN
汗,看来不用前面的三种方法来修改,只要输入的注册码同时满足这三种条件即可改。
0055DDC6 |. 83F8 03 CMP EAX,3 ; 输入的注册码的行数是否小于3。是的话跳向失败
0055DDC9 |. 0F8C 8E010000 JL ARTICONS.0055DF5D ;
这里虽然有个条件判断,但是貌似跳了无所谓。(有时间再研究一下这里) |
评分
-
查看全部评分
|