【破解说明】 这是一个 2002 年度推出的老程序了(我一般只破解当天推出的新程序),因为看雪论坛有位网友说多日无法破解《开心辞典XP V2.0》,另一位网友还骂他说可以去死了,就感觉这个程序破解起来不会太麻烦。但按那位网友的指引实在下载不到 V2.0版,只在天空找到了 V5.0 版,只好拿这个开刀。
本人实在是刚刚入门的菜鸟,在看雪,一般只能提问题学技术,断不敢发什么破解教程的,只能说是破解过程。各位高手请不要见笑。
【破解作者】 侠盗
【作者邮箱】 mr.zhs@163.com
【使用工具】 PEID,UPXSHELLXP,DBPE-UNPACKER,OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】 开心辞典XP V5.0
【下载地址】 http://www4.skycn.com/soft/8122.html
【软件简介】 本软件模拟开心辞典网上答题的形式,收集了绝大部分的网上答题的题目,闲暇时可在不
上网的情况下模拟答题,自娱自乐。在上网时,使用本软件具有5大自动功能:1、连接到网上参赛后,可
自动保存题库中没有的题目;2、不知道答案的题目,可自动生成答题选项并记录是否正确,直到找到答
案;3、已有正确答案的题目,可自动找出答案并提示; 4、每轮答题,可自动填答案并自动提交,不需
人工干预;5、当答题错误时,可自动开始新一轮的答题。非注册的用户在网上答题时最高能得到200分的
正确答案提示和自动提交。注册用户没有提示答案分数的限制。
【软件大小】 1.46 M
【加壳方式】 UPX,DBPE,ASPACK
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
这个软件加了三层壳,是我破解过的程序中加壳最多的。
安装程序,来到安装目录,PEID 检测主程序壳为:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus &
Laszlo,用UPXSHELL V1.9、UPXmend V1.23 和UPX-Ripper V1.3都无法脱壳,最后用 UPX ShellEX V1.0
RC7 顺利脱壳。脱壳后用 OD 加载,居然提示有壳,再用 PEID V0.92查壳,这次是:DBPE 2.33 -> Ding
Boy,用 DBPE Unparcker V1.06 顺利脱壳,再用 OD 加载,仍然提示有壳,晕,再用 PEID V0.92查壳,
为 ASPack 2.12 -> Alexey Solodovnikov,别看这么简单的壳,用我一惯使用的UnAspack V1.2.1.3 居
然脱不掉,说不是 ASPACK 压缩的,最后用 PEID V0.92 带的插件脱壳成功,再用 PEID 查看为:
Borland Delphi 6.0 - 7.0,呵呵,开心了!大老鼠曾教导小老鼠说多学几门外语总是有好处的,对于我
们破解菜鸟来说,多准备几种工具总是不错的。一种工具脱不掉的壳,要多试试别的工具。
OD 载入完全脱壳后的程序,用字符串插件查找字符串,在可疑处下断,F9运行程序,尚未显出界面,立
即中断在这儿:
004E0638 6A 00 PUSH 0
004E063A 8D85 3CFFFFFF LEA EAX,DWORD PTR SS:[EBP-C4]
004E0640 50 PUSH EAX
004E0641 B9 90084E00 MOV ECX,unpacked.004E0890 ; ASCII "nzdm"
004E0646 BA 70084E00 MOV EDX,unpacked.004E0870 ; ASCII "setup"
004E064B 8BC6 MOV EAX,ESI
004E064D 8B30 MOV ESI,DWORD PTR DS:[EAX]
004E064F FF16 CALL DWORD PTR DS:[ESI]
004E0651 8B85 3CFFFFFF MOV EAX,DWORD PTR SS:[EBP-C4]
004E0657 E8 D48BF2FF CALL unpacked.00409230
004E065C 8BD0 MOV EDX,EAX
004E065E 8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
004E0664 8B08 MOV ECX,DWORD PTR DS:[EAX]
004E0666 FF91 A0010000 CALL DWORD PTR DS:[ECX+1A0]
004E066C 8D85 38FFFFFF LEA EAX,DWORD PTR SS:[EBP-C8]
004E0672 B9 A0084E00 MOV ECX,unpacked.004E08A0 ; ASCII "\koat1l.tlb"
004E0677 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004E067A E8 D545F2FF CALL unpacked.00404C54
004E067F 8B85 38FFFFFF MOV EAX,DWORD PTR SS:[EBP-C8]
004E0685 E8 C28EF2FF CALL unpacked.0040954C ; 检测是否已经注册的
CALL
004E068A 3C 01 CMP AL,1
004E068C 75 12 JNZ SHORT unpacked.004E06A0
004E068E BA B4084E00 MOV EDX,unpacked.004E08B4 ; 软件已注册
004E0693 8B83 B8030000 MOV EAX,DWORD PTR DS:[EBX+3B8]
004E0699 E8 3AB1F5FF CALL unpacked.0043B7D8
004E069E EB 10 JMP SHORT unpacked.004E06B0
004E06A0 BA C8084E00 MOV EDX,unpacked.004E08C8 ; 软件未注册
004E06A5 8B83 B8030000 MOV EAX,DWORD PTR DS:[EBX+3B8]
可以看出,004E0685 处的 CALL 是检测程序是否已经注册的,要暴破的话,这儿是暴破点之一;不管它
,我的目的是找到注册码。
F9继续运行程序,点“软件注册”,填写入“解认码”为:12345678,“注册码”为:9876543210,再点
“确认注册”按钮。以下为整个破解过程:
004DF778 50 PUSH EAX ; 按“确认注册”按钮中
断在这里。
004DF779 E8 B27AF2FF CALL <JMP.&KERNEL32.GetSystemDirectoryA>
004DF77E 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004DF781 8D95 7BFFFFFF LEA EDX,DWORD PTR SS:[EBP-85]
004DF787 B9 81000000 MOV ECX,81
004DF78C E8 2754F2FF CALL unpacked.00404BB8
004DF791 8D95 74FFFFFF LEA EDX,DWORD PTR SS:[EBP-8C]
004DF797 A1 FC584E00 MOV EAX,DWORD PTR DS:[4E58FC]
004DF79C 8B00 MOV EAX,DWORD PTR DS:[EAX]
004DF79E 8B80 B8030000 MOV EAX,DWORD PTR DS:[EAX+3B8]
004DF7A4 E8 FFBFF5FF CALL unpacked.0043B7A8
004DF7A9 8B85 74FFFFFF MOV EAX,DWORD PTR SS:[EBP-8C]
004DF7AF BA 1CFA4D00 MOV EDX,unpacked.004DFA1C ; 软件已注册
004DF7B4 E8 9355F2FF CALL unpacked.00404D4C
004DF7B9 75 0F JNZ SHORT unpacked.004DF7CA
004DF7BB B8 1CFA4D00 MOV EAX,unpacked.004DFA1C ; 软件已注册
004DF7C0 E8 BF5AF5FF CALL unpacked.00435284
004DF7C5 E9 C2010000 JMP unpacked.004DF98C
004DF7CA 8D95 70FFFFFF LEA EDX,DWORD PTR SS:[EBP-90]
004DF7D0 8B83 3C030000 MOV EAX,DWORD PTR DS:[EBX+33C]
004DF7D6 E8 CDBFF5FF CALL unpacked.0043B7A8
004DF7DB 83BD 70FFFFFF 0>CMP DWORD PTR SS:[EBP-90],0 ; 检测确认码是否为空
004DF7E2 74 1A JE SHORT unpacked.004DF7FE
004DF7E4 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]
004DF7EA 8B83 40030000 MOV EAX,DWORD PTR DS:[EBX+340]
004DF7F0 E8 B3BFF5FF CALL unpacked.0043B7A8
004DF7F5 83BD 6CFFFFFF 0>CMP DWORD PTR SS:[EBP-94],0 ; 检测注册码是否为空
004DF7FC 75 29 JNZ SHORT unpacked.004DF827
004DF7FE B8 30FA4D00 MOV EAX,unpacked.004DFA30
004DF803 E8 7C5AF5FF CALL unpacked.00435284
004DF808 33D2 XOR EDX,EDX
004DF80A 8B83 3C030000 MOV EAX,DWORD PTR DS:[EBX+33C]
004DF810 E8 C3BFF5FF CALL unpacked.0043B7D8
004DF815 33D2 XOR EDX,EDX
004DF817 8B83 40030000 MOV EAX,DWORD PTR DS:[EBX+340]
004DF81D E8 B6BFF5FF CALL unpacked.0043B7D8
004DF822 E9 65010000 JMP unpacked.004DF98C
004DF827 8D95 68FFFFFF LEA EDX,DWORD PTR SS:[EBP-98]
004DF82D 8B83 40030000 MOV EAX,DWORD PTR DS:[EBX+340]
004DF833 E8 70BFF5FF CALL unpacked.0043B7A8
004DF838 8B85 68FFFFFF MOV EAX,DWORD PTR SS:[EBP-98]
004DF83E 50 PUSH EAX
004DF83F 8D95 60FFFFFF LEA EDX,DWORD PTR SS:[EBP-A0]
004DF845 8B83 3C030000 MOV EAX,DWORD PTR DS:[EBX+33C]
004DF84B E8 58BFF5FF CALL unpacked.0043B7A8
004DF850 8B85 60FFFFFF MOV EAX,DWORD PTR SS:[EBP-A0]
004DF856 E8 D599F2FF CALL unpacked.00409230
004DF85B B9 6F000000 MOV ECX,6F
004DF860 99 CDQ
004DF861 F7F9 IDIV ECX
004DF863 8BC2 MOV EAX,EDX
004DF865 8D95 64FFFFFF LEA EDX,DWORD PTR SS:[EBP-9C]
004DF86B E8 5C99F2FF CALL unpacked.004091CC
004DF870 8D85 64FFFFFF LEA EAX,DWORD PTR SS:[EBP-9C]
004DF876 50 PUSH EAX
004DF877 8D95 54FFFFFF LEA EDX,DWORD PTR SS:[EBP-AC]
004DF87D 8B83 3C030000 MOV EAX,DWORD PTR DS:[EBX+33C]
004DF883 E8 20BFF5FF CALL unpacked.0043B7A8
004DF888 8B85 54FFFFFF MOV EAX,DWORD PTR SS:[EBP-AC]
004DF88E E8 9D99F2FF CALL unpacked.00409230 ; 多次调用此 CALL,为检
测是否是合法的字符串
004DF893 8D95 58FFFFFF LEA EDX,DWORD PTR SS:[EBP-A8]
004DF899 E8 F2FAFFFF CALL unpacked.004DF390
004DF89E 8B85 58FFFFFF MOV EAX,DWORD PTR SS:[EBP-A8] ; 弹出一串字符,怀疑为
确认码或者假码的变型码
004DF8A4 E8 8799F2FF CALL unpacked.00409230
004DF8A9 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4]
004DF8AF E8 BCFBFFFF CALL unpacked.004DF470
004DF8B4 8B95 5CFFFFFF MOV EDX,DWORD PTR SS:[EBP-A4] ; 又弹出一串字符串,怀
疑仍然为变型码。
004DF8BA 58 POP EAX
004DF8BB E8 5053F2FF CALL unpacked.00404C10
004DF8C0 8B95 64FFFFFF MOV EDX,DWORD PTR SS:[EBP-9C] ; 这儿是真正的注册码入
EDX。
004DF8C6 58 POP EAX ; 注册机断点。
004DF8C7 E8 8054F2FF CALL unpacked.00404D4C ; 对比真假注册码
004DF8CC 0F85 96000000 JNZ unpacked.004DF968 ; 不对就跳到注册失败处
004DF8D2 B8 50FA4D00 MOV EAX,unpacked.004DFA50 ; 注册成功,谢谢您的注
册!
004DF8D7 E8 A859F5FF CALL unpacked.00435284
--------------------------------------------------------------------------------
【破解总结】
注册机断点:004DF8C6
中断次数:1
第一字节:58
指令长度:1
寄存器:EDX
地址指针:1层
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!