飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 12898|回复: 13

[原创] VB学习系统爆破及修改--新手级

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-16 20:38
  • 签到天数: 1491 天

    [LV.10]以坛为家III

    发表于 2005-4-17 15:14:07 | 显示全部楼层 |阅读模式
    VB学习系统爆破及修改--新手级


    【软件简介】    Microsoft Visual Basic 提供了开发了Window应用程序的最迅速,最简捷的方法。不论是Windows 应用程序的资深专业开发人员还是初学者,Visual Basic都为他们提供了整套工具,以方便开发应用程序。

    但是,学编程不是一件很简单的事情。Visual Basic虽然很容易入门,精通不易。因此,只有通过不断的实践,亲手编写程序,在实践中不断体会才能深入Visual Basic 的精髓。

    Visual Basic学习系统 是一个教学软件,主要有以下功能:

    1、基础知识:包含Visual Basic的基本知识,通过分章节的教学,使您能快速入门Visual Basic。
    2、API函数:包含1500多个Windows API函数的详细说明,并附有详细实例,使您能常握Visual Basic编程的精髓部分。
    3、编程实例:包含6个类别150多个编程实例,使您能巩固Visual Basic编程的学习。
    4、文章:包含6个类别200多篇编程文章,解决您在编程中遇到的各种疑难问题。

    【作者邮箱】 [email protected]
    【使用工具】 SMARTCHK6.03/二哥的UnkillOllydbg/W32dasm无极版
    破解平台】 Win9x/NT/2000/XP
    【下载地址】 天空下载站
    【破解作者】 xbb[DFCG][PYG]
    【软件大小】 348K
    【加壳方式】 元
    【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------------------------
    【破解内容】
       
        信息:
            语言:Microsoft Visual Basic 5.0 / 6.0
            保护:功能限制(API函数无法使用搜索功能、实例无法查看)、NAG提示

            在注册表HKLM\Software下建立You Company\VB学习系统\1.2 内容为AppPath用户名和组织名称


    -----------------------------------------------------------
        先对付API函数中的搜索功能限制

        我们用bp rtcMsgBox来对程序下断。

        程序运行后,在API函数处使用搜索功能,程序在下面代码处被断下

    660DC5F3 M>  55                  push ebp      断在这里
    660DC5F4     8BEC                mov ebp,esp
    660DC5F6     83EC 4C             sub esp,4C
    660DC5F9     8B4D 14             mov ecx,dword ptr ss:[ebp+14]
    660DC5FC     53                  push ebx
    660DC5FD     56                  push esi
    660DC5FE     57                  push edi
    660DC5FF     66:8339 0A          cmp word ptr ds:[ecx],0A
    660DC603     B8 04000280         mov eax,80020004
    660DC608     0F85 FC000000       jnz MSVBVM60.660DC70A
    660DC60E     3941 08             cmp dword ptr ds:[ecx+8],eax


        看堆栈,我们可以看到程序将返回到433432处。OK,我们回到程序的领空,找到该处代码。

    0043342C    .  FF15 5C104000     call dword ptr ds:[<&MSVBVM60.#595>;  MSVBVM60.rtcMsgBox
    00433432    .  8D45 A0           lea eax,dword ptr ss:[ebp-60]      上面返回到这里
    00433435    .  8D4D B0           lea ecx,dword ptr ss:[ebp-50]
    00433438    .  50                push eax
    00433439    .  8D55 C0           lea edx,dword ptr ss:[ebp-40]

        我们向上看

    004333D5    > \8B35 54114000     mov esi,dword ptr ds:[<&MSVBVM60._>;  光标停在这里,可以看到OD提示 跳转来自433337
    004333DB    .  B9 04000280       mov ecx,80020004
    004333E0    .  894D A8           mov dword ptr ss:[ebp-58],ecx
    004333E3    .  B8 0A000000       mov eax,0A
    004333E8    .  894D B8           mov dword ptr ss:[ebp-48],ecx
    004333EB    .  BF 08000000       mov edi,8
    004333F0    .  8D55 80           lea edx,dword ptr ss:[ebp-80]
    004333F3    .  8D4D C0           lea ecx,dword ptr ss:[ebp-40]
    004333F6    .  8945 A0           mov dword ptr ss:[ebp-60],eax

        我们找上去

    00433320    .  FF15 98114000     call dword ptr ds:[<&MSVBVM60.__vb>;  MSVBVM60.__vbaFreeObj
    00433326    .  66:3BFB           cmp di,bx
    00433329       0F85 1E010000     jnz VB学习系.0043344D
    0043332F    .  66:833D 2C004500 >cmp word ptr ds:[45002C],0FFFF
    00433337       0F85 98000000     jnz VB学习系.004333D5       <-这里跳走就弹出未注册信息,85改为84就可以使用搜索功能了 :)
    0043333D    .  8B0E              mov ecx,dword ptr ds:[esi]
    0043333F    .  56                push esi


    -----------------------------------------------------------

        接下来是API函数中的实例按钮功能限制。我们用bp rtcMsgBox来对程序下断。程序一共调用rtcMsgBox函数六次,我们在每个上面都下断,进入程序,在API函数面板中,随便选一个API函数,然后点界面右下角的实例按钮,程序被断下。

    00432F78    .  FF15 5C104000     call dword ptr ds:[<&MSVBVM60.#595>;  MSVBVM60.rtcMsgBox 我们断在这里,OK,向上找跳转。
    00432F7E    .  8D55 A4           lea edx,dword ptr ss:[ebp-5C]
    00432F81    .  8D45 B4           lea eax,dword ptr ss:[ebp-4C]
    00432F84    .  52                push edx

        找到这里

    00432F21    > \8B35 54114000     mov esi,dword ptr ds:[<&MSVBVM60._>;  光标停在这行里可以看到OD提示是由432D36处跳来的,跟过去
    00432F27    .  B9 04000280       mov ecx,80020004
    00432F2C    .  894D AC           mov dword ptr ss:[ebp-54],ecx
    00432F2F    .  B8 0A000000       mov eax,0A

        找到这里

    00432D1F    .  FF15 98114000     call dword ptr ds:[<&MSVBVM60.__vb>;  MSVBVM60.__vbaFreeObj
    00432D25    .  66:85FF           test di,di
    00432D28    .  0F84 6B020000     je VB学习系.00432F99
    00432D2E    .  66:833D 2C004500 >cmp word ptr ds:[45002C],0FFFF
    00432D36    .  0F85 E5010000     jnz VB学习系.00432F21          <-就是从这里跳的,85改84。


        OK,这下实例按钮按后就不会提示你注册了。:)


    -----------------------------------------------------------


        下面的代码是用W32asm无极版反汇编由参考字串找到的,怀疑也是另一个功能限制的提示注册框(因为我没有找到这个功能限制,不过也破了它。:))

    :00446AA8 895D88                  mov dword ptr [ebp-78], ebx
    :00446AAB 899D78FFFFFF            mov dword ptr [ebp+FFFFFF78], ebx
    :00446AB1 899D54FFFFFF            mov dword ptr [ebp+FFFFFF54], ebx
    :00446AB7 0F8564020000            jne 00446D21               <-爆破处,将85改84即可。
    :00446ABD 8B16                    mov edx, dword ptr [esi]
    :00446ABF 56                      push esi
    :00446AC0 FF9220070000            call dword ptr [edx+00000720]
    :00446AC6 8B06                    mov eax, dword ptr [esi]
    :00446AC8 56                      push esi
    :00446AC9 FF9010030000            call dword ptr [eax+00000310]

         上面的跳转来到这里

    :00446D21 8B3D54114000            mov edi, dword ptr [00401154]
    :00446D27 B904000280              mov ecx, 80020004
    ......

    * Possible StringData Ref from Code Obj ->"鑜孮"                 <-注册
                                      |
    :00446D46 C74580C07F4000          mov [ebp-80], 00407FC0
    :00446D4D C78578FFFFFF08000000    mov dword ptr [ebp+FFFFFF78], 00000008
    :00446D57 FFD7                    call edi
    :00446D59 8D5588                  lea edx, dword ptr [ebp-78]
    :00446D5C 8D4DC8                  lea ecx, dword ptr [ebp-38]

    * Possible StringData Ref from Code Obj ->"鵞
    Nw?
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-10-16 20:38
  • 签到天数: 1491 天

    [LV.10]以坛为家III

     楼主| 发表于 2005-4-17 15:14:48 | 显示全部楼层
    -----------------------------------------------------------

        主窗口的未注册搞定了,下面就是关于窗口里的共享版了。


    * Possible StringData Ref from Code Obj ->"
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    前天 21:02
  • 签到天数: 263 天

    [LV.8]以坛为家I

    发表于 2005-4-19 01:25:07 | 显示全部楼层
    多谢楼主,收藏多学习下哈~
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-10-16 20:38
  • 签到天数: 1491 天

    [LV.10]以坛为家III

     楼主| 发表于 2005-4-23 23:28:30 | 显示全部楼层
    补充:
        程序在运行中,当你用鼠标连续点十一次文章,注册提示窗口就会弹出。也就是说,比如你在文章栏目里右边上的窗口里点文章的标题,连续10次,那么第11次就会弹出注册提示窗口。
        我尝试用sendmessagea来对程序下断。断不下来,放弃。
        最后还是请出了SMARTCHK6.03,让他记录下来在程序里点击文章的所调用的地址,我这里是004372A2。OK,OD打开程序,Ctrl+G,在这行F2下断。运行,程序果然断下。
        后仔细观察程序,点击10次后,再点第11次时,注册窗口弹出。于是猜测,程序肯定在上面的调用前面有一处代码来对点击次数与0A(十进制是10)进行比较。嘿嘿,还真被我找到了。就是下面的。
        我倒。。。。。。我以为只有下面一个地方检测,原来程序的基础知识、API函数、实例代码、文章各个里面都会有相同的比较地点,我杀!!!下面只贴出一处代码,其余的就不贴了吧。继续侦查......


    00436F7B    .  FF15 64104000     call dword ptr ds:[<&MSVBVM60.__>;  MSVBVM60.__vbaObjSetAddref
    00436F81    .  66:393D 2C004500  cmp word ptr ds:[45002C],di      ;  di记录你点击的次数
    00436F88    .  0F85 FE000000     jnz VB学习系.0043708C            ;  不相等跳走
    00436F8E    .  66:8B46 46        mov ax,word ptr ds:[esi+46]
    00436F92    .  66:05 0100        add ax,1                         ;  计数器加1
    00436F96    .  0F80 E4030000     jo VB学习系.00437380             ;  是否溢出
    00436F9C    .  66:3D 0A00        cmp ax,0A                        ;  计数器与10比较
    00436FA0    .  66:8946 46        mov word ptr ds:[esi+46],ax      ;  把次数保存在ds[esi+46]地址里
    00436FA4    .  0F8E E2000000     jle VB学习系.0043708C            ;  小于10跳,
    00436FAA    .  66:897E 46        mov word ptr ds:[esi+46],di
    00436FAE    .  A1 7C004500       mov eax,dword ptr ds:[45007C]
    00436FB3    .  3BC7              cmp eax,edi
    00436FB5    .  75 15             jnz short VB学习系.00436FCC
    00436FB7    .  68 7C004500       push VB学习系.0045007C
    00436FBC    .  68 90484000       push VB学习系.00404890


        花了半个小时左右,终于找到了元凶,接下来就是把它干掉了。用Ue打开程序,Ctrl+g,输入下面的地址,然后修改。完成。

    文章处:

    00436FA4    .  0F8E E2000000     jle VB学习系.0043708C --------0F8E E2000000改成E9E3000000

    实例代码处:

    004350F4    . /0F8E DF000000     jle VB学习系.004351D9---------0F8E DF000000改成E9E0000000

    API函数处:

    0043567D    . /0F8C E0000000     jl VB学习系.00435763---------0F8C E0000000改成E9E1000000

    基础知识处:

    0044166C    . /0F8C E6000000     jl VB学习系.00441758---------0F8C E6000000改成E9E7000000




        上面这些跳转代码的计算,大家可以在看雪下载jumpgen.v0.4b来计算,非常方便。用Ue修改也非常方便。经过测试,程序运行中,那个讨人厌的注册提示窗口再也不出来了。
        通过自己的努力把困绕自己的问题解决了,感觉真是不错。

                                                    Xbb[DFCG][PYG]
                                                       05-4-23


    更新补丁在下面
    http://www.chinadfcg.com/viewthread.php?tid=143780
    :$
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-4-27 22:05:15 | 显示全部楼层
    高手,厉害的说/:D
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-30 16:37:22 | 显示全部楼层
    值得学习
    谢谢
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-4-3 12:26:15 | 显示全部楼层
    这个应该说是作者留的暗桩!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-10 21:13:00 | 显示全部楼层
    强!!学习!!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-6-11 22:38:44 | 显示全部楼层
    果然是高手,可惜我对VB了解不深,以后要在这方面多学习才行啊
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-1-14 00:02
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2006-6-11 23:40:50 | 显示全部楼层
    搞手.学习了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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