GGLHY 发表于 2010-6-3 15:57:31

Art*** Pro 暴破浅谈

本帖最后由 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 , eax
0055DAE5|.33C0          xor   eax, eax
0055DAE7|.55            push    ebp
0055DAE8|.68 34E15500   push    0055E134
0055DAED|.64:FF30       push    dword ptr fs:
0055DAF0|.64:8920       mov   dword ptr fs:, esp
0055DAF3|.C745 E8 FFFFF>mov   dword ptr , -1
0055**|.C745 E4 FFFFF>mov   dword ptr , -1
0055DB01|.8B45 FC       mov   eax, dword ptr
0055DB04|.8B80 E0020000 mov   eax, dword ptr
0055DB0A|.8B80 08020000 mov   eax, dword ptr
0055DB10|.8B10          mov   edx, dword ptr
0055DB12|.FF52 14       call    dword ptr
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
0055DB22|.8B45 FC       |mov   eax, dword ptr
0055DB25|.8B80 E0020000 |mov   eax, dword ptr
0055DB2B|.8B80 08020000 |mov   eax, dword ptr
0055DB31|.8BD3          |mov   edx, ebx
0055DB33|.8B38          |mov   edi, dword ptr
0055DB35|.FF57 0C       |call    dword ptr
0055DB38|.8B45 C0       |mov   eax, dword ptr
0055DB3B|.8D55 C4       |lea   edx, dword ptr
0055DB3E|.E8 D9C2EAFF   |call    00409E1C
0055DB43|.8B45 C4       |mov   eax, dword ptr
0055DB46|.8D55 F0       |lea   edx, dword ptr
0055DB49|.E8 1AC6EAFF   |call    0040A168
0055DB4E|.8B55 F0       |mov   edx, dword ptr
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
0055DB62|.8945 E8       |mov   dword ptr , eax
0055DB65|.EB 17         |jmp   short 0055DB7E
0055DB67|>8B55 F0       |mov   edx, dword ptr
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 , eax
0055DB7E|>43            |inc   ebx
0055DB7F|.4E            |dec   esi
0055DB80|.^ 75 9D         \jnz   short 0055DB1F
0055DB82|>8D45 EC       lea   eax, dword ptr           ***上面的循环应该是对输入的注册码的格式检验
0055DB85|.E8 BE6CEAFF   call    00404848
0055DB8A|.837D E8 FF    cmp   dword ptr , -1
0055DB8E|.75 15         jnz   short 0055DBA5
0055DB90|.837D E4 00    cmp   dword ptr , 0
0055DB94|.7E 0F         jle   short 0055DBA5
0055DB96|.8D45 EC       lea   eax, dword ptr
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 , -1
0055DBA9|.75 13         jnz   short 0055DBBE
0055DBAB|.837D E8 00    cmp   dword ptr , 0
0055DBAF|.7E 0D         jle   short 0055DBBE
0055DBB1|.8D45 EC       lea   eax, dword ptr
0055DBB4|.BA B0E15500   mov   edx, 0055E1B0                  ;not found row: - key end key -
0055DBB9|.E8 226DEAFF   call    004048E0
0055DBBE|>837D EC 00    cmp   dword ptr , 0
0055DBC2|.74 08         je      short 0055DBCC
0055DBC4|.8B45 EC       mov   eax, dword ptr
0055DBC7|.E8 88FEFFFF   call    0055DA54
0055DBCC|>8D45 F4       lea   eax, dword ptr
0055DBCF|.E8 746CEAFF   call    00404848
0055DBD4|.837D E8 00    cmp   dword ptr , 0
0055DBD8|.7E 06         jle   short 0055DBE0
0055DBDA|.837D E4 00    cmp   dword ptr , 0
0055DBDE|.7F 1D         jg      short 0055DBFD
0055DBE0|>33C0          xor   eax, eax
0055DBE2|.8945 E8       mov   dword ptr , eax
0055DBE5|.8B45 FC       mov   eax, dword ptr
0055DBE8|.8B80 E0020000 mov   eax, dword ptr
0055DBEE|.8B80 08020000 mov   eax, dword ptr
0055DBF4|.8B10          mov   edx, dword ptr
0055DBF6|.FF52 14       call    dword ptr
0055DBF9|.48            dec   eax
0055DBFA|.8945 E4       mov   dword ptr , eax
0055DBFD|>8B45 FC       mov   eax, dword ptr
0055DC00|.8B80 FC020000 mov   eax, dword ptr
0055DC06|.8B10          mov   edx, dword ptr
0055DC08|.FF52 40       call    dword ptr
0055DC0B|.33C0          xor   eax, eax
0055DC0D|.8945 E0       mov   dword ptr , eax
0055DC10|.8B5D E8       mov   ebx, dword ptr
0055DC13|.8B75 E4       mov   esi, dword ptr
0055DC16|.2BF3          sub   esi, ebx
0055DC18|.0F8C 8E000000 jl      0055DCAC
0055DC1E|.46            inc   esi
0055DC1F|>8D4D BC       /lea   ecx, dword ptr
0055DC22|.8B45 FC       |mov   eax, dword ptr
0055DC25|.8B80 E0020000 |mov   eax, dword ptr
0055DC2B|.8B80 08020000 |mov   eax, dword ptr
0055DC31|.8BD3          |mov   edx, ebx
0055DC33|.8B38          |mov   edi, dword ptr
0055DC35|.FF57 0C       |call    dword ptr
0055DC38|.8B45 BC       |mov   eax, dword ptr
0055DC3B|.8D55 D4       |lea   edx, dword ptr
0055DC3E|.E8 25C5EAFF   |call    0040A168
0055DC43|.8D45 B8       |lea   eax, dword ptr
0055DC46|.50            |push    eax
0055DC47|.33C9          |xor   ecx, ecx
0055DC49|.BA D8E15500   |mov   edx, 0055E1D8
0055DC4E|.8B45 D4       |mov   eax, dword ptr
0055DC51|.E8 E25AF1FF   |call    00473738
0055DC56|.8B55 B8       |mov   edx, dword ptr
0055DC59|.8D45 D4       |lea   eax, dword ptr
0055DC5C|.E8 7F6CEAFF   |call    004048E0
0055DC61|.8D45 F4       |lea   eax, dword ptr
0055DC64|.8B55 D4       |mov   edx, dword ptr
0055DC67|.E8 9C6EEAFF   |call    00404B08
0055DC6C|.8B45 D4       |mov   eax, dword ptr
0055DC6F|.E8 8C6EEAFF   |call    00404B00
0055DC74|.83F8 0A       |cmp   eax, 0A
0055DC77|.7E 17         |jle   short 0055DC90
0055DC79|.837D E0 00    |cmp   dword ptr , 0
0055DC7D|.75 11         |jnz   short 0055DC90
0055DC7F|.8B45 FC       |mov   eax, dword ptr
0055DC82|.8B80 FC020000 |mov   eax, dword ptr
0055DC88|.8B55 D4       |mov   edx, dword ptr
0055DC8B|.8B08          |mov   ecx, dword ptr
0055DC8D|.FF51 34       |call    dword ptr
0055DC90|>8B55 D4       |mov   edx, dword ptr
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
0055DCA4|>43            |inc   ebx
0055DCA5|.4E            |dec   esi
0055DCA6|.^ 0F85 73FFFFFF \jnz   0055DC1F
0055DCAC|>837D F4 00    cmp   dword ptr , 0            ***这看来是对注册码中间部分的检验(是否输入了)
0055DCB0|.75 0C         jnz   short 0055DCBE
0055DCB2|.A1 C8D45A00   mov   eax, dword ptr
0055DCB7|.8B00          mov   eax, dword ptr
0055DCB9|.E8 96FDFFFF   call    0055DA54
0055DCBE|>8B45 F4       mov   eax, dword ptr           ***输入的注册码中间部分(我这里是15987530)
0055DCC1|.E8 3A6EEAFF   call    00404B00
0055DCC6|.8B55 F4       mov   edx, dword ptr
0055DCC9|.807C02 FF 22cmp   byte ptr , 22      ***最后1位与"比较。
0055DCCE|.75 17         jnz   short 0055DCE7
0055DCD0|.8B45 F4       mov   eax, dword ptr
0055DCD3|.E8 286EEAFF   call    00404B00
0055DCD8|.8BD0          mov   edx, eax
0055DCDA|.8D45 F4       lea   eax, dword ptr
0055DCDD|.B9 01000000   mov   ecx, 1
0055DCE2|.E8 6170EAFF   call    00404D48
0055DCE7|>8B45 F4       mov   eax, dword ptr
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
0055DCF9|.807C18 FF 22|cmp   byte ptr , 22
0055DCFE|.75 1B         |jnz   short 0055DD1B
0055DD00|.8B45 F4       |mov   eax, dword ptr
0055DD03|.E8 F86DEAFF   |call    00404B00
0055DD08|.3BD8          |cmp   ebx, eax
0055DD0A|.7F 0F         |jg      short 0055DD1B
0055DD0C|.8D45 F4       |lea   eax, dword ptr
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             ***是否还有"。有的话就OVER
0055DD23|.8B45 F4       mov   eax, dword ptr
0055DD26|.E8 3DC4EAFF   call    0040A168
0055DD2B|.8B55 B4       mov   edx, dword ptr
0055DD2E|.8D45 F4       lea   eax, dword ptr
0055DD31|.E8 AA6BEAFF   call    004048E0
0055DD36|.8B45 F4       mov   eax, dword ptr
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
0055DD48|.8B00          mov   eax, dword ptr
....(省略部分代码)...
0055DF5D|>8B45 F4       mov   eax, dword ptr
0055DF60|.E8 0337FFFF   call    00551668                         ;F7***注册码或格式不对的话,这里肯定挂。有猫腻哈
0055DF65|.B2 01         mov   dl, 1
0055DF67|.A1 98DF4800   mov   eax, dword ptr
0055DF6C|.E8 7F01F3FF   call    0048E0F0
0055DF71|.8945 DC       mov   dword ptr , eax
0055DF74|.33C0          xor   eax, eax
0055DF76|.55            push    ebp
0055DF77|.68 ACE05500   push    0055E0AC
0055DF7C|.64:FF30       push    dword ptr fs:
0055DF7F|.64:8920       mov   dword ptr fs:, esp
0055DF82|.BA 01000080   mov   edx, 80000001
0055DF87|.8B45 DC       mov   eax, dword ptr          ***准备将注册信息写入注册表了
0055DF8A|.E8 9102F3FF   call    0048E220
0055DF8F|.68 F0E15500   push    0055E1F0                         ;software\aha-soft\
0055DF94|.A1 78D75A00   mov   eax, dword ptr
0055DF99|.FF30          push    dword ptr
0055DF9B|.68 0CE25500   push    0055E20C                         ;\
0055DFA0|.8D45 98       lea   eax, dword ptr
0055DFA3|.E8 4034FFFF   call    005513E8
0055DFA8|.FF75 98       push    dword ptr
0055DFAB|.8D45 9C       lea   eax, dword ptr
0055DFAE|.BA 04000000   mov   edx, 4
0055DFB3|.E8 086CEAFF   call    00404BC0
0055DFB8|.8B55 9C       mov   edx, dword ptr
0055DFBB|.B1 01         mov   cl, 1
0055DFBD|.8B45 DC       mov   eax, dword ptr
0055DFC0|.E8 2B03F3FF   call    0048E2F0
0055DFC5|.8845 FB       mov   byte ptr , al
0055DFC8|.807D FB 00    cmp   byte ptr , 0
0055DFCC|.0F84 C4000000 je      0055E096
0055DFD2|.8B4D F4       mov   ecx, dword ptr
0055DFD5|.BA 18E25500   mov   edx, 0055E218                  ;key
0055DFDA|.8B45 DC       mov   eax, dword ptr
0055DFDD|.E8 EA08F3FF   call    0048E8CC
0055DFE2|.BA 18E25500   mov   edx, 0055E218                  ;key
0055DFE7|.8D4D 94       lea   ecx, dword ptr
0055DFEA|.8B45 DC       mov   eax, dword ptr
0055DFED|.E8 0E09F3FF   call    0048E900
0055DFF2|.8B55 94       mov   edx, dword ptr
0055DFF5|.8B45 F4       mov   eax, dword ptr
0055DFF8|.E8 136CEAFF   call    00404C10
0055DFFD|.0F9445 FB   sete    byte ptr
0055E001|.E8 F2DCEAFF   call    0040BCF8
0055E006|.83C4 F8       add   esp, -8                        ; /
0055E009|.DD1C24      fstp    qword ptr                   ; |Arg1 (8 字节)
0055E00C|.9B            wait                                     ; |
0055E00D|.BA 24E25500   mov   edx, 0055E224                  ; |time
0055E012|.8B45 DC       mov   eax, dword ptr           ; |
0055E015|.E8 7209F3FF   call    0048E98C                         ; \ART***.0048E98C
0055E01A|.8D45 90       lea   eax, dword ptr
0055E01D|.E8 B2510400   call    005A31D4
0055E022|.8B4D 90       mov   ecx, dword ptr
0055E025|.BA 34E25500   mov   edx, 0055E234                  ;fullproductname
0055E02A|.8B45 DC       mov   eax, dword ptr
0055E02D|.E8 9A08F3FF   call    0048E8CC
0055E032|.8D55 8C       lea   edx, dword ptr
0055E035|.8B45 FC       mov   eax, dword ptr
0055E038|.8B80 F0020000 mov   eax, dword ptr
0055E03E|.E8 410AEEFF   call    0043EA84
0055E043|.8B45 8C       mov   eax, dword ptr
0055E046|.8D55 D8       lea   edx, dword ptr
0055E049|.E8 1AC1EAFF   call    0040A168
0055E04E|.837D E0 01    cmp   dword ptr , 1
0055E052|.74 32         je      short 0055E086
0055E054|.FF75 D8       push    dword ptr
0055E057|.68 4CE25500   push    0055E24C                         ;<br>
0055E05C|.68 5CE25500   push    0055E25C                         ;   -
0055E061|.8D55 88       lea   edx, dword ptr
0055E064|.8B45 E0       mov   eax, dword ptr
0055E067|.E8 30C3EAFF   call    0040A39C
0055E06C|.FF75 88       push    dword ptr
0055E06F|.68 D8E15500   push    0055E1D8
0055E074|.68 68E25500   push    0055E268                         ;licenses -
0055E079|.8D45 D8       lea   eax, dword ptr
0055E07C|.BA 06000000   mov   edx, 6
0055E081|.E8 3A6BEAFF   call    00404BC0
0055E086|>8B4D D8       mov   ecx, dword ptr
0055E089|.BA 7CE25500   mov   edx, 0055E27C                  ;username
0055E08E|.8B45 DC       mov   eax, dword ptr
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:, edx
0055E09E|.68 B3E05500   push    0055E0B3
0055E0A3|>8B45 DC       mov   eax, dword ptr
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 , 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 , 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
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 , 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



注册信息保存在注册表里哈:

"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:,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:,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:
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                  ;
这里虽然有个条件判断,但是貌似跳了无所谓。(有时间再研究一下这里)

sdnyzjzx 发表于 2010-6-3 16:07:42

好,正需要,学习!

sdnyzjzx 发表于 2010-6-3 16:15:40

好像三种方法都不行?每个都试了一下,楼主你再看看是不是这样,一运行还是出注册框,而且注册随便输入,还是提示 please reenter key .key is required.

ty1921 发表于 2010-6-3 16:18:16

好强大,看楼上的情况是不是出现暗桩了呢/:022

GGLHY 发表于 2010-6-3 16:18:27

好像三种方法都不行?每个都试了一下,楼主你再看看是不是这样,一运行还是出注册框,而且注册随便输入,还 ...
sdnyzjzx 发表于 2010-6-3 16:15 https://www.chinapyg.com/images/common/back.gif


    前面的有个CMP EAX,64下面的JGE改成JMP了没?
/:017 要不你就输入至少100位哈

月之精灵 发表于 2010-6-3 16:29:07

有点儿KEYFILE的味道哈

cbkxh 发表于 2010-6-3 16:56:15

谢谢分享,认真学习一下

zaas 发表于 2010-6-3 17:30:11

GGLHY有空可以看下算法。这个算法不复杂的。

GGLHY 发表于 2010-6-3 18:13:31

GGLHY有空可以看下算法。这个算法不复杂的。
zaas 发表于 2010-6-3 17:30 https://www.chinapyg.com/images/common/back.gif


    /:018
呵呵,最近事情太多。很难专门抽出时间来搞。但是算法一定会找个时间好好看看。谢谢ZAAS啊:handshake

lixy8888 发表于 2010-6-3 20:14:39

顶下兄弟的作品,膜拜下/:good
页: [1] 2
查看完整版本: Art*** Pro 暴破浅谈