个人密盘V6.9暴破详细过程
本帖最后由 cjchome 于 2010-2-10 12:28 编辑先前在吾爱发了个人密盘的破解版(链接:http://bbs.52pojie.cn/thread-36403-1-1.html),现公布破解方法与各位分享一下,希望大家多多指正。
先盗用一下大侠们惯用的破文格式
【文章标题】: 个人密盘V6.9暴破详细过程
【文章作者】: cjchome(菜鸟级)
【软件名称】: 个人密盘 V6.9
【软件大小】: 看附件吧 ^_^
【下载地址】: 向下翻页……没到就再向下翻
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
【保护方式】: 未注册版只能使用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:,如果ds:==0就是未注册,反之就是注册版了,太好了!查找cmp byte ptr ds:,0果然有好几处都是验证软件是否注册的。
接下来我们就是要找到哪个地方让ds:这里变成了0,第一步当然是先试试查找-》所有命令系列,mov byte ptr ds:,0这样的语句啦,查完还真有一条,是在一个函数里面,应该就是这里的原因了,如果未注册软件就会调用这个函数让ds:=0,耶!省了不少事,再查找mov byte ptr ds:,1,程序另有两个地方是赋1值的。试着把0040A013处的mov byte ptr ds:,0改成mov byte ptr ds:,1。
生成个c.exe文件试运行,进入后软件就变成已注册的了,也可以更改密码,到此破解成功。
后来跟踪代码找到注册码,万用注册码!一串不可思议的东东,哈哈,狂晕!!!有兴趣的朋友自己去找吧,这里不介绍了。
破解总结:
我的习惯是破解过程中有什么进展的话,就先生成新的exe文件,再对新的exe文件调试,这样不会一步做错就前功尽弃,于是有了a.exe、b.exe、c.exe,不知道各位能不能看得明白。
破解成功后发现,软件防改自检也不是很可怕,还是可以跳过的。
这个程序对ds:的赋值都是明码的,我们可以直接用查找命令找到,比较简单,如果不是的话,我们就得另想办法了。其实这方法比较土,比较专业的方法是右击cmp byte ptr ds:,0-》数据窗口中跟随-》内存地址,这时在数据窗口中找到51C31C,右键-》断点-》内存写入,F9运行软件,程序会断在对51C31C写入的地方,也就是上述的0040A013,改之。
刚接触一个新的软件,破解不可能是一次到位的,多思考多尝试,会有更好办法的。
论坛里高手太多啦,小弟在这里献丑了,破解过程有什么问题欢迎指正,在此谢过了。 嗯嗯,很好呵呵,学习一下 ,万用注册码!
还有万用注册码的哇 果然是非常非常的祥细 破文啊慢慢琢磨了哦 很不错的东西哦 感谢cjchome分享,第一篇技术主题贴加精鼓励! 学习了!!呵呵 让我来测试你一下你的破解成功吧 很有帮助,谢谢!!!!