飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3100|回复: 1

hackhd申请加入PYG----作业2(重启验证完美爆破)

[复制链接]

该用户从未签到

发表于 2008-8-30 21:58:15 | 显示全部楼层 |阅读模式
【破文标题】卡易售一**生成器重启验证完美爆破
【破文作者】hackhd
【作者邮箱】hackhd*163.com
【作者主页】www.910y.cn
破解工具】OllyDbg
【破解平台】WINDOWS XP
【软件名称】一**生成器
【软件大小】780KB
【原版下载】http://www.cardesales.com/download/YktMakeTools.exe
【保护方式】注册机
【软件简介】一**生成器是由杭州易购科技开发的服务于一**模块的卡号生成工具,保证生成的卡号和密码安全有效。该生成器具有以下优势:1.脱离网站后台生成卡号密码,更快、更安全有效;2.针对卡易售系统一**模块开发,符合后台使用系统;3.可面值不同生成不同类型的一**; 4.可填写批次编码,让每次生成的卡都可区别;5.生成数量无限制;6.多种密码组合方式;7.配合相应操作方式,杜绝重复卡的发生;
【破解声明】为了生活我们历尽奔波
------------------------------------------------------------------------
【破解过程】OD载入后,查找字符串

00497BA6 mov     eax, 00497CF8  注册成功!
记下这个地址00497BA6 我们直接跳到这里
004979B5  |.  8BF0          mov     esi, eax
004979B7  |.  85F6          test    esi, esi
004979B9  |.  7E 57         jle     short 00497A12
'在这个jle上面下F2断点都可以,修改jle让它跳转成功跳过注册不能成功的地方
004979BB  |.  BB 01000000   mov     ebx, 1
004979C0  |>  8D4D E4       /lea     ecx, dword ptr [ebp-1C]
004979C3  |.  8BD3          |mov     edx, ebx
004979C5  |.  B8 01000000   |mov     eax, 1
004979CA  |.  E8 C1FAFFFF   |call    00497490
004979CF  |.  8B45 E4       |mov     eax, dword ptr [ebp-1C]
004979D2  |.  50            |push    eax
004979D3  |.  8D45 E0       |lea     eax, dword ptr [ebp-20]
004979D6  |.  50            |push    eax
004979D7  |.  8D55 DC       |lea     edx, dword ptr [ebp-24]
004979DA  |.  8B87 00030000 |mov     eax, dword ptr [edi+300]
004979E0  |.  E8 C7D5FAFF   |call    00444FAC
004979E5  |.  8B45 DC       |mov     eax, dword ptr [ebp-24]
004979E8  |.  B9 01000000   |mov     ecx, 1
004979ED  |.  8BD3          |mov     edx, ebx
004979EF  |.  E8 78D4F6FF   |call    00404E6C
004979F4  |.  8B55 E0       |mov     edx, dword ptr [ebp-20]
004979F7  |.  58            |pop     eax
004979F8  |.  E8 5BD3F6FF   |call    00404D58
004979FD  |.  74 0F         |je      short 00497A0E           
004979FF  |.  B8 B87C4900   |mov     eax, 00497CB8                   ;  注册码不正确!
00497A04  |.  E8 4B69F9FF   |call    0042E354
00497A09  |.  E9 1D020000   |jmp     00497C2B
00497A0E  |>  43            |inc     ebx
00497A0F  |.  4E            |dec     esi
00497A10  |.^ 75 AE         \jnz     short 004979C0
00497A12  |>  8D55 D8       lea     edx, dword ptr [ebp-28]
00497A15  |.  8B87 04030000 mov     eax, dword ptr [edi+304]
00497A1B  |.  E8 8CD5FAFF   call    00444FAC
00497A20  |.  8B45 D8       mov     eax, dword ptr [ebp-28]
00497A23  |.  E8 E4D1F6FF   call    00404C0C
00497A28  |.  8BF0          mov     esi, eax
00497A2A  |.  85F6          test    esi, esi
00497A2C  |.  7E 57         jle     short 00497A85
'在这个jle上面下F2断点,修改jle让它跳转成功跳过注册不能成功的地方
00497A2E  |.  BB 01000000   mov     ebx, 1
00497A33  |>  8D4D D4       /lea     ecx, dword ptr [ebp-2C]
00497A36  |.  8BD3          |mov     edx, ebx
00497A38  |.  B8 02000000   |mov     eax, 2
00497A3D  |.  E8 4EFAFFFF   |call    00497490
00497A42  |.  8B45 D4       |mov     eax, dword ptr [ebp-2C]
00497A45  |.  50            |push    eax
00497A46  |.  8D45 D0       |lea     eax, dword ptr [ebp-30]
00497A49  |.  50            |push    eax
00497A4A  |.  8D55 CC       |lea     edx, dword ptr [ebp-34]
00497A4D  |.  8B87 04030000 |mov     eax, dword ptr [edi+304]
00497A53  |.  E8 54D5FAFF   |call    00444FAC
00497A58  |.  8B45 CC       |mov     eax, dword ptr [ebp-34]
00497A5B  |.  B9 01000000   |mov     ecx, 1
00497A60  |.  8BD3          |mov     edx, ebx
00497A62  |.  E8 05D4F6FF   |call    00404E6C
00497A67  |.  8B55 D0       |mov     edx, dword ptr [ebp-30]
00497A6A  |.  58            |pop     eax
00497A6B  |.  E8 E8D2F6FF   |call    00404D58
00497A70  |.  74 0F         |je      short 00497A81
00497A72  |.  B8 B87C4900   |mov     eax, 00497CB8                   ;  注册码不正确!
00497A77  |.  E8 D868F9FF   |call    0042E354
00497A7C  |.  E9 AA010000   |jmp     00497C2B
00497A81  |>  43            |inc     ebx
00497A82  |.  4E            |dec     esi
00497A83  |.^ 75 AE         \jnz     short 00497A33
00497A85  |>  8D55 C8       lea     edx, dword ptr [ebp-38]
00497A88  |.  8B87 08030000 mov     eax, dword ptr [edi+308]
00497A8E  |.  E8 19D5FAFF   call    00444FAC
00497A93  |.  8B45 C8       mov     eax, dword ptr [ebp-38]
00497A96  |.  E8 71D1F6FF   call    00404C0C
00497A9B  |.  8BF0          mov     esi, eax
00497A9D  |.  85F6          test    esi, esi
00497A9F  |.  7E 57         jle     short 00497AF8
'在这个jle上面下F2断点都可以,修改jle让它跳转成功跳过注册不能成功的地方
00497AA1  |.  BB 01000000   mov     ebx, 1
00497AA6  |>  8D4D C4       /lea     ecx, dword ptr [ebp-3C]
00497AA9  |.  8BD3          |mov     edx, ebx
00497AAB  |.  B8 03000000   |mov     eax, 3
00497AB0  |.  E8 DBF9FFFF   |call    00497490
00497AB5  |.  8B45 C4       |mov     eax, dword ptr [ebp-3C]
00497AB8  |.  50            |push    eax
00497AB9  |.  8D45 C0       |lea     eax, dword ptr [ebp-40]
00497ABC  |.  50            |push    eax
00497ABD  |.  8D55 BC       |lea     edx, dword ptr [ebp-44]
00497AC0  |.  8B87 08030000 |mov     eax, dword ptr [edi+308]
00497AC6  |.  E8 E1D4FAFF   |call    00444FAC
00497ACB  |.  8B45 BC       |mov     eax, dword ptr [ebp-44]
00497ACE  |.  B9 01000000   |mov     ecx, 1
00497AD3  |.  8BD3          |mov     edx, ebx
00497AD5  |.  E8 92D3F6FF   |call    00404E6C
00497ADA  |.  8B55 C0       |mov     edx, dword ptr [ebp-40]
00497ADD  |.  58            |pop     eax
00497ADE  |.  E8 75D2F6FF   |call    00404D58
00497AE3  |.  74 0F         |je      short 00497AF4
00497AE5  |.  B8 B87C4900   |mov     eax, 00497CB8                   ;  注册码不正确!
00497AEA  |.  E8 6568F9FF   |call    0042E354
00497AEF  |.  E9 37010000   |jmp     00497C2B
00497AF4  |>  43            |inc     ebx
00497AF5  |.  4E            |dec     esi
00497AF6  |.^ 75 AE         \jnz     short 00497AA6
00497AF8  |>  8D55 B8       lea     edx, dword ptr [ebp-48]
00497AFB  |.  8B87 0C030000 mov     eax, dword ptr [edi+30C]
00497B01  |.  E8 A6D4FAFF   call    00444FAC
00497B06  |.  8B45 B8       mov     eax, dword ptr [ebp-48]
00497B09  |.  E8 FED0F6FF   call    00404C0C
00497B0E  |.  8BF0          mov     esi, eax
00497B10  |.  85F6          test    esi, esi
00497B12  |.  7E 57         jle     short 00497B6B
'在这个jle上面下F2断点都可以,修改jle让它跳转成功跳过注册不能成功的地方
00497B14  |.  BB 01000000   mov     ebx, 1
00497B19  |>  8D4D B4       /lea     ecx, dword ptr [ebp-4C]
00497B1C  |.  8BD3          |mov     edx, ebx
00497B1E  |.  B8 04000000   |mov     eax, 4
00497B23  |.  E8 68F9FFFF   |call    00497490
00497B28  |.  8B45 B4       |mov     eax, dword ptr [ebp-4C]
00497B2B  |.  50            |push    eax
00497B2C  |.  8D45 B0       |lea     eax, dword ptr [ebp-50]
00497B2F  |.  50            |push    eax
00497B30  |.  8D55 AC       |lea     edx, dword ptr [ebp-54]
00497B33  |.  8B87 0C030000 |mov     eax, dword ptr [edi+30C]
00497B39  |.  E8 6ED4FAFF   |call    00444FAC
00497B3E  |.  8B45 AC       |mov     eax, dword ptr [ebp-54]
00497B41  |.  B9 01000000   |mov     ecx, 1
00497B46  |.  8BD3          |mov     edx, ebx
00497B48  |.  E8 1FD3F6FF   |call    00404E6C
00497B4D  |.  8B55 B0       |mov     edx, dword ptr [ebp-50]
00497B50  |.  58            |pop     eax
00497B51  |.  E8 02D2F6FF   |call    00404D58
00497B56  |.  74 0F         |je      short 00497B67
00497B58  |.  B8 B87C4900   |mov     eax, 00497CB8                   ;  注册码不正确!
00497B5D  |.  E8 F267F9FF   |call    0042E354
00497B62  |.  E9 C4000000   |jmp     00497C2B
00497B67  |>  43            |inc     ebx
00497B68  |.  4E            |dec     esi
00497B69  |.^ 75 AE         \jnz     short 00497B19
00497B6B  |>  B2 01         mov     dl, 1
00497B6D  |.  A1 E04C4300   mov     eax, dword ptr [434CE0]
00497B72  |.  E8 69D2F9FF   call    00434DE0
00497B77  |.  8BD8          mov     ebx, eax
00497B79  |.  BA 02000080   mov     edx, 80000002
00497B7E  |.  8BC3          mov     eax, ebx
00497B80  |.  E8 FBD2F9FF   call    00434E80
00497B85  |.  B1 01         mov     cl, 1
00497B87  |.  BA D07C4900   mov     edx, 00497CD0                    ;  software
00497B8C  |.  8BC3          mov     eax, ebx
00497B8E  |.  E8 51D3F9FF   call    00434EE4
00497B93  |.  84C0          test    al, al
00497B95  |.  74 0F         je      short 00497BA6
00497B97  |.  8B4D FC       mov     ecx, dword ptr [ebp-4]
00497B9A  |.  BA E47C4900   mov     edx, 00497CE4                    ;  easygoing
00497B9F  |.  8BC3          mov     eax, ebx
00497BA1  |.  E8 DAD4F9FF   call    00435080
00497BA6  |>  B8 F87C4900   mov     eax, 00497CF8                    ;  注册成功!

修改这几处后,选择 另存为
现在打开程序,随便输入注册码6666-6666-6666-6666就可以注册成功了但是当程序关掉后,再打开又要注册,每次打开都要注册一次,太麻烦,有重启验证。

首先通过分析和观察,注册码不是写在文件里的,那么就可能是注册表,我尝试性的在注册里搜索6666666找到了
证明重启验证是读取的注册表值判断的。再一个当程序走到
00497B97  |.  8B4D FC       mov     ecx, dword ptr [ebp-4]
00497B9A  |.  BA E47C4900   mov     edx, 00497CE4                    ;  easygoing  
走到这里,可以发现在向注册表写入注册码
00497B9F  |.  8BC3          mov     eax, ebx
00497BA1  |.  E8 DAD4F9FF   call    00435080
00497BA6  |>  B8 F87C4900   mov     eax, 00497CF8                    ;  注册成功!
既然是读取注册表,那么再重新载入按Ctrl+N键来到


0049E230 .idata  输入 advapi32.RegQueryValueExA
点击键查看调用树 在所有调用这个函数的地址上按F2下断一共6个
按F9,当第三次停下来的时候,一直按F8
一直到来到这里
004989BF  |. /74 0F         je      short 004989D0
004989C1  |. |8D4D FC       lea     ecx, dword ptr [ebp-4]
004989C4  |. |BA 248C4900   mov     edx, 00498C24                    ;  easygoing
004989C9  |. |8BC3          mov     eax, ebx
004989CB  |. |E8 DCC6F9FF   call    004350AC
004989D0  |> \8BC3          mov     eax, ebx
004989D2  |.  E8 79C4F9FF   call    00434E50
004989D7  |.  B2 01         mov     dl, 1
004989D9  |.  8BC3          mov     eax, ebx
004989DB  |.  8B08          mov     ecx, dword ptr [eax]
004989DD  |.  FF51 FC       call    dword ptr [ecx-4]
004989E0  |.  BB 01000000   mov     ebx, 1
004989E5  |>  8D4D F0       /lea     ecx, dword ptr [ebp-10]
004989E8  |.  8BD3          |mov     edx, ebx
004989EA  |.  B8 01000000   |mov     eax, 1
004989EF  |.  E8 C8FBFFFF   |call    004985BC
004989F4  |.  8B45 F0       |mov     eax, dword ptr [ebp-10]
004989F7  |.  50            |push    eax
004989F8  |.  8D45 EC       |lea     eax, dword ptr [ebp-14]
004989FB  |.  50            |push    eax
004989FC  |.  B9 01000000   |mov     ecx, 1
00498A01  |.  8BD3          |mov     edx, ebx
00498A03  |.  8B45 FC       |mov     eax, dword ptr [ebp-4]
00498A06  |.  E8 61C4F6FF   |call    00404E6C
00498A0B  |.  8B55 EC       |mov     edx, dword ptr [ebp-14]
00498A0E  |.  58            |pop     eax
00498A0F  |.  E8 44C3F6FF   |call    00404D58
00498A14  |.  74 39         |je      short 00498A4F ‘跳转要成功要不然到了JMP就完蛋了,可以自行修改
00498A16  |.  33D2          |xor     edx, edx
00498A18  |.  8B86 B0030000 |mov     eax, dword ptr [esi+3B0]
00498A1E  |.  E8 4DE8FBFF   |call    00457270
00498A23  |.  33D2          |xor     edx, edx
00498A25  |.  8B86 3C030000 |mov     eax, dword ptr [esi+33C]
00498A2B  |.  8B08          |mov     ecx, dword ptr [eax]
00498A2D  |.  FF51 64       |call    dword ptr [ecx+64]
00498A30  |.  33D2          |xor     edx, edx
00498A32  |.  8B86 38030000 |mov     eax, dword ptr [esi+338]
00498A38  |.  8B08          |mov     ecx, dword ptr [eax]
00498A3A  |.  FF51 64       |call    dword ptr [ecx+64]
00498A3D  |.  33D2          |xor     edx, edx
00498A3F  |.  8B86 54030000 |mov     eax, dword ptr [esi+354]
00498A45  |.  8B08          |mov     ecx, dword ptr [eax]
00498A47  |.  FF51 64       |call    dword ptr [ecx+64]
00498A4A  |.  E9 72010000   |jmp     00498BC1
00498A4F  |>  43            |inc     ebx
00498A50  |.  83FB 06       |cmp     ebx, 6
00498A53  |.^ 75 90         \jnz     short 004989E5  走到这里有一个回跳向上,因为注册码一段有5位,这里是验证第一段的5位注册码的正确,会回跳5次,5次后,JNZ会向上跳转失败程序走到第二段注册码的验证代码
和第一段一样,一直到四段走完,每一段的那个JE跳转都要修改得让它成功,方法很多,懒人就改JMP吧


这就是程序启动向注册表读取注册码时验证的地方,一共有四段,因为注册填的时候是按四段填的,
所以这里也是一段一段的验证的

当这四处修改完另存为后,再打开程序就发现软件注册的菜单没了


------------------------------------------------------------------------
【破解总结】每次到了夜深人静的时候我总是睡不着  我怀疑是不是只有我明天没有变的更好
未来会怎样究竟有谁会知道            幸福是否只是一种传说我永远都找不到

总的来说很简单!主要目的是看看我的OD还能用不,没想到还能用,嘿嘿。真神奇
------------------------------------------------------------------------
【版权声明】
打死也不承认

[ 本帖最后由 hackhd 于 2008-8-30 22:04 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2008-9-7 05:47:00 | 显示全部楼层
    已阅,请提交算法分析+注册机源码
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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