首页
社区
课程
招聘
[原创]破解 VB CrackMe 全实录
发表于: 2010-2-22 15:49 14624

[原创]破解 VB CrackMe 全实录

2010-2-22 15:49
14624

【文章标题】: 破解 VB CrackMe 全实录
【文章作者】: xiaojiam
【软件名称】: CM123.exe
【软件大小】: 24 KB
【下载地址】: 见以下附件
【保护方式】: 时钟检测+注册码
【编写语言】: VB
【使用工具】: PEID,OD
【操作平台】: D-Windows XP3
【连接地址】: http://bbs.pediy.com/showthread.php?t=107570
【程序介绍】: 供大家学习交流的小程序;
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
  【分析前闲谈】
--------------------------------------------------------------------------------
     整个程序里有四个时钟,但是时钟的扰乱作用要远远大于它真正提示作用。若是能去掉这些干扰因素

,这个CM绝对是一个很好的练手程序啊!不过值得一提的是这个程序的验证手段设计相当巧妙,验证过程

中需要字符串校验正确一个字符给出一个正确提示的字符。要是没有钢强的毅力那就真的没法看完整个过

程咯!
--------------------------------------------------------------------------------
  
  一、用PEID对程序进行查壳 → Microsoft Visual Basic 5.0 / 6.0 ,无壳练手程序啊!不过不要高兴

的太早了。
  
  二、用OD载入程序进行分析。
  
   载入OD后运行程序,试注册一下,有错误提示。用F12暂停法来到下面的地方(00402ED0)。然后我们再

在段首(00402E50)设置断点.再跑下结果发现是没用的不关键地方,然后再查查字符串结果也是一样!看来

关键地方还隐藏蛮深的哦!那我们就用VB的万能断点吧,查找二进字符串(816C24),来到00402184我们

在有JMP的地方都下断,然后跑起来发现(004021C0)和(004021CD)老是被断下来跟下去也没有用的,干脆把

它们都给取消掉。接着又在(004021A6)和(004021B3)断下,再跟跟发现(004021A6)是只对用户名作检测,

而(004021B3)就总在(004028A4)跳过,那么我们试试不让它跳,看到它对用户名和注册码都有操作,如是

我们大胆猜测这就是关键地方了。就在(004028AA)下断再按一下铵钮看看,结果断下来了。看看分析:

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

004028AA    8B96 94000000   mov edx,dword ptr ds:[esi+94]           ; 记次数给EDX;
004028B0    8B1D 70104000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaU>; MSVBVM60.__vbaUbound
004028B6    8D7E 78         lea edi,dword ptr ds:[esi+78]
004028B9    8995 BCFEFFFF   mov dword ptr ss:[ebp-144],edx
004028BF    57              push edi
004028C0    6A 01           push 1
004028C2    FFD3            call ebx                                ; 赋值循环次数为10;
004028C4    8B8D BCFEFFFF   mov ecx,dword ptr ss:[ebp-144]          ; 记载循环次数;
004028CA    3BC8            cmp ecx,eax                             ; 比较循环次数够10次了没;
004028CC    0F85 D6020000   jnz CM1237.00402BA8                     ; 不够则跳;
00402BA8    83F9 0B         cmp ecx,0B
00402BAB    72 06           jb short CM1237.00402BB3
00402BAD    FF15 48104000   call dword ptr ds:[<&MSVBVM60.__vbaGene>; 

MSVBVM60.__vbaGenerateBoundsError
00402BB3    8B9E 94000000   mov ebx,dword ptr ds:[esi+94]
00402BB9    83FB 0B         cmp ebx,0B
00402BBC    72 06           jb short CM1237.00402BC4
00402BBE    FF15 48104000   call dword ptr ds:[<&MSVBVM60.__vbaGene>; 

MSVBVM60.__vbaGenerateBoundsError
00402BC4    8BBE 94000000   mov edi,dword ptr ds:[esi+94]
00402BCA    83FF 0B         cmp edi,0B
00402BCD    72 06           jb short CM1237.00402BD5
00402BCF    FF15 48104000   call dword ptr ds:[<&MSVBVM60.__vbaGene>; 

MSVBVM60.__vbaGenerateBoundsError
00402BD5    8B46 68         mov eax,dword ptr ds:[esi+68]           ; 假码:1234567890;
00402BD8    8B4E 4C         mov ecx,dword ptr ds:[esi+4C]           ; 用户明:8JAD8K7CZW;
00402BDB    66:8B1458       mov dx,word ptr ds:[eax+ebx*2]          ; 取注册码(1234567890)每

个字符的UNICODE值传递给DX;
00402BDF    8B85 BCFEFFFF   mov eax,dword ptr ss:[ebp-144]          ; 循环记次数;
00402BE5    66:331441       xor dx,word ptr ds:[ecx+eax*2]          ; 取用户名每个字符的

UNICODE与DX的值XOR;
00402BE9    8B8E 84000000   mov ecx,dword ptr ds:[esi+84]           ; 把XOR后的数值转换为字符

串给ECX;
00402BEF    66:891479       mov word ptr ds:[ecx+edi*2],dx          ; XOR所得数值(DX)转换好放

在[ECX+EDI*2]这地址上;
00402BF3    8B96 94000000   mov edx,dword ptr ds:[esi+94]           ; 记次数给EDX;
00402BF9    83C2 01         add edx,1                               ; EDX加1;

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

上传的附件:
收藏
免费 8
支持
分享
最新回复 (25)
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
都没人看的啊!
2010-2-23 15:51
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
有啊,我很详细的看了啊  
2010-2-23 16:16
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
VB的东西总是鼓不起勇气来看,受不了VB
2010-2-23 16:36
0
雪    币: 431
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
支持楼主 不过VB我同意楼上的看法
2010-2-23 16:39
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
我有给你加热心
因为你说你需要热心不需要UB
2010-2-23 16:47
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
7
听不懂啥意思,听不明白
2010-2-23 17:03
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
关于某c语言教程的故事
2010-2-23 18:13
0
雪    币: 135
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
非常好的教程,谢谢楼主
上传的附件:
2010-2-23 22:59
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
10
S大应该是指UNPACK站上的事,作者在UPK上也有发这篇文章,呵
2010-2-23 23:11
0
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
看了一下楼主的代码,真是吓死人了。还好盲中了?
2010-2-23 23:15
0
雪    币: 135
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
还好啦,就是时钟有些绕人~
如果把循环次数作一个计算,并且打乱顺序和在不同的时钟分配计算任务,同时随机选择注册码出错后结束比较或者使用错误的顺序比较出错误的结果会怎么样?
2010-2-23 23:22
0
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
13
要是这样的话你就早点通知我,我是一定不会玩的!谢谢合作!
2010-2-24 11:19
0
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
真是天道酬勒啊,终于博得受精!
2010-2-26 10:14
0
雪    币: 140
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
VB做初级新手还是可以的
2010-3-4 10:51
0
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
楼主 会 几门语言了哈
2010-4-11 14:34
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
头晕啦,醒来再看
2010-4-11 17:04
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
MSVBVM60.__vbaGene ???
MSVBVM60.__vbaGenerateBoundsError   ????
楼主能解释一下么?
2010-4-11 21:23
0
雪    币: 136
活跃值: (1525)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
19
好贴啊,VB的程序我感觉很头疼
2010-4-11 22:43
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
一看到VB就提不起兴趣了。。。
2010-6-28 08:11
0
雪    币: 3487
活跃值: (251)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
VB的破解总是让人惆怅
2010-6-28 11:29
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
看到vb就头疼,学习了
2010-6-28 11:34
0
雪    币: 455
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
VB做初级新手还是可以的。
2011-3-25 16:27
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
对VB不了解的真是难以分析它。今天算是学习了。
2011-3-25 17:08
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
25
只要注意编程技巧,没有能与不能之说:


我的注册机: RegCM 123.rar
上传的附件:
2011-3-26 14:14
0
游客
登录 | 注册 方可回帖
返回
//