软件简介:号称终极单词学习平台,下载试用后确实觉得不错。软件可以用电驴下载,地址为:
http://beta.verycd.com/groups/software/74197.topic
加密特点:软件首次运行时需要输入序列号,如果你的电脑是连在互联网上,使用过几次之后软件运行时会自动验证序列号,通不过后面都无法进入(估计是向某个目录或是注册表中偷偷写了东西,我是没找到,希望找到的告诉我一声)。软件有多个地方都要验证序列号,而且程序自身有外部
dll
的自校验,以防止非法破解,总之,该软件是个成熟的产品(据称已有十年开发历史),加密点比较多。
破解说明:针对的是我爱背单词8的光盘版,非共享版。耗了我三个晚上的时间,已经尽自己的努力破解完全,但仍有些功能我没用到,所以可能还有遗漏的地方,欢迎大家指证。如果你是安装好就破解的话,软件不需要输入序列号即可使用。此次的破解补丁及本文的破解方法仅是本人学习破解的作品,仅供同仁交流及个人用户试用,请勿用于商业用途,如果经济能力许可的话还是买个正版序列号吧,也不贵的。
不多说,进入正题。
用
PEID
查看主程序,发现未加壳,是用VB开发的。启动软件,由于没有通过验证,已经没办法正常进入了,提示我用的是盗版。看来程序启动时会先检测注册码,再检测盗版标记
(
隐藏在某处的某个文件或是注册表项
)
。我一开始的做法是先用
GetVBRes
取得提示盗版的相关字符串,然后在
W32dsm
中找到其调用,比较费力,跟踪也比较烦。后来我摸索了另一个方法,既然软件启动时会先读取注册文件
(
先假定是文件而不是注册表项,事实证明是对的
)
,那么可以直接在用
OD
动态跟踪时设置
CreateFileA
这个函数断点。设好之后,调试程序,开始几个断下的点明显不是,一会儿就断在了打开
"C:\WINDOWS\gwfly5_wabdc8.fly"
处,很可疑。关闭调试,备份该文件,再删除。先不调试正常运行一次,程序跳出读取注册文件错误对话框,而且是
windows
标准式的,接下来在
OD
中设置
MessageBoxA
断点,取消前面的断点,点运行,程序能断下,按几次
Ctrl+F9
回到程序领空,向上推移能看到很多的跳转指令,接下来的工作就是从底向上在跳转前一行设断,然后强行跳转,经过测试在
wabdc8.exe
的
00f
080a
8
处:
jnz 00F0812E-->jmp 00F087A3
,程序即能正常进入。之所以不是简单的将
jnz
改为
jmp
是因为这个对话框错误之后还有很多其它的检测(如果是简单的修改会跳出要求输入注册码的界面)。至于
00F
087A
3
这个值也是经过观察后面的代码得来的,要稍费一些时间。修改之后在
OD
中能正常启动,用
UltraEdit
修改可执行程序。
正常运行程序,会发现程序没过几秒就自动退出了,烦啊,难道有自校验?再用
OD
载入原始程序,在
OD
中修改该处代码,软件正常启动不会退出,看来是真的有自校验(
OD
修改的只是载入内存中的代码,并没有修改可执行程序本身,所以自校验能通过)。没关系,才开始而已,继续下
CreateFileA
断点,程序启动后没多久,就可以看到断在打开自身可执行文件处,连续按几次
Ctrl+F9
,这次不管用了,还没等到回主程序领空就进程结束了。看来校验是其它模块完成的,重新开始,在自校验时按
Ctrl+F9
,仔细观察当前领空,发现
libop2006.dll
很可疑。接下来在该模块中设断,取消前面的
CreateFileA
断点(这样比较方便,可以减少断下的次数),再次运行断在该处后,下
ReadFile
断点(自校验当然要先读取自身了),断下之后按
Ctrl+F9
返回到
libop2006.dll
领空。再次按
Ctrl+F9
返回上一次调用(中间还会断在
ReadFile
处,当然的了,就能一次的少量数据是校验不成的,暂时取消该断点),成功返回后,会看到之后有几处跳转,暂时还不知道修改哪个。我的方法是在最近的跳转前一行设置断点,再载入未修改的源程序(在调试时还是要修改的,否则进不去),启动之后没一会儿就断下了,然后逐个记下跳转代码的跳转与否。记上五六个就足了(其实如果能知道调用校验后的返回值放在哪就更方便,我的水平还不济,就用笨方法了),然后再载入修改后的程序,很快就能找到不同的跳转:
01bd3408
处:
jnz 01BD3419-->jmp 01BD3419
(
libop2006.dll
),修改之后程序可以正常启动了。
运行程序,却发现单词初记、单词复习功能无法正常启动,点击制随身宝还会弹出注册文件错误提示框,经分析,单词初记、单词复习是原程序本身自还的功能,制随身宝是调用的外部程序(
pocketwords.exe
)。制随身宝程序及我爱背单词智能大师
(LearningWizard.exe)
的免注册文件和自校验破解同前一程序类似,但其自校验是在
pocketwords8.dll
中完成的,制随身宝中的一个关键功能也需要检测注册文件。
首先想到的是用
CreateFileA
断下对注册文件的检测,但当鼠标在单词初记按钮上移动程序接收鼠标移动消息并改变单词初记的图标,也会调用
CreateFileA
,而且这个消息会不断触发,因此无法断在我所要的断点上。在这儿我耗费了一些时间,后来想到了一个解决方法:就是将对应的图标文件改名,该程序在
CreateFileA
图标文件之前会有个
FileExits
检测,因此当图标文件不存在时就不会触发
CreateFileA
,这样就顺利的断在对注册文件的读写处,其它几处功能的破解方法就类似了。
以上过程的破解点记录如下:
首次破解:
wabdc8.exe
00f
080a
8
处:
jnz 00F0812E-->jmp 00F087A3
libop2006.dll
01bd3408
处:
jnz 01BD3419-->jmp 01BD3419
故障:恢复注册文件后出现非法注册对话框。
二次破解:
wabdc8.exe
00f
07db4
处:
jnz short 00F07DC2-->jmp 00F087A3
libop2006.dll
01bd3408
处:
jnz 01BD3419-->jmp 01BD3419
故障:无法完全关闭程序;删除注册文件还是会跳出注册文件错误对话框。
分析:未关闭对注册文件的访问句柄,因此无法退出。
三次破解:
wabdc8.exe
00f
07d41
处:
je 00F07E58-->jmp 00F087A3
libop2006.dll
01bd3408
处:
jnz 01BD3419-->jmp 01BD3419
故障:需注册文件支持;单词初记只能使用一次。
分析:仍然存在对注册文件的校验。
四次破解:
wabdc8.exe
00f
07d41
处:
je 00F07E58-->jmp 00F087A3 //
单词初记启动时注册文件检测
00ec9dcd
处:
jle 00EC9E5C-->jmp 00EC9E5C //
单词初记第二次使用时的退出
00ecb8b8
处:
jnz 00ECB922-->jmp 00ECB922 //
单词初记无注册文件时的异常
00ec4e8a
处:
jnz 00EC4E99-->jmp 00EC4E99 //
单词初记无注册文件时的异常
00ecc4fb
处:
jnz 00ECC515-->nop //
单词初记无注册文件时的异常
libop2006.dll
01bd3408
处:
jnz 01BD3419-->jmp 01BD3419 //
自校验
五次破解增加:
wabdc8.exe
00ec149d
处:
je 00EC1566-->jmp 00EC1566 //
单词复习无注册文件时的异常
00ec211b
处:
jnz 00EC213D-->nop //
单词复习无注册文件时的异常
LearningWizard.exe
00587311
处:
je 00587428-->jmp 00587d73
//
学习向导启动时跳过注册文件检测
libop2006.dll
011a
36bc
处:
jnz 011A36C9-->jmp 011A36C9 //
自校验
pocketwords.exe
007cf0ee
处:
je 007CF1FA-->jmp 007d056f //
制作随身宝无注册文件时的异常
007cf76d
处:
je 007CF890-->jmp 007d056f //
制作随身宝无注册文件时的异常
007aed2a
处:
je 007AEDA3-->jmp 007AEDA3 //
制作随身宝制作单词时的无注册文件异常
pocketwords8.dll
10001f
8a
处:
jnz 10001F99-->jmp 10001F99 //
自校验
pocketrecorder.exe
004bfae0
处:
je 004BFBF1-->jmp 004C02e7 //
随身宝启动时注册文件检测
破解补丁下载地址:
http://www.cnitblog.com/Files/torch/wabc8.0-patch.rar
下载后解压至安装目录下并运行补丁程序文件即可,注意该程序有升级补丁,我针对的是升级前的版本。升级后再使用补丁可能会无效。