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? -----------------------------------------------------------
主窗口的未注册搞定了,下面就是关于窗口里的共享版了。
* Possible StringData Ref from Code Obj ->" 多谢楼主,收藏多学习下哈~ 补充:
程序在运行中,当你用鼠标连续点十一次文章,注册提示窗口就会弹出。也就是说,比如你在文章栏目里右边上的窗口里点文章的标题,连续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
:$ 高手,厉害的说/:D 值得学习
谢谢 这个应该说是作者留的暗桩! 强!!学习!!! 果然是高手,可惜我对VB了解不深,以后要在这方面多学习才行啊 搞手.学习了
页:
[1]
2