xbb[DFCG] 发表于 2005-4-17 15:14:07

VB学习系统爆破及修改--新手级

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
【软件大小】 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:
660DC5FC   53                  push ebx
660DC5FD   56                  push esi
660DC5FE   57                  push edi
660DC5FF   66:8339 0A          cmp word ptr ds:,0A
660DC603   B8 04000280         mov eax,80020004
660DC608   0F85 FC000000       jnz MSVBVM60.660DC70A
660DC60E   3941 08             cmp dword ptr ds:,eax


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

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

    我们向上看

004333D5    > \8B35 54114000   mov esi,dword ptr ds:[<&MSVBVM60._>;光标停在这里,可以看到OD提示 跳转来自433337
004333DB    .B9 04000280       mov ecx,80020004
004333E0    .894D A8         mov dword ptr ss:,ecx
004333E3    .B8 0A000000       mov eax,0A
004333E8    .894D B8         mov dword ptr ss:,ecx
004333EB    .BF 08000000       mov edi,8
004333F0    .8D55 80         lea edx,dword ptr ss:
004333F3    .8D4D C0         lea ecx,dword ptr ss:
004333F6    .8945 A0         mov dword ptr ss:,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:,0FFFF
00433337       0F85 98000000   jnz VB学习系.004333D5       <-这里跳走就弹出未注册信息,85改为84就可以使用搜索功能了 :)
0043333D    .8B0E            mov ecx,dword ptr ds:
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:
00432F81    .8D45 B4         lea eax,dword ptr ss:
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:,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:,0FFFF
00432D36    .0F85 E5010000   jnz VB学习系.00432F21          <-就是从这里跳的,85改84。


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


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


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

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

   上面的跳转来到这里

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

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

* Possible StringData Ref from Code Obj ->"鵞
Nw?

xbb[DFCG] 发表于 2005-4-17 15:14:48

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

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


* Possible StringData Ref from Code Obj ->"

温柔 发表于 2005-4-19 01:25:07

多谢楼主,收藏多学习下哈~

xbb[DFCG] 发表于 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 2C004500cmp word ptr ds:,di      ;di记录你点击的次数
00436F88    .0F85 FE000000   jnz VB学习系.0043708C            ;不相等跳走
00436F8E    .66:8B46 46      mov ax,word ptr ds:
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:,ax      ;把次数保存在ds地址里
00436FA4    .0F8E E2000000   jle VB学习系.0043708C            ;小于10跳,
00436FAA    .66:897E 46      mov word ptr ds:,di
00436FAE    .A1 7C004500       mov eax,dword ptr ds:
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
                                                   05-4-23


更新补丁在下面
http://www.chinadfcg.com/viewthread.php?tid=143780
:$

hyd009 发表于 2005-4-27 22:05:15

高手,厉害的说/:D

taylor2004 发表于 2006-3-30 16:37:22

值得学习
谢谢

wx73721 发表于 2006-4-3 12:26:15

这个应该说是作者留的暗桩!

lhl8730 发表于 2006-5-10 21:13:00

强!!学习!!!

hanxiucao 发表于 2006-6-11 22:38:44

果然是高手,可惜我对VB了解不深,以后要在这方面多学习才行啊

bfqyygy 发表于 2006-6-11 23:40:50

搞手.学习了
页: [1] 2
查看完整版本: VB学习系统爆破及修改--新手级