飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8050|回复: 12

[原创] Asterisk Recovery Genie追码+算法+注册分析BY傻人有傻福

[复制链接]

该用户从未签到

发表于 2007-12-30 01:45:35 | 显示全部楼层 |阅读模式
【破文标题】Asterisk Recovery Genie追码+算法+注册分析BY傻人有傻福
【破文作者】傻人有傻福
【作者邮箱】
【作者主页】
破解工具】PEID+DEDE+OD
【破解平台】WINDOWS XP
【软件名称】Asterisk Recovery Genie
【软件大小】822K
【原版下载】http://www.onlinedown.net/soft/63077.htm
【保护方式】注册码+重启验证
【软件简介】是一款密码恢复软件,在你忘记密码的时候他很有用的.包括自动显示ie浏览器里form中的*字符等,支持多语言密码。
【破解声明】只为讨论、学习与分享破解技术,勿用于非法用途,请多多支持软件开发者!
------------------------------------------------------------------------
强烈建议大家先看下我写的破解总结
【破解过程】    拿到软件先查壳:Delphi程序,无壳。DEDE出手,查得注册事件地址在0048AAF4。OD载入,在0048AAF4下断,代码如下:(只选取比较有用的代码)
0048AB1C  |.  8B45 F8            mov eax,[local.2]                   ;  取用户名
0048AB1F  |.  8D55 FC            lea edx,[local.1]
0048AB22  |.  E8 F1D4F7FF        call Asterisk.00408018
0048AB27  |.  8B45 FC            mov eax,[local.1]
0048AB2A  |.  E8 3598F7FF        call Asterisk.00404364
0048AB2F  |.  85C0               test eax,eax                        ;  判断是否输入用户名
0048AB31  |.  75 1A              jnz short Asterisk.0048AB4D
0048AB33  |.  B8 ECAB4800        mov eax,Asterisk.0048ABEC           ;  ASCII "Please input regname!"
0048AB38  |.  E8 27EEF9FF        call Asterisk.00429964
0048AB3D  |.  8B83 0C030000      mov eax,dword ptr ds:[ebx+30C]
0048AB43  |.  8B10               mov edx,dword ptr ds:[eax]
0048AB45  |.  FF92 C4000000      call dword ptr ds:[edx+C4]
0048AB4B  |.  EB 5D              jmp short Asterisk.0048ABAA
0048AB4D  |>  8D55 F0            lea edx,[local.4]
0048AB50  |.  8B83 14030000      mov eax,dword ptr ds:[ebx+314]
0048AB56  |.  E8 C1B6FBFF        call Asterisk.0044621C
0048AB5B  |.  8B45 F0            mov eax,[local.4]                   ;  取注册码
0048AB5E  |.  8D55 F4            lea edx,[local.3]
0048AB61  |.  E8 B2D4F7FF        call Asterisk.00408018
0048AB66  |.  8B45 F4            mov eax,[local.3]
0048AB69  |.  E8 F697F7FF        call Asterisk.00404364
0048AB6E  |.  85C0               test eax,eax                        ;  判断是否输入注册码
0048AB70  |.  75 1A              jnz short Asterisk.0048AB8C
0048AB72  |.  B8 0CAC4800        mov eax,Asterisk.0048AC0C           ;  ASCII "Please input regcode!"
0048AB77  |.  E8 E8EDF9FF        call Asterisk.00429964
0048AB7C  |.  8B83 14030000      mov eax,dword ptr ds:[ebx+314]
0048AB82  |.  8B10               mov edx,dword ptr ds:[eax]
0048AB84  |.  FF92 C4000000      call dword ptr ds:[edx+C4]
0048AB8A  |.  EB 1E              jmp short Asterisk.0048ABAA
0048AB8C  |>  8BC3               mov eax,ebx
0048AB8E  |.  E8 31FEFFFF        call Asterisk.0048A9C4              ;  关键CALL
0048AB93  |.  84C0               test al,al
0048AB95  |.  74 09              je short Asterisk.0048ABA0
0048AB97  |.  8BC3               mov eax,ebx
0048AB99  |.  E8 0AFDFFFF        call Asterisk.0048A8A8
0048AB9E  |.  EB 0A              jmp short Asterisk.0048ABAA
0048ABA0  |>  B8 2CAC4800        mov eax,Asterisk.0048AC2C           ;  ASCII "Regcode error!"
------------------------------------------------------------------------------------------------------
我们跟进上面的关键CALL来看看:(也是选取了比较有用的部分)
0048A9EE  |.  8B45 F8            mov eax,[local.2]                   ;  取假码
0048A9F1  |.  8D55 FC            lea edx,[local.1]
0048A9F4  |.  E8 1FD6F7FF        call Asterisk.00408018
0048A9F9  |.  8B45 FC            mov eax,[local.1]                   ;  取假码
0048A9FC  |.  50                 push eax
0048A9FD  |.  8D55 EC            lea edx,[local.5]
0048AA00  |.  8B86 0C030000      mov eax,dword ptr ds:[esi+30C]
0048AA06  |.  E8 11B8FBFF        call Asterisk.0044621C
0048AA0B  |.  8B45 EC            mov eax,[local.5]                   ;  取用户名
0048AA0E  |.  8D55 F0            lea edx,[local.4]
0048AA11  |.  E8 02D6F7FF        call Asterisk.00408018
0048AA16  |.  8B55 F0            mov edx,[local.4]                   ;  取用户名
0048AA19  |.  8D4D F4            lea ecx,[local.3]
0048AA1C  |.  8BC6               mov eax,esi
0048AA1E  |.  E8 91FCFFFF        call Asterisk.0048A6B4              ;  算法CALL
0048AA23  |.  8B55 F4            mov edx,[local.3]                   ;  出现真码
0048AA26  |.  58                 pop eax
0048AA27  |.  E8 849AF7FF        call Asterisk.004044B0              ;  可以做内存注册机的地方
0048AA2C  |.  75 1C              jnz short Asterisk.0048AA4A
0048AA2E  |.  B3 01              mov bl,1
0048AA30  |.  8BC6               mov eax,esi
0048AA32  |.  E8 71FEFFFF        call Asterisk.0048A8A8
0048AA37  |.  B8 98AA4800        mov eax,Asterisk.0048AA98           ;  ASCII "Register success!"
-----------------------------------------------------------------------------------------------------
我们再来看看算法CALL吧:(这次是比较完整的)
0048A6B4  /$  55                 push ebp
0048A6B5  |.  8BEC               mov ebp,esp
0048A6B7  |.  51                 push ecx
0048A6B8  |.  B9 04000000        mov ecx,4
0048A6BD  |>  6A 00              /push 0
0048A6BF  |.  6A 00              |push 0
0048A6C1  |.  49                 |dec ecx
0048A6C2  |.^ 75 F9              \jnz short Asterisk.0048A6BD
0048A6C4  |.  51                 push ecx
0048A6C5  |.  874D FC            xchg [local.1],ecx
0048A6C8  |.  53                 push ebx
0048A6C9  |.  56                 push esi
0048A6CA  |.  57                 push edi
0048A6CB  |.  8BF9               mov edi,ecx
0048A6CD  |.  8955 FC            mov [local.1],edx
0048A6D0  |.  8B45 FC            mov eax,[local.1]
0048A6D3  |.  E8 7C9EF7FF        call Asterisk.00404554
0048A6D8  |.  33C0               xor eax,eax
0048A6DA  |.  55                 push ebp
0048A6DB  |.  68 75A84800        push Asterisk.0048A875
0048A6E0  |.  64:FF30            push dword ptr fs:[eax]
0048A6E3  |.  64:8920            mov dword ptr fs:[eax],esp
0048A6E6  |.  8BC7               mov eax,edi
0048A6E8  |.  E8 B799F7FF        call Asterisk.004040A4
0048A6ED  |.  8B45 FC            mov eax,[local.1]
0048A6F0  |.  E8 6F9CF7FF        call Asterisk.00404364
0048A6F5  |.  8BF0               mov esi,eax
0048A6F7  |.  85F6               test esi,esi
0048A6F9  |.  7E 26              jle short Asterisk.0048A721
0048A6FB  |.  BB 01000000        mov ebx,1
0048A700  |>  8D4D EC            /lea ecx,[local.5]
0048A703  |.  8B45 FC            |mov eax,[local.1]
0048A706  |.  0FB64418 FF        |movzx eax,byte ptr ds:[eax+ebx-1]
0048A70B  |.  33D2               |xor edx,edx
0048A70D  |.  E8 82DCF7FF        |call Asterisk.00408394
0048A712  |.  8B55 EC            |mov edx,[local.5]
0048A715  |.  8D45 F8            |lea eax,[local.2]
0048A718  |.  E8 4F9CF7FF        |call Asterisk.0040436C
0048A71D  |.  43                 |inc ebx
0048A71E  |.  4E                 |dec esi
0048A71F  |.^ 75 DF              \jnz short Asterisk.0048A700
0048A721  |>  8B45 F8            mov eax,[local.2]                   ;  用户名的ASCII码连在一起
0048A724  |.  E8 3B9CF7FF        call Asterisk.00404364              ;  取用户名ASCII码的位数
0048A729  |.  8BF0               mov esi,eax
0048A72B  |.  85F6               test esi,esi
0048A72D  |.  7E 2C              jle short Asterisk.0048A75B
0048A72F  |.  BB 01000000        mov ebx,1
0048A734  |>  8B45 F8            /mov eax,[local.2]
0048A737  |.  E8 289CF7FF        |call Asterisk.00404364             ;  还是取用户名ASCII码位数
0048A73C  |.  2BC3               |sub eax,ebx
0048A73E  |.  8B55 F8            |mov edx,[local.2]
0048A741  |.  8A1402             |mov dl,byte ptr ds:[edx+eax]
0048A744  |.  8D45 E8            |lea eax,[local.6]
0048A747  |.  E8 409BF7FF        |call Asterisk.0040428C
0048A74C  |.  8B55 E8            |mov edx,[local.6]
0048A74F  |.  8D45 F4            |lea eax,[local.3]
0048A752  |.  E8 159CF7FF        |call Asterisk.0040436C
0048A757  |.  43                 |inc ebx
0048A758  |.  4E                 |dec esi
0048A759  |.^ 75 D9              \jnz short Asterisk.0048A734
0048A75B  |>  8D45 F8            lea eax,[local.2]
0048A75E  |.  50                 push eax
0048A75F  |.  B9 04000000        mov ecx,4
0048A764  |.  BA 01000000        mov edx,1
0048A769  |.  8B45 F4            mov eax,[local.3]                   ;  用户名ASCII顺序颠倒
0048A76C  |.  E8 539EF7FF        call Asterisk.004045C4
0048A771  |.  8D45 F4            lea eax,[local.3]
0048A774  |.  50                 push eax
0048A775  |.  B9 04000000        mov ecx,4
0048A77A  |.  BA 05000000        mov edx,5
0048A77F  |.  8B45 F4            mov eax,[local.3]
0048A782  |.  E8 3D9EF7FF        call Asterisk.004045C4
0048A787  |.  8B45 F8            mov eax,[local.2]                   ;  取前4位
0048A78A  |.  E8 D59BF7FF        call Asterisk.00404364
0048A78F  |.  83F8 04            cmp eax,4
0048A792  |.  7D 2F              jge short Asterisk.0048A7C3
0048A794  |.  8B45 F8            mov eax,[local.2]
0048A797  |.  E8 C89BF7FF        call Asterisk.00404364
0048A79C  |.  8BD8               mov ebx,eax
0048A79E  |.  83FB 03            cmp ebx,3
0048A7A1  |.  7F 20              jg short Asterisk.0048A7C3
0048A7A3  |>  8D4D E4            /lea ecx,[local.7]
0048A7A6  |.  8BC3               |mov eax,ebx
0048A7A8  |.  C1E0 02            |shl eax,2
0048A7AB  |.  33D2               |xor edx,edx
0048A7AD  |.  E8 E2DBF7FF        |call Asterisk.00408394
0048A7B2  |.  8B55 E4            |mov edx,[local.7]
0048A7B5  |.  8D45 F8            |lea eax,[local.2]
0048A7B8  |.  E8 AF9BF7FF        |call Asterisk.0040436C
0048A7BD  |.  43                 |inc ebx
0048A7BE  |.  83FB 04            |cmp ebx,4
0048A7C1  |.^ 75 E0              \jnz short Asterisk.0048A7A3
0048A7C3  |>  8B45 F4            mov eax,[local.3]                   ;  再取4位
0048A7C6  |.  E8 999BF7FF        call Asterisk.00404364
0048A7CB  |.  83F8 04            cmp eax,4
0048A7CE  |.  7D 2F              jge short Asterisk.0048A7FF
0048A7D0  |.  8B45 F4            mov eax,[local.3]
0048A7D3  |.  E8 8C9BF7FF        call Asterisk.00404364
0048A7D8  |.  8BD8               mov ebx,eax
0048A7DA  |.  83FB 03            cmp ebx,3
0048A7DD  |.  7F 20              jg short Asterisk.0048A7FF
0048A7DF  |>  8D4D E0            /lea ecx,[local.8]
0048A7E2  |.  8BC3               |mov eax,ebx
0048A7E4  |.  C1E0 02            |shl eax,2
0048A7E7  |.  33D2               |xor edx,edx
0048A7E9  |.  E8 A6DBF7FF        |call Asterisk.00408394
0048A7EE  |.  8B55 E0            |mov edx,[local.8]
0048A7F1  |.  8D45 F4            |lea eax,[local.3]
0048A7F4  |.  E8 739BF7FF        |call Asterisk.0040436C
0048A7F9  |.  43                 |inc ebx
0048A7FA  |.  83FB 04            |cmp ebx,4
0048A7FD  |.^ 75 E0              \jnz short Asterisk.0048A7DF
0048A7FF  |>  8D45 F0            lea eax,[local.4]
0048A802  |.  BA 8CA84800        mov edx,Asterisk.0048A88C           ;  ASCII "Astris58ef88e"
0048A807  |.  E8 3099F7FF        call Asterisk.0040413C
0048A80C  |.  8D45 DC            lea eax,[local.9]
0048A80F  |.  50                 push eax
0048A810  |.  B9 04000000        mov ecx,4
0048A815  |.  BA 01000000        mov edx,1
0048A81A  |.  8B45 F0            mov eax,[local.4]                   ;  上面那个字符串
0048A81D  |.  E8 A29DF7FF        call Asterisk.004045C4
0048A822  |.  FF75 DC            push [local.9]                      ;  取那个字符串前4位
0048A825  |.  68 A4A84800        push Asterisk.0048A8A4
0048A82A  |.  FF75 F8            push [local.2]                      ;  取用户名ASCII前4位
0048A82D  |.  8D45 D8            lea eax,[local.10]
0048A830  |.  50                 push eax
0048A831  |.  B9 05000000        mov ecx,5
0048A836  |.  BA 05000000        mov edx,5
0048A83B  |.  8B45 F0            mov eax,[local.4]                   ;  还是取上面那个字符串
0048A83E  |.  E8 819DF7FF        call Asterisk.004045C4
0048A843  |.  FF75 D8            push [local.10]                     ;  取那个字符串接着的5位
0048A846  |.  68 A4A84800        push Asterisk.0048A8A4
0048A84B  |.  FF75 F4            push [local.3]                      ;  取用户名ASCII码再来4位
0048A84E  |.  8BC7               mov eax,edi
0048A850  |.  BA 06000000        mov edx,6
0048A855  |.  E8 CA9BF7FF        call Asterisk.00404424
0048A85A  |.  33C0               xor eax,eax
0048A85C  |.  5A                 pop edx
0048A85D  |.  59                 pop ecx
0048A85E  |.  59                 pop ecx
0048A85F  |.  64:8910            mov dword ptr fs:[eax],edx
0048A862  |.  68 7CA84800        push Asterisk.0048A87C
0048A867  |>  8D45 D8            lea eax,[local.10]
0048A86A  |.  BA 0A000000        mov edx,0A
0048A86F  |.  E8 5498F7FF        call Asterisk.004040C8
0048A874  \.  C3                 retn
------------------------------------------------------------------------------------------------------
算法总结:把用户名转成ASCII码,比如说你的用户名是PYGPYG 算法就是先把PYGPYG变成505947505947 P的ASCII值是50 Y的ASCII值是59 G的ASCII值是47。这样之后再把这串字符串颠倒变成749805749505,分别与软件内置的字符串进行拼接,拼接的方法是:Astris58ef88e这个字符串取分别取前4位Astr,中间5位is58e;用户名ASCII串颠倒后先取前4位,再取中间4位,拼接成Astr-7498is58e-0574这种形式。
    本以为算法都出来了应该就解决了,可是有了一些意外。软件重新启动后提示注册码不合法请重新购买,真是有点好笑啊,算法都解决了怎么还有问题呢?我们接着来分析一下,软件重新启动后提示注册码不合法,这证明软件在启动时读取了注册码,那这个注册码放在哪里呢?先来看最一般的情况,软件是放在注册表中吗?我们在注册表中搜索一下刚才的注册码,找到了,键名为Pass。好,我们OD载入查找一下这个Pass。
    我们找到2处,一处是0048A933,这里是存注册码的地方,另一处是0048BFC6,这里就是软件启动时读取的位置了,我们来看一下这部分的代码:(选取比较有用的地方)
0048C0EC   .  E8 D384F7FF        call Asterisk.004045C4
0048C0F1   .  8B45 C8            mov eax,dword ptr ss:[ebp-38]       ;  取用户名前2位
0048C0F4   .  BA 9CC34800        mov edx,Asterisk.0048C39C           ;  ASCII "As"
0048C0F9   .  E8 B283F7FF        call Asterisk.004044B0
0048C0FE      75 4C              jnz short Asterisk.0048C14C         ;  比较用户名前两位是不是As
0048C100   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C103   .  8B80 90030000      mov eax,dword ptr ds:[eax+390]
0048C109   .  E8 5682F7FF        call Asterisk.00404364              ;  取用户名位数
0048C10E   .  83F8 04            cmp eax,4                           ;  比较用户名是否为4位
0048C111      75 39              jnz short Asterisk.0048C14C
0048C113   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C116   .  C680 8C030000 00   mov byte ptr ds:[eax+38C],0
0048C11D   .  BA A8C34800        mov edx,Asterisk.0048C3A8           ;  ASCII "Asterisk Recovery Genie V1.20"
0048C122   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C125   .  E8 22A1FBFF        call Asterisk.0044624C
0048C12A   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C12D   .  8B80 58030000      mov eax,dword ptr ds:[eax+358]
0048C133   .  33D2               xor edx,edx
0048C135   .  E8 1672FCFF        call Asterisk.00453350
0048C13A   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C13D   .  8B80 54030000      mov eax,dword ptr ds:[eax+354]
0048C143   .  33D2               xor edx,edx
0048C145   .  E8 C2C8FCFF        call Asterisk.00458A0C
0048C14A   .  EB 3F              jmp short Asterisk.0048C18B
0048C14C   >  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C14F   .  C680 8C030000 01   mov byte ptr ds:[eax+38C],1
0048C156   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C159   .  8B80 1C030000      mov eax,dword ptr ds:[eax+31C]
0048C15F   .  33D2               xor edx,edx
0048C161   .  E8 E26EFCFF        call Asterisk.00453048
0048C166   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C169   .  8B80 2C030000      mov eax,dword ptr ds:[eax+32C]
0048C16F   .  33D2               xor edx,edx
0048C171   .  E8 D26EFCFF        call Asterisk.00453048
0048C176   .  6A 00              push 0                              ; /Arg1 = 00000000
0048C178   .  66:8B0D C8C34800   mov cx,word ptr ds:[48C3C8]         ; |
0048C17F   .  B2 03              mov dl,3                            ; |
0048C181   .  B8 D4C34800        mov eax,Asterisk.0048C3D4           ; |ASCII "RegCode is invalid,You must buy it again!"
0048C186   .  E8 E1D6F9FF        call Asterisk.0042986C              ; \Asterisk.0042986C
0048C18B   >  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C18E   .  80B8 8C030000 00   cmp byte ptr ds:[eax+38C],0
0048C195   .  0F84 EE000000      je Asterisk.0048C289
0048C19B   .  DD45 E0            fld qword ptr ss:[ebp-20]
0048C19E   .  DC65 E8            fsub qword ptr ss:[ebp-18]
0048C1A1   .  DD5D D8            fstp qword ptr ss:[ebp-28]
0048C1A4   .  9B                 wait
0048C1A5   .  D905 00C44800      fld dword ptr ds:[48C400]
0048C1AB   .  DC65 D8            fsub qword ptr ss:[ebp-28]
0048C1AE   .  E8 C968F7FF        call Asterisk.00402A7C
0048C1B3   .  8BD8               mov ebx,eax
0048C1B5   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C1B8   .  8998 98030000      mov dword ptr ds:[eax+398],ebx
0048C1BE   .  85DB               test ebx,ebx
0048C1C0   .  7D 0B              jge short Asterisk.0048C1CD
0048C1C2   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C1C5   .  33D2               xor edx,edx
0048C1C7   .  8990 98030000      mov dword ptr ds:[eax+398],edx
0048C1CD   >  68 0CC44800        push Asterisk.0048C40C              ;  ASCII "Asterisk Recovery Genie V1.20 (No register, "
0048C1D2   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C1D5   .  DB80 98030000      fild dword ptr ds:[eax+398]
0048C1DB   .  83C4 F4            add esp,-0C
0048C1DE   .  DB3C24             fstp tbyte ptr ss:[esp]             ; |
0048C1E1   .  9B                 wait                                ; |
0048C1E2   .  8D45 C0            lea eax,dword ptr ss:[ebp-40]       ; |
0048C1E5   .  E8 2AD5F7FF        call Asterisk.00409714              ; \Asterisk.00409714
0048C1EA   .  FF75 C0            push dword ptr ss:[ebp-40]
0048C1ED   .  68 44C44800        push Asterisk.0048C444              ;  ASCII " days left)"
0048C1F2   .  8D45 C4            lea eax,dword ptr ss:[ebp-3C]
0048C1F5   .  BA 03000000        mov edx,3
0048C1FA   .  E8 2582F7FF        call Asterisk.00404424
0048C1FF   .  8B55 C4            mov edx,dword ptr ss:[ebp-3C]
0048C202   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C205   .  E8 42A0FBFF        call Asterisk.0044624C
0048C20A   .  DD45 D8            fld qword ptr ss:[ebp-28]
0048C20D   .  D81D 00C44800      fcomp dword ptr ds:[48C400]
0048C213   .  DFE0               fstsw ax
0048C215   .  9E                 sahf
0048C216   .  77 0E              ja short Asterisk.0048C226
0048C218   .  DD45 D8            fld qword ptr ss:[ebp-28]
0048C21B   .  D81D 50C44800      fcomp dword ptr ds:[48C450]
0048C221   .  DFE0               fstsw ax
0048C223   .  9E                 sahf
0048C224   .  73 63              jnb short Asterisk.0048C289
0048C226   >  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C229   .  8B80 1C030000      mov eax,dword ptr ds:[eax+31C]
0048C22F   .  33D2               xor edx,edx
0048C231   .  E8 126EFCFF        call Asterisk.00453048
0048C236   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C239   .  8B80 2C030000      mov eax,dword ptr ds:[eax+32C]
0048C23F   .  33D2               xor edx,edx
0048C241   .  E8 026EFCFF        call Asterisk.00453048
0048C246   .  6A 24              push 24
0048C248   .  68 54C44800        push Asterisk.0048C454              ;  ASCII "Thank you for trying Asterisk Recovery Genie 10 days"
0048C24D   .  68 8CC44800        push Asterisk.0048C48C              ;  ASCII "Your trial period has expired,Would you like to buy Asterisk Recovery Genie?"
0048C252   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C255   .  E8 BE08FCFF        call Asterisk.0044CB18
0048C25A   .  50                 push eax                            ; |hOwner
0048C25B   .  E8 E4A6F7FF        call <jmp.&user32.MessageBoxA>      ; \MessageBoxA
0048C260   .  83F8 06            cmp eax,6
0048C263   .  75 24              jnz short Asterisk.0048C289
0048C265   .  6A 05              push 5
0048C267   .  68 DCC44800        push Asterisk.0048C4DC
0048C26C   .  68 DCC44800        push Asterisk.0048C4DC
0048C271   .  68 E0C44800        push Asterisk.0048C4E0              ;  ASCII "https://www.qwerks.com/order/buynow.asp?ProductID=7725"
0048C276   .  68 18C54800        push Asterisk.0048C518              ;  ASCII "open"
0048C27B   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C27E   .  E8 9508FCFF        call Asterisk.0044CB18
0048C283   .  50                 push eax                            ; |hWnd
0048C284   .  E8 2FC4F9FF        call <jmp.&shell32.ShellExecuteA>   ; \ShellExecuteA
0048C289   >  8B55 F8            mov edx,dword ptr ss:[ebp-8]
0048C28C   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C28F   .  E8 20040000        call Asterisk.0048C6B4
0048C294   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C297   .  8B80 1C030000      mov eax,dword ptr ds:[eax+31C]
0048C29D   .  8078 6A 00         cmp byte ptr ds:[eax+6A],0
0048C2A1   .  74 0B              je short Asterisk.0048C2AE
0048C2A3   .  8B55 F8            mov edx,dword ptr ss:[ebp-8]
0048C2A6   .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
0048C2A9   .  E8 4EF9FFFF        call Asterisk.0048BBFC
0048C2AE   >  33C0               xor eax,eax
0048C2B0   .  5A                 pop edx
0048C2B1   .  59                 pop ecx
0048C2B2   .  59                 pop ecx
0048C2B3   .  64:8910            mov dword ptr fs:[eax],edx
0048C2B6   .  68 D8C24800        push Asterisk.0048C2D8
0048C2BB   >  8D45 C0            lea eax,dword ptr ss:[ebp-40]
0048C2BE   .  BA 06000000        mov edx,6
0048C2C3   .  E8 007EF7FF        call Asterisk.004040C8
0048C2C8   .  8D45 F0            lea eax,dword ptr ss:[ebp-10]
0048C2CB   .  E8 D47DF7FF        call Asterisk.004040A4
0048C2D0   .  C3                 retn
0048C2D1   .^ E9 4E77F7FF        jmp Asterisk.00403A24
0048C2D6   .^ EB E3              jmp short Asterisk.0048C2BB
0048C2D8   .  5F                 pop edi
0048C2D9   .  5E                 pop esi
0048C2DA   .  5B                 pop ebx
0048C2DB   .  8BE5               mov esp,ebp
0048C2DD   .  5D                 pop ebp
0048C2DE   .  C3                 retn
-------------------------------------------------------------------------------------------------------
大家看明白了吧,软件要求用户名前2位一定要是As,用户名位数一定要是4位,只要符合这两点,再加上已经弄清算法的注册码就可以了。我们从代码上可以看出用户名这部分符合条件的话就可以跳过像:软件还有10天试用,还剩多少天啊,注册码不合法,这些乱七八糟的东西,软件界面也变成了Asterisk Recovery Genie V1.20而不是Asterisk Recovery Genie V1.20 (No register)的了,打开软件看下ABOUT 也已经提示注册给我们了。这样我们就既解决了一个软件,又学习了破解,好高兴啊!
------------------------------------------------------------------------
【破解总结】   这个软件我觉得真的是教科书版的软件,它的追码,算法,重启验证都很基础,很适合我等菜鸟学习,我强烈建议看我的破文之前先自己拿这个软件练习一下,这个软件真的是学习破解的经典试练品,只有自己动手了才能学好破解,光看的话是很难看懂的,希望大家能自己动手先弄一下。
   最后感谢PYG带领我走进破解学习的大门,欢迎大家有空来PYG看看!
------------------------------------------------------------------------
【版权声明】破文版权归我,转载版权归你。欢迎转载,转载请注明出处,不用注明作者了,我水平比较菜,怕丢人*^_^*

[ 本帖最后由 傻人有傻福 于 2007-12-30 13:46 编辑 ]

评分

参与人数 1飘云币 +20 收起 理由
tianxj + 20 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-30 02:32:40 | 显示全部楼层
/:017 刚买了一本加密解密,配合这里的文章,够我深刻理解了~/:018
PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-30 12:35:07 | 显示全部楼层
/:001  下载软件自己看一下。。。。。感谢分享
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-3-15 11:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-12-30 12:41:38 | 显示全部楼层

    谢谢斑竹分享啊!

    谢谢斑竹分享啊!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-30 12:47:33 | 显示全部楼层
    /:001 /:001

    发现字符串追码比较简单。。


    0048A9D4  |.  55            PUSH EBP                                 ;  此处下断
    0048A9D5  |.  68 7FAA4800   PUSH Asterisk.0048AA7F
    0048A9DA  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    0048A9DD  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    0048A9E0  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    0048A9E3  |.  8B86 14030000 MOV EAX,DWORD PTR DS:[ESI+314]
    0048A9E9  |.  E8 2EB8FBFF   CALL Asterisk.0044621C
    0048A9EE  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
    0048A9F1  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
    0048A9F4  |.  E8 1FD6F7FF   CALL Asterisk.00408018
    0048A9F9  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    0048A9FC  |.  50            PUSH EAX
    0048A9FD  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
    0048AA00  |.  8B86 0C030000 MOV EAX,DWORD PTR DS:[ESI+30C]
    0048AA06  |.  E8 11B8FBFF   CALL Asterisk.0044621C
    0048AA0B  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
    0048AA0E  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
    0048AA11  |.  E8 02D6F7FF   CALL Asterisk.00408018
    0048AA16  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
    0048AA19  |.  8D4D F4       LEA ECX,DWORD PTR SS:[EBP-C]
    0048AA1C  |.  8BC6          MOV EAX,ESI
    0048AA1E  |.  E8 91FCFFFF   CALL Asterisk.0048A6B4
    0048AA23  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
    0048AA26  |.  58            POP EAX                                  ;  F8到这里就比较真假码了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-30 12:58:01 | 显示全部楼层
    /:L  /:L

    又发现被忽悠了  /:L
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-30 13:43:31 | 显示全部楼层
    软件的加密做的确实比较简单 但很适合像我这样的菜鸟拿来做练习用
    感谢楼主分享:loveliness:
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-30 14:27:39 | 显示全部楼层
    发现菜鸟总是喜欢用字符串来解决问题  /:011

    /:001  虽然这个软件字符串可以解决。。。

    学习楼主的方法  /:good   /:good
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-8-10 19:15
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2008-1-15 21:04:36 | 显示全部楼层
    我输入的名字“xyjk888”
    我的注册码"Astr-8383is58e-83B6"
    通过查找字符串完全可以找到注册码的啊^_^
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-1-16 10:32:29 | 显示全部楼层
    谢谢!!!:handshake :handshake
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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