|
C语言学习系统3.2破解版及破解经过今天去网上逛了逛,发现了一个东东:C语言学习系统 v3.2,我们论坛好多人想学C语言,把这个东西带给大家用用。下回来安装一看,共享软件,没注册的好多功能不能用,又上网找注册机,v3.2的找不着,好不容易拉回来个v3.0的,不能用......郁闷,这不是违背了共产主义为目标的发展方针吗?嘿嘿,那我就亲自操刀看能不能把它破了,为了中国计算机业的发展,为了大家能更好地学习计算机文化,作者请不要怪我哈!(哐。。一砖头!突然传来天外之音:是谁把自己说得那么伟大的??)
呵呵,下面切入正题!
——————————————————————————————————————————
开刀对象:C语言学习系统 3.2
下载地址:http://www.skycn.com/soft/10036.html
症状:未注册版有功能限制
加壳方式:无
所用工具:Ollydbg + C32Asm + VBExplorer
编程语言:VB6
主刀手:恨骨
——————————————————————————————————————————
我们先用PEid检查一下这个软件,Microsoft Visual Basic 5.0 / 6.0,发现软件没加壳,晕,VB写的,麻烦(因为VB生成的exe是伪代码,程序99%都是在 vbXXX.dll 里面执行,你只能在里面打转转,很难发现关键的地方),哎,硬着头皮往下分析吧!
先打开软件,弹出一个窗口提示这是使用版本,让你注册,点我同意进入主窗口,进来一看发现窗口标题上有未注册字样,呵呵,我们先注册一下,随便输入注册码点注册,提示重启软件,看来注册信息是在软件启动的时候验证的,不管那么多了,看能不能找到关键地方暴破。
重新打开软件,刚才的注册码是随便输的当然软件还是未注册的,来看看它有什么功能限制,点“例题精解”,“习题练习”下面的“查看答案”等按钮,都会弹出个对话框:对不起,该功能只提供给注册用户,如果您想使用该功能,请注册。详细注册方法请参见“注册说明”!
我们用C32Asm把该软件反汇编,点编辑-使用Unicode分析字符串,在选查看-字符串,现在我们在字符串调用窗口找找看有什么可用的信息,一行一行看下来,一只看到最后,咦,发现:“对不起,该功能只提供给注册用户,如果您想使用该功能,请注册。详细注册方法请参见“注册说明”。”,这不是跟刚才弹出对话框的字符串一样吗,这应该就是调用来弹出对话框的地方了,晕,有23处之多,先看看它是从哪过来的,随便选一个双击,右边就出现了对应的代码,往上找
::00463AB3:: 8B35 A8114000 MOV ESI,[4011A8] \\:BYJMP JmpBy:004633F8,
::00463AB9:: B8 04000280 MOV EAX,80020004
::00463ABE:: BF 08000000 MOV EDI,8
::00463AC3:: 8D95 BCFEFFFF LEA EDX,[EBP-144]
::00463AC9:: 8D4D AC LEA ECX,[EBP-54]
::00463ACC:: 8945 94 MOV [EBP-6C],EAX
::00463ACF:: C745 8C 0A000000 MOV DWORD PTR [EBP-74],A
::00463AD6:: 8945 A4 MOV [EBP-5C],EAX
::00463AD9:: C745 9C 0A000000 MOV DWORD PTR [EBP-64],A
::00463AE0:: C785 C4FEFFFF E08E4000 MOV DWORD PTR [EBP-13C],408EE0 \\->: 注册
::00463AEA:: 89BD BCFEFFFF MOV [EBP-144],EDI
::00463AF0:: FFD6 CALL NEAR ESI
::00463AF2:: 8D95 CCFEFFFF LEA EDX,[EBP-134]
::00463AF8:: 8D4D BC LEA ECX,[EBP-44]
::00463AFB:: C785 D4FEFFFF 7C8E4000 MOV DWORD PTR [EBP-12C],408E7C \\->: 对不起,该功能只提供给注册用户,如果您想使用该功能,请注册。详细注册方法请参见“注册说明”。
\\:BYJMP JmpBy:004633F8说明它是从004633F8跳过来的,我们找到004633F8
::004633F0:: 66:833D 24A04B00 FF CMP WORD PTR [4BA024],FFFF
::004633F8:: 0F85 B5060000 JNZ 00463AB3
看来它是拿内存004BA024处的一个字来跟FFFF对比,如果不等于则跳到下面去弹出对话框
我们再看看其他的,结果发现都是这句搞的鬼,软件如果注册的话004BA024里应该就是FFFF的,接下来看看我们的判断对不对。
用Ollydbg载入该软件,忽略一切异常,用Ctrl+G查找004BA024,在004BA024上下断点-内存写入,F9运行,被中断,此时并不在程序领空,我们再按一次F9试试,又被中断了,嘿嘿,现在是程序领空,并且发现了好东西
004AB11E 66:C705 24A04B00 0000 mov word ptr ds:[4BA024],0 ------把0放入地址004BA024处
004AB127 75 10 jnz short CStudy.004AB139
004AB129 . 68 ACA04B00 push CStudy.004BA0AC
软件判断没有注册,把0注入004BA024处,我们改一下,在反汇编的语句上双击,把0改为0FFFF,F9运行,晕,还弹出个让你注册的窗口,点我同意进去。哈哈,发现了没有,上面的未注册字样不见了。我们再试下功能,嘿嘿,任何按钮都可以使用了,功能限制被解除。
记下刚才的机器码66C70524A04B000000,用16进制编辑器打开该软件,搜索,把后面4个0全改为F,运行试下,全部功能都没有限制,可用起来还是不爽,老是启动的时候有个讨厌的窗口弹出来让你注册,想办法去掉它。
软件启动大概一秒后“我同意”按钮才变为可用状态,学VB的朋友知道它应该是用了Timer控件,我们用VBExplorer打开它,发现它含有8个窗体,在frmRegInfo窗体看到有CmdExit,CmdAgree,CmdHelp几个按钮,还有个Timer1的Timer控件,它一定就是启动时那个窗口了,“我同意”按钮的作用是关闭该窗口去打开另一个窗口,Timer控件的作用是过一段时间后让按钮变为可用,我们就让Timer控件改一下功能,让它去运行“我同意”按钮的代码,这样就不需要我们点才能进去了。
我们先选Timer1控件,点那个闪电查看Timer事件的入口点,为0x004B28A0,用Ollydbg载入软件Ctrl+G查找004B28A0,在上面F2下断点,F9运行,被断在004B28A0处,发现它是从0040506C跳过来的,我们去0040506C上重新下断点,重新运行程序,在0040506C处被断下来
00405064 . 816C24 04 4F000000 sub dword ptr ss:[esp+4],4F
0040506C E9 2FD80A00 jmp CStudy.004B28A0 ------跳到Timer事件的执行代码处
00405071 00 db 00
在VBExplorer里再找CmdAgree按钮的入口点,为0x4B2300,我们把jmp 004B28A0改为jmp 004B2300试试,F9运行,嘿嘿,启动窗口自动消失打开主窗口了。用16进制编辑器打开软件把E92FD80A00改为E98FD20A00运行试下,启动窗口出来一秒自动消失。
接下来要把启动窗口去掉,这就简单啦,用VBExplorer把Timer1的Interval属性改为1,在把窗体frmRegInfo的Left或TOP属性值改大点让它移到屏幕外面就行了,改好后试下效果,嘿嘿,一打开就出现程序主窗口了!软件破解完毕,以上属于暴破,有耐心的朋友可以继续追出注册算法,写个注册机!
最后附上破解补丁,原版软件上面有地址,自己再去下载吧! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|