首页
社区
课程
招聘
[转帖]申请加入DFCG NO.2--VBIDEUtils v4.00注册算法分析
发表于: 2005-10-11 18:31 9048

[转帖]申请加入DFCG NO.2--VBIDEUtils v4.00注册算法分析

2005-10-11 18:31
9048

VBIDEUtils v4.00注册算法分析
【破解作者】 winndy[FCG][PYG]
【作者邮箱】 CNwinndy@hotmail.com
【使用工具】 Driver Studio 3.2   Ollydbg v1.10 fly修改版
【破解平台】 Winxp
【软件名称】 VBIDEUtils v4.00
【官方网址】 http://www.vbdiamond.com/
【编写语言】 Microsoft VB 6.0
【软件介绍】 这是一款VB插件,里面整合了很多功能。
【破解声明】 For Study ,For Fun
【保护方式】 VB Pcode,序列号
【破解过程】 这是一个VB Addins,觉得很棘手。主要破解思路为:
  1.首先到VBIDEUtils的安装目录去看看,查看里面的ocx以及dll,以求寻得一些有用线索。
  2.采用OD以及各种反编译软件(包括Pcode的反编译工具,象VB RezQ Version 2.4a ,VB Decompiler ,vb explorer等)尝试
    得到一些敏感信息。最终锁定的目标是VBIDEUtils.dll。尽管VB Decompiler和vb explorer都是很好的Pcode反编译工具,但是
    其均不能反编译VBIDEUtils.dll。采用VB RezQ Version 2.4a则只能得到其窗体(注册窗体导出来被我利用写了注册机),并未有
    任何实质性的代码。
3.采用OD,能看到其中的导入的函数,但是也不可以动态调试(可能是我还没掌握用OD动态调试dll吧)。
4.没有办法,只好请出SoftICE。从这个时刻起,我就做好了吃苦的准备,边调试,边手工在草稿纸上作笔记,故这篇文章的代码也是从
   草稿纸上敲进来的,有影响阅读的,还望多体谅。

   现在,开始介绍具体步骤。
    拿到一个VB程序,常不知道下什么断点才是有成效的,为避免走弯路,我首先采用OD打开dll,再从其导入函数中,根据自己的敏感
   来挑选一些可能很重要的函数下断点。
   OD得到的导入函数为(在入口处,向上翻一页就可以看到):
   

   112511C0    .- FF25 BC1025>jmp dword ptr ds:[<&MSVBVM60.DllFunctionCall>]   ;  MSVBVM60.DllFunctionCall
112511C6    .- FF25 501025>jmp dword ptr ds:[<&MSVBVM60.#594>]              ;  MSVBVM60.rtcRandomize
112511CC    .- FF25 481025>jmp dword ptr ds:[<&MSVBVM60.#593>]              ;  MSVBVM60.rtcRandomNext
112511D2    .- FF25 401125>jmp dword ptr ds:[<&MSVBVM60.#572>]              ;  MSVBVM60.rtcHexBstrFromVar
112511D8    .- FF25 581025>jmp dword ptr ds:[<&MSVBVM60.#595>]              ;  MSVBVM60.rtcMsgBox
112511DE    .- FF25 941025>jmp dword ptr ds:[<&MSVBVM60.#631>]              ;  MSVBVM60.rtcMidCharBstr
....
....
为了阅读的方便,省略若干...

   
001B:73492B08 pop ecx               ;ecx=65,别忘了77 xor 12=65
         2B09 mov [eax*2+ebx],cx    ;cx=65,这里保存65,我电脑上ebx是001D1180,eax=1。
......
     73492A3E mov BX,[eax*2+ebx]   ;这里取出了65
         2A42 push ebx              ;压入堆栈
.....
         5191 pop eax               ;取出65
              add [esp],AX          ;累加和
......
001B:7348E2FA pop ebx              ;bx=65
          E2FB mov [ebp+eax],bx     ;保存和,ebp=0012DFF4,eax=FFFFFECC,ebp+eax=0012DEC0
                                    ;下命令 d ebp+eax,可以看到数据。


001B:7348E2B6 movsx eax,WORD PTR [esi]
         E2B9 mov    ax,[ebp+eax]            ;取出和
         E2BD push eax                       ;压入堆栈
......
     73495191 pop eax                        ;把和弹出来
         5192 add [esp],ax                   ;累加两个和,[esp]=02B9,ax=066C,sum=0925


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
2005-10-11 19:50
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
3
没坐上沙发!

板凳也好啊!

支持+学习!!
2005-10-11 20:20
0
雪    币: 50
活跃值: (145)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
有毅力佩服!!!!!!!!!!!
2005-10-11 23:40
0
雪    币: 367
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有些用户名得到的注册码不对哦:)
2005-10-12 13:06
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
6
最初由 DarkNess0ut 发布
有些用户名得到的注册码不对哦:)


谢谢黑老大指点
把不对的用户名拿出来
我再看看。
2005-10-12 13:22
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
7
最初由 DarkNess0ut 发布
有些用户名得到的注册码不对哦:)

老大,你说的是不是中文用户名啊?
这个我在注册机里确实没有处理。
以前破PYG的crackme时,刚开始作出的注册机也是不完美,不支持汉字,
后来加入了,才算通过PYG的关卡。
2005-10-13 17:47
0
雪    币: 367
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
比如我用DarkNess0ut,得到的注册码不能注册
汉字没有试过
2005-10-13 18:35
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
9
最初由 DarkNess0ut 发布
比如我用DarkNess0ut,得到的注册码不能注册
汉字没有试过

好,谢了
我有时间再看看
2005-10-13 18:45
0
游客
登录 | 注册 方可回帖
返回
//