首页
社区
课程
招聘
我的第二篇破文------wordcard 3.10的破解明细
发表于: 2004-8-30 17:17 12816

我的第二篇破文------wordcard 3.10的破解明细

2004-8-30 17:17
12816

我的第二篇破文------wordcard 3.10的破解明细
作者:restxx     
破解目标:wordcard 3.10 这个东西是我一个月前下的,现在不知什么地方有但3.20版的很多,这个版本应该也不少
破解工具:ollydbg1.10(包括老罗的ULtra string ref)   winxp

破解分析:无壳,哇塞,爽!!这个VB写的破软件是用随机生成的机器码来生成序列号保护码的,
载入之后忽略所有的异常,并在OLLYDBG中用Shift+f9运行,

载入后看到的是如下代码,一看就知道是VB写的,由于是解释型语言,这样就只能在msvbvm60.DLL模块中下断了
_____________________________________________________________________
00404F98 > $  68 D0534000   PUSH wordcard.004053D0
00404F9D   .  E8 EEFFFFFF   CALL <JMP.&MSVBVM60.#100>
00404FA2   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FA4   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FA6   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FA8   .  3000          XOR BYTE PTR DS:[EAX],AL
00404FAA   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FAC   .  40            INC EAX
00404FAD   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FAF   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FB1   .  0000          ADD BYTE PTR DS:[EAX],AL
00404FB3   .  00C5          ADD CH,AL
00404FB5   .  1904A6        SBB DWORD PTR DS:[ESI],EAX
******************************************************************
选 查看\执行模块,找到msvbvm60.dll并click它,看到如下代码页
***********************************************************************************
66001000 >  53              PUSH EBX
66001001    BE E5778F4A     MOV ESI,4A8F77E5
66001006    E5 77           IN EAX,77                                ; I/O 命令
66001008 >  59              POP ECX
66001009    53              PUSH EBX
6600100A    E5 77           IN EAX,77                                ; I/O 命令
6600100C >  9E              SAHF
6600100D    FC              CLD
6600100E    E4 77           IN AL,77                                 ; I/O 命令
66001010 >  ED              IN EAX,DX                                ; I/O 命令
66001011    95              XCHG EAX,EBP
66001012    E5 77           IN EAX,77                                ; I/O 命令
66001014 >  8B98 E4774A16   MOV EBX,DWORD PTR DS:[EAX+164A77E4]
6600101A    E5 77           IN EAX,77                                ; I/O 命令
6600101C >  A2 B4E477B1     MOV BYTE PTR DS:[B177E4B4],AL
66001021    C6              ???                                      ; 未知命令
66001022    E4 77           IN AL,77                                 ; I/O 命令
66001024 >  B8 16E47737     MOV EAX,3777E416
66001029    38E5            CMP CH,AH
6600102B    77 6B           JA SHORT <&KERNEL32.LeaveCriticalSection>
6600102D    90              NOP
6600102E    E4 77           IN AL,77                                 ; I/O 命令
66001030 >  E1 60           LOOPDE SHORT MSVBVM60.66001092
66001032    E5 77           IN EAX,77                                ; I/O 命令
66001034 >  8BB0 E5779725   MOV ESI,DWORD PTR DS:[EAX+259777E5]
6600103A    E5 77           IN EAX,77                                ; I/O 命令
**************************************************************************************
点右键,搜索\当前模块中的名称,看看后找到vbaVarCopy(当然有兴趣的朋友可以用上面的vbaSriComp或邻近的几个功能相近的试试,反正我也没用过)这个时候不要下断,返回到CPU页(上面的代码处),用Shift+f9运行,进入注册码填写的地方,随手写入123456654987不要点确定(这个时候最好让这个破软件停下来,不要读词了)再回到vbaVarCopy这个地方下断点,这个时候才可以点确定,这之后会停在如下地方,这之后用F8走
*******************************************************************************************
66106BF8 >  51              PUSH ECX
66106BF9    A1 7CEE1066     MOV EAX,DWORD PTR DS:[6610EE7C]
66106BFE    53              PUSH EBX
66106BFF    55              PUSH EBP
66106C00    56              PUSH ESI
66106C01    57              PUSH EDI
66106C02    8BDA            MOV EBX,EDX
66106C04    8BF1            MOV ESI,ECX
66106C06    50              PUSH EAX
66106C07    FF15 B8100066   CALL DWORD PTR DS:[<&KERNEL32.TlsGetValu>; kernel32.TlsGetValue
66106C0D    66:8B2B         MOV BP,WORD PTR DS:[EBX]
66106C10    8D78 50         LEA EDI,DWORD PTR DS:[EAX+50]
66106C13    66:8B06         MOV AX,WORD PTR DS:[ESI]
66106C16    66:83FD 08      CMP BP,8
66106C1A    73 26           JNB SHORT MSVBVM60.66106C42
66106C1C    66:3D 0800      CMP AX,8
66106C20    73 20           JNB SHORT MSVBVM60.66106C42
66106C22    8B13            MOV EDX,DWORD PTR DS:[EBX]
66106C24    8B43 04         MOV EAX,DWORD PTR DS:[EBX+4]
66106C27    8BCE            MOV ECX,ESI
66106C29    8911            MOV DWORD PTR DS:[ECX],EDX
66106C2B    8B53 08         MOV EDX,DWORD PTR DS:[EBX+8]
66106C2E    8941 04         MOV DWORD PTR DS:[ECX+4],EAX
66106C31    8B43 0C         MOV EAX,DWORD PTR DS:[EBX+C]
66106C34    8951 08         MOV DWORD PTR DS:[ECX+8],EDX
66106C37    8941 0C         MOV DWORD PTR DS:[ECX+C],EAX
66106C3A    8BC6            MOV EAX,ESI
66106C3C    5F              POP EDI
*************************************************************
66106CBF    3BDE            CMP EBX,ESI
66106CC1    0F84 04010000   JE MSVBVM60.66106DCB
66106CC7    8BCE            MOV ECX,ESI
66106CC9    E8 7E7DFFFF     CALL MSVBVM60.__vbaFreeVar
66106CCE    8B5B 08         MOV EBX,DWORD PTR DS:[EBX+8]
66106CD1    66:C706 0800    MOV WORD PTR DS:[ESI],8
66106CD6    85DB            TEST EBX,EBX
66106CD8    C746 08 0000000>MOV DWORD PTR DS:[ESI+8],0
66106CDF    0F84 E6000000   JE MSVBVM60.66106DCB
66106CE5    75 1C           JNZ SHORT MSVBVM60.66106D03
66106CE7    33C0            XOR EAX,EAX
66106CE9    50              PUSH EAX
66106CEA    53              PUSH EBX
66106CEB    FF15 F4190066   CALL DWORD PTR DS:[<&OLEAUT32.#150>]     ; OLEAUT32.SysAllocStringByteLen

到这里就会看到我刚才写入的“123456987”了   66106CD8    C746 08 0000000>MOV DWORD PTR DS:[ESI+8],0
不要管它坚持就是胜利,接用着F8走几步,又来到如下地方
00424C5C   .  C785 04FFFFFF>MOV DWORD PTR SS:[EBP-FC],wordcard.0040B>
00424C66   .  C785 FCFEFFFF>MOV DWORD PTR SS:[EBP-104],8
00424C70   .  8D95 FCFEFFFF LEA EDX,DWORD PTR SS:[EBP-104]
00424C76   .  8D8D 3CFFFFFF LEA ECX,DWORD PTR SS:[EBP-C4]
00424C7C   .  FF15 74124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>;  MSVBVM60.__vbaVarDup
00424C82   .  8D95 0CFFFFFF LEA EDX,DWORD PTR SS:[EBP-F4]
00424C88   .  52            PUSH EDX
00424C89   .  8D85 1CFFFFFF LEA EAX,DWORD PTR SS:[EBP-E4]

到这一行就可以在数据窗口看到真正的注册码了
00424C5C   .  C785 04FFFFFF>MOV DWORD PTR SS:[EBP-FC],wordcard.0040B>
如下
0040BC2C=wordcard.0040BC2C
Stack SS:[0012F534]=0018FA4C, (UNICODE "77p4mf81r8357")
这个77p4mf81r8357就是注册码了,我的机器码是27090435875640
你学会了吗?
我写这个的目的只是想给破解无门的初学者一点鼓舞,我也是一个初学者,2004,6,14才拥有了第一台属于自己的电脑
。但请不要误会我学电脑却有5年多了,都是在网吧和书店学会的(包括JAVA,C之类),哥们没见过像我这样的网吧狂人吧,那个网吧老板也怕了我,呵呵!!经常搞得不能开机。顺便说一下我也是同济医学院的,不知看雪老大是不是在武汉读的,最后:请记住坚持就会成功!
网管,我以前申请的doa007(也可能是doc007),不知为什么能进论坛但不能发帖,我比较喜欢以前的帐号


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (33)
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
最初由 restxx 发布
2004,6,14才拥有了第一台属于自己的电脑


虽然现目:D
但更加支持~!
2004-8-30 18:17
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这种儿童级别的文章就不要写了吧,已经很多了。
2004-8-30 18:51
0
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
最初由 鸡蛋壳 发布
这种儿童级别的文章就不要写了吧,已经很多了。


晕,无话可说,
谁不是从菜鸟开始的撒?
我就不信蛋蛋生下来就懂Crack~!:o
2004-8-30 18:56
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 wangshy 发布


晕,无话可说,
谁不是从菜鸟开始的撒?
我就不信蛋蛋生下来就懂Crack~!:o


我开始学破解,是当时台湾787878大法正火的时候,以及KTC火暴的时候,我是从他们的文章入手的。现在这些教学一样很经典,根本不需要再写这类教学。这是资源浪费,更何况你写的也不比那些高手写的基础教学那么好理解。
2004-8-30 19:12
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 鸡蛋壳 发布
这种儿童级别的文章就不要写了吧,已经很多了。

应该鼓励!坚决支持.你当初???
2004-8-30 20:03
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
似乎应该发到破解版或者调试版,发到脱壳的版面
似乎有点不大妥当!
2004-8-30 20:13
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 limee 发布
似乎应该发到破解版或者调试版,发到脱壳的版面
似乎有点不大妥当!

这与版面无关!要鼓励初学者,这是一个大家庭,我想有些人刚学破解时还不如此!
2004-8-30 20:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
文章不错

我转了
2004-8-30 21:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 鸡蛋壳 发布
这种儿童级别的文章就不要写了吧,已经很多了。


really?? then u try to write 1 urself and let us see whether it's a good tut or not....don't just talk....
2004-8-30 21:54
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
11
鼓励一下
每个人都是从第一步开始的
2004-8-30 23:20
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
虽然发错了版面,但是我还是支持你的!
就算是简单的破文又怎么样,每个人都是从菜开始的,在我们菜鸟成长过程中,有了小得,把自己的心得,自己的经验写下来,有什么不好,为什么要反对!
虽然鸡蛋壳你很厉害,但是我却不佩服你!这一点,我不得不说,我很佩服fly,无论是技术还是人品!
2004-8-31 00:10
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
喜欢这里关税,这里的斑竹人很好~!
希望大家多发些有分析性的文章,这样即使遇到
变形壳什么的也就不怕了!
2004-8-31 00:36
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
对我们这些新手来讲,这些文章起点低,易于理解。
2004-8-31 08:50
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
15
新手要鼓励,大家都是这么过来的:D
2004-8-31 10:51
0
雪    币: 216
活跃值: (115)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
非常感谢各位的回贴(居然有10多个),以及版主的鼓励,以后每次破解了难度高一级的保护我就会写个破文发在这里,用以鉴证进步
2004-8-31 13:46
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
可以学习,支持!
2004-8-31 14:31
0
雪    币: 216
活跃值: (115)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
英语单词卡(Wordcard) V3.20 精装版,下载地址
http://www.fixdown.com/soft/2720.htm
刚才我发现3.20版的和3.10版的破解方法完全相同,有兴趣的朋友可以试试
2004-8-31 14:32
0
雪    币: 2958
活跃值: (2420)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这样的文章好读!!!
2004-8-31 18:58
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
20
我就喜欢简单的

鸡蛋壳你看得懂  可以不看
2004-8-31 21:02
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
21
支持此类文章
不过有些通用断点在VB程序也可以下
难怪**壳在***G论坛被人家点名关注......,看来名不虚传
2004-8-31 21:52
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
22
最初由 鸡蛋壳 发布


我开始学破解,是当时台湾787878大法正火的时候,以及KTC火暴的时候,我是从他们的文章入手的。现在这些教学一样很经典,根本不需要再写这类教学。这是资源浪费,更何况你写的也不比那些高手写的基础教学那么好理解。


我也是看着ErrorFree、YHQ、软蛀他们的文章入手的,我并不认为这有什么可夸耀的,所谓 闻道有先后,不能因为爱因斯坦的相对论就不让小孩子学牛顿定律,不能因为你会降龙十八掌就嘲笑别人练蹲马步。不要忘了你也是从马步蹲出来的,别人也有练成高手乃至打败你的那一天。

btw: 恕我孤陋寡闻,没听说过KTC,我倒知道有个南非的tKC。
2004-8-31 21:58
0
雪    币: 14
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
对新手来说,没有比“细”更让人喜欢了;高手在指导的时候可以说:看看某某书某某页...可是如果像加解密2里面全都是详细的使用工具的过程,我想买的人也会觉得不值的。
    所以我倒是觉得在这个论坛里开个看雪的《加解密》疑难解答,毕竟光看书还是有些地方是看不懂的
2004-8-31 22:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
谢谢大家对我们新手的支持!本人还没入门呢!真是惭愧~~:( ,好想达到Pediy大哥的水平啊!:D
2004-8-31 22:50
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
楼主,有空加我好友,偶菜,还不如你呢,小鸡说是儿童级别的,那我就幼儿班地哈~~~~~~幼儿班地?地?就是不服小鸡那种态度!~~~~
2004-9-1 09:40
0
游客
登录 | 注册 方可回帖
返回
//