今天有幸能得到看雪邀请码,特别激动,我终于成为看雪的正式会员了,感谢管理员及各位坛友的支持!

因为邀请码是由本人先前发在『新人交流投稿』区的《【分享】终于把一个很好用的密盘软件破解了,欢迎各位测试使用》得到的(链接:http://bbs.pediy.com/showthread.php?t=104089),由于那里只是个软件分享,所以产生了在成为会员后,处女贴就先写一篇此软件破解过程的想法,以做留念,也与各位分享一下,希望大家多多指正。

先盗用一下大侠们惯用的破文格式

【文章标题】: 个人密盘V6.9暴破详细过程
【文章作者】: cjchome(菜鸟级)
【软件名称】: 个人密盘 V6.9
【软件大小】: 看附件吧 ^_^
【下载地址】: 向下翻页……没到就再向下翻
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]
【保护方式】: 未注册版只能使用30天,且不能更改密码
【编写语言】: Borland C++
【使用工具】: PEiD v0.95、OllyDBG v1.10
【操作平台】: Windows XP
【软件介绍】: 《个人密盘》在硬盘剩余空间上虚拟一个加密磁盘,用来保存您的个人文件,可以随时打开/关闭,纯绿色软件,无需安装,极漂亮的MacOS界面,支持多用户使用。是一款极好的个人安全工具。适用于单位/网吧/或多人共用的电脑,比《私人磁盘》更好用、更安全。 
本软件与WINDOWS系统完美的结合在一起,在硬盘中的剩余空间中建立加密区并虚拟成一个磁盘供用户使用(加密区大小从0开始随用户文件自动增长),可以像U盘一样可以随时插拔,用户只需将文件存入《个人密盘》,操作完后将《个人密盘》关闭,程序就会自动将《个人密盘》中的文件加密,别人无法打开,杀毒程序也无法访问,既方便又安全,真正的个人文件保险箱!本程序也支持活动硬盘。支持多用户。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

--------------------------------------------------------------------------------

【详细过程】
  第一步当然是查壳脱壳啦,扔进PEiD查一下,UPX的壳,直接用PEiD的插件Unpack UPX 2就可以脱了,得到Unpack.exe。



  脱完壳试运行一下,软件不能运行了,竟然提示本程序已被非法修改!点确定就退出了,破解经验甚少的我着实吓了一跳。



  冷静一想,软件会出现这样的自定义提示,说明软件还是可以正常运行的(至少脱壳后没有损坏),只是它检查到自己被修改,提示后退出。是不是可以像跳过一般注册信息那样跳过这条提示呢?

  于是用OD打开,查找ASCII,查找软件提示的字符串“本程序已被病毒或其它程序非法修改!!!”,哈哈,果然有,同时还发现还有另一个字符串“检测到您曾经或正在运行跟踪类软件,请重启机器后再运行本程序!”,这个字串在我运行和用OD打开个人密盘都没有提示,我想可能是因为我用的OD是修改版,软件标题已经被改过,以防被有防跟踪的软件识别吧,如果不是此版OD的朋友可以加个HideOllyDbg插件。

  双击字串转到代码界面,向上就是一个跳转,原来程序就是调用MessageBoxA来显示这两个字符串的,把je改成jmp强行跳过,先生成个a.exe文件试运行,提示框就不会再出现了。



  这时新的问题出现了,通过密码验证后,软件不能进入主界面,闪一下就退出了,没有任何提示信息。

  开始还以为是程序被改过出错了,后来又想,是不是程序中有个暗桩,如果被修改后就会自动退出呢?试试吧。

  找到这个暗桩成了很大的问题,软件没有任何提示就退出了,一开始真的让我无从下手,思考良久……(过程略)后来想到,这个暗桩的判断方法应该和提示程序被修改的条件是一样的,于是查找-》所有命令系列,把我们刚才改过的跳转前面两段代码
call 00402754
test al,al
输入到查找框中。



  果然在程序中找到两个地方有这段代码,一个就是那个出现修改提示的,另一个就是程序退出的元凶了,上面是一个跳转,在004126BC处下断点,用OD把上面去除被修改提示的a.exe文件载入调试,F9运行,发现004126C3处的跳转未实现,运行到call 004ECA94程序就OVER了,于是我们就知道要把je改成jmp,强行跳过,再生成b.exe,试运行,软件正常了,接下来的工作就是开始破解。

  (刚破解此软件时我的经验比较少,用的办法是查到所有与未注册有关的字符串,把前面的跳转一一改过。由于未注册版不能更改密码,到更改密码那步在程序中找不到相应字符串,就用API函数MessageBoxA下断,找到后跳过就是破解完成了,但这种方法并不是完美破解法,30天的限制还不知道有没有跳过,所以我一直很不放心。这种方法是不可取的,这里不多做介绍,下面介绍完美破解法。)

  直到写这编破文时,我不得不重新开始破解这个软件,于是开始寻找更好的破解方法,如下:

  我们在查找到的字符串中可以看到以下字符串



这是软件的标题,我的思路是:这是最早出现判断软件是否注册的地方,在这里应该要有一个标记软件是否注册的位置,以便后面要实现的功能判断是否可以执行,如是否有30天限制或能否更改密码。

  双击“【个人密盘】V6 已注册-”来到代码处,前面跳转上面有一个比较语句,哈哈,地址是明码的,ds:[51C31C],如果ds:[51C31C]==0就是未注册,反之就是注册版了,太好了!查找cmp byte ptr ds:[51C31C],0果然有好几处都是验证软件是否注册的。



  接下来我们就是要找到哪个地方让ds:[51C31C]这里变成了0,第一步当然是先试试查找-》所有命令系列,mov byte ptr ds:[51C31C],0这样的语句啦,查完还真有一条,是在一个函数里面,应该就是这里的原因了,如果未注册软件就会调用这个函数让ds:[51C31C]=0,耶!省了不少事,再查找mov byte ptr ds:[51C31C],1,程序另有两个地方是赋1值的。试着把0040A013处的mov byte ptr ds:[51C31C],0改成mov byte ptr ds:[51C31C],1。



  生成个c.exe文件试运行,进入后软件就变成已注册的了,也可以更改密码,到此破解成功。

  后来跟踪代码找到注册码,万用注册码!一串不可思议的东东,哈哈,狂晕!!!有兴趣的朋友自己去找吧,这里不介绍了。

破解总结:

  我的习惯是破解过程中有什么进展的话,就先生成新的exe文件,再对新的exe文件调试,这样不会一步做错就前功尽弃,于是有了a.exe、b.exe、c.exe,不知道各位能不能看得明白。

  破解成功后发现,软件防改自检也不是很可怕,还是可以跳过的。

  这个程序对ds:[51C31C]的赋值都是明码的,我们可以直接用查找命令找到,比较简单,如果不是的话,我们就得另想办法了。其实这方法比较土,比较专业的方法是右击cmp byte ptr ds:[51C31C],0-》数据窗口中跟随-》内存地址,这时在数据窗口中找到51C31C,右键-》断点-》内存写入,F9运行软件,程序会断在对51C31C写入的地方,也就是上述的0040A013,改之。

  刚接触一个新的软件,破解不可能是一次到位的,多思考多尝试,会有更好办法的。

论坛里高手太多啦,小弟在这里献丑了,破解过程有什么问题欢迎指正,在此谢过了。