-
-
庆祝贺论坛重新开通,发篇超级简单的VB程序破文。
-
发表于: 2004-6-18 23:01 4073
-
破解对象:全国计算机等级考试考前模拟软件(一级Windows) 2004B
软件大小:6000 KB
下载地址:http://www.skycn.com/soft/13357.html
破解工具:Ollydbg1.1
破解说明:
软件依据《全国计算机等级考试(一级Windows)最新考纲》编写而成,内容包括上机和笔试两部分,上机分为Windows基本操作(中文Windows98)、汉字录入、文字处理软件使用(Word)、电子表格软件使用(Excel)、演示文稿软件使用(Powrpoint)和上网操作(IE、Outlook Express);笔试分为选择题和填空题。 考试环境模拟真实,系统自动计时、评分,附带评析及参考答案等特点。
一个好用的计算机等级考试考前模拟软件,最新的版本,很多人就靠它通过考试了。未注册版没有评分及考题分析功能,当然我们最需要的就是这个功能了。没办法,只好自力更生。
破解过程:
运行软件,有注册提示警告,随便填入什么点击注册后都提示注册成功。哪有这么善良的软件?
用OD载入程序,ALT+E查看模块,双击MSVBVM60.DLL,搜索当前模块名称,找到rtcMsgBox函数,F2下断,运行,点注册,程序中断下来,CTRL+F9返回,点确定后再次中断,返回到这里:
004438DF CALL DWORD PTR DS:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
向上看看,没有找到可跳过的代码,估计是先将信息保存起来重启验证。看到这句可疑:
0044385E CALL 一级Wind.004300A0
可能是保存信息。跟进去看看。直到:
004300F7 MOV EDX,一级Wind.00418398 ; UNICODE Software\Microsoft\Windows\systemnot"
基本明白了,程序将信息保存在注册表中。重启程序,bp RegQueryValueExA,不断F9运行,直到程序读注册信息。CTRL+F9返回,逐步到这里:
0043034B CMP SI,WORD PTR SS:[EBP-AC] --->开始循环
00430352 JG 一级Wind.00430408 --->跳出循环
00430358 MOV CX,SI
0043035B AND CX,1
0043035F JNS SHORT 一级Wind.00430369
00430361 DEC CX
00430363 OR CX,0FFFE
00430367 INC CX
00430369 CMP CX,1
0043036D JNZ 一级Wind.004303F3
00430373 MOV EDX,DWORD PTR SS:[EBP-34]
00430376 MOV DWORD PTR SS:[EBP-9C],EDX
0043037C MOV DWORD PTR SS:[EBP-A4],8
00430386 MOV DWORD PTR SS:[EBP-4C],1
0043038D MOV DWORD PTR SS:[EBP-54],2
00430394 LEA EAX,DWORD PTR SS:[EBP-38]
00430397 MOV DWORD PTR SS:[EBP-7C],EAX
0043039A MOV DWORD PTR SS:[EBP-84],4008
004303A4 LEA ECX,DWORD PTR SS:[EBP-54]
004303A7 PUSH ECX
004303A8 MOVSX EDX,SI
004303AB PUSH EDX
004303AC LEA EAX,DWORD PTR SS:[EBP-84]
004303B2 PUSH EAX
004303B3 LEA ECX,DWORD PTR SS:[EBP-64]
004303B6 PUSH ECX
004303B7 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar --->看名称就知道截取信息
004303BD LEA EDX,DWORD PTR SS:[EBP-A4]
004303C3 PUSH EDX
004303C4 LEA EAX,DWORD PTR SS:[EBP-64]
004303C7 PUSH EAX
004303C8 LEA ECX,DWORD PTR SS:[EBP-74]
004303CB PUSH ECX
004303CC CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCat>] ; MSVBVM60.__vbaVarCat --->连接刚才截取的信息
004303D2 PUSH EAX
004303D3 CALL EDI
004303D5 MOV EDX,EAX --->在此处可看到连接后的内容
004303D7 LEA ECX,DWORD PTR SS:[EBP-34]
004303DA CALL EBX
004303DC LEA EDX,DWORD PTR SS:[EBP-74]
004303DF PUSH EDX
004303E0 LEA EAX,DWORD PTR SS:[EBP-64]
004303E3 PUSH EAX
004303E4 LEA ECX,DWORD PTR SS:[EBP-54]
004303E7 PUSH ECX
004303E8 PUSH 3
004303EA CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
004303F0 ADD ESP,10
004303F3 MOV EAX,1
004303F8 ADD AX,SI
004303FB JO 一级Wind.004304A8
00430401 MOV ESI,EAX
00430403 JMP 一级Wind.0043034B --->循环
00430408 MOV EDX,DWORD PTR SS:[EBP-34] --->连接后的最终结果。
从结果来看,程序是隔位取字,如1234567890,取字后为13579。
继续F8跟踪直到返回,来到这里:
004317E7 MOV EDX,EAX
004317E9 LEA ECX,DWORD PTR SS:[EBP-18]
004317EC CALL ESI
004317EE PUSH EAX
004317EF CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenBstr>] ; MSVBVM60.__vbaLenBstr --->结果的长度
004317F5 XOR ECX,ECX
004317F7 CMP EAX,0F --->与0F比较
004317FA SETL CL --->大于则将CL置0
004317FD NEG ECX
004317FF MOV WORD PTR SS:[EBP-A8],CX
00431806 LEA ECX,DWORD PTR SS:[EBP-18]
00431809 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0043180F CMP WORD PTR SS:[EBP-A8],DI
00431816 JE SHORT 一级Wind.0043188D --->判断刚才比较的结果,不跳则会出现注册提示。
在此行跳过后,程序不再比较,直接出现主界面。难道只判断长度就行了?肯定还有其它陷阱。
于是用VB程序最常用的比较语句vbaStrComp和vbaVarTstEq下断,F9运行,中断在vbaStrComp,
从堆栈上看出程序是分别将注册信息的奇数位与偶数位分别取出,然后分别与另两个正确注册码比较。正确的注册码怎么生成我就不再研究了。
总结:注册码必须31位,用vbaStrComp下断即可看到程序分别比较奇数位和偶数位。
软件大小:6000 KB
下载地址:http://www.skycn.com/soft/13357.html
破解工具:Ollydbg1.1
破解说明:
软件依据《全国计算机等级考试(一级Windows)最新考纲》编写而成,内容包括上机和笔试两部分,上机分为Windows基本操作(中文Windows98)、汉字录入、文字处理软件使用(Word)、电子表格软件使用(Excel)、演示文稿软件使用(Powrpoint)和上网操作(IE、Outlook Express);笔试分为选择题和填空题。 考试环境模拟真实,系统自动计时、评分,附带评析及参考答案等特点。
一个好用的计算机等级考试考前模拟软件,最新的版本,很多人就靠它通过考试了。未注册版没有评分及考题分析功能,当然我们最需要的就是这个功能了。没办法,只好自力更生。
破解过程:
运行软件,有注册提示警告,随便填入什么点击注册后都提示注册成功。哪有这么善良的软件?
用OD载入程序,ALT+E查看模块,双击MSVBVM60.DLL,搜索当前模块名称,找到rtcMsgBox函数,F2下断,运行,点注册,程序中断下来,CTRL+F9返回,点确定后再次中断,返回到这里:
004438DF CALL DWORD PTR DS:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
向上看看,没有找到可跳过的代码,估计是先将信息保存起来重启验证。看到这句可疑:
0044385E CALL 一级Wind.004300A0
可能是保存信息。跟进去看看。直到:
004300F7 MOV EDX,一级Wind.00418398 ; UNICODE Software\Microsoft\Windows\systemnot"
基本明白了,程序将信息保存在注册表中。重启程序,bp RegQueryValueExA,不断F9运行,直到程序读注册信息。CTRL+F9返回,逐步到这里:
0043034B CMP SI,WORD PTR SS:[EBP-AC] --->开始循环
00430352 JG 一级Wind.00430408 --->跳出循环
00430358 MOV CX,SI
0043035B AND CX,1
0043035F JNS SHORT 一级Wind.00430369
00430361 DEC CX
00430363 OR CX,0FFFE
00430367 INC CX
00430369 CMP CX,1
0043036D JNZ 一级Wind.004303F3
00430373 MOV EDX,DWORD PTR SS:[EBP-34]
00430376 MOV DWORD PTR SS:[EBP-9C],EDX
0043037C MOV DWORD PTR SS:[EBP-A4],8
00430386 MOV DWORD PTR SS:[EBP-4C],1
0043038D MOV DWORD PTR SS:[EBP-54],2
00430394 LEA EAX,DWORD PTR SS:[EBP-38]
00430397 MOV DWORD PTR SS:[EBP-7C],EAX
0043039A MOV DWORD PTR SS:[EBP-84],4008
004303A4 LEA ECX,DWORD PTR SS:[EBP-54]
004303A7 PUSH ECX
004303A8 MOVSX EDX,SI
004303AB PUSH EDX
004303AC LEA EAX,DWORD PTR SS:[EBP-84]
004303B2 PUSH EAX
004303B3 LEA ECX,DWORD PTR SS:[EBP-64]
004303B6 PUSH ECX
004303B7 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar --->看名称就知道截取信息
004303BD LEA EDX,DWORD PTR SS:[EBP-A4]
004303C3 PUSH EDX
004303C4 LEA EAX,DWORD PTR SS:[EBP-64]
004303C7 PUSH EAX
004303C8 LEA ECX,DWORD PTR SS:[EBP-74]
004303CB PUSH ECX
004303CC CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCat>] ; MSVBVM60.__vbaVarCat --->连接刚才截取的信息
004303D2 PUSH EAX
004303D3 CALL EDI
004303D5 MOV EDX,EAX --->在此处可看到连接后的内容
004303D7 LEA ECX,DWORD PTR SS:[EBP-34]
004303DA CALL EBX
004303DC LEA EDX,DWORD PTR SS:[EBP-74]
004303DF PUSH EDX
004303E0 LEA EAX,DWORD PTR SS:[EBP-64]
004303E3 PUSH EAX
004303E4 LEA ECX,DWORD PTR SS:[EBP-54]
004303E7 PUSH ECX
004303E8 PUSH 3
004303EA CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
004303F0 ADD ESP,10
004303F3 MOV EAX,1
004303F8 ADD AX,SI
004303FB JO 一级Wind.004304A8
00430401 MOV ESI,EAX
00430403 JMP 一级Wind.0043034B --->循环
00430408 MOV EDX,DWORD PTR SS:[EBP-34] --->连接后的最终结果。
从结果来看,程序是隔位取字,如1234567890,取字后为13579。
继续F8跟踪直到返回,来到这里:
004317E7 MOV EDX,EAX
004317E9 LEA ECX,DWORD PTR SS:[EBP-18]
004317EC CALL ESI
004317EE PUSH EAX
004317EF CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenBstr>] ; MSVBVM60.__vbaLenBstr --->结果的长度
004317F5 XOR ECX,ECX
004317F7 CMP EAX,0F --->与0F比较
004317FA SETL CL --->大于则将CL置0
004317FD NEG ECX
004317FF MOV WORD PTR SS:[EBP-A8],CX
00431806 LEA ECX,DWORD PTR SS:[EBP-18]
00431809 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0043180F CMP WORD PTR SS:[EBP-A8],DI
00431816 JE SHORT 一级Wind.0043188D --->判断刚才比较的结果,不跳则会出现注册提示。
在此行跳过后,程序不再比较,直接出现主界面。难道只判断长度就行了?肯定还有其它陷阱。
于是用VB程序最常用的比较语句vbaStrComp和vbaVarTstEq下断,F9运行,中断在vbaStrComp,
从堆栈上看出程序是分别将注册信息的奇数位与偶数位分别取出,然后分别与另两个正确注册码比较。正确的注册码怎么生成我就不再研究了。
总结:注册码必须31位,用vbaStrComp下断即可看到程序分别比较奇数位和偶数位。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏记录
参与人
雪币
留言
时间
一路南寻
为你点赞~
2024-5-3 01:00
QinBeast
为你点赞~
2024-5-2 21:41
嫉妒的死远点
为你点赞~
2024-3-18 01:05
一笑人间万事
为你点赞~
2024-2-19 04:50
shinratensei
为你点赞~
2023-4-11 02:36
赞赏
他的文章
- [求助]reflector插件求助 4541
- 用PEBrrowsedbg调试.net程序问题 7972
- 用PEBrrowsedbg调试.net问题 3578
- [求助]请教swf如何下断点? 6965
- [求助]请教Authorware制做的软件如何下断点? 3362
看原图
赞赏
雪币:
留言: