软件逆向之陌路寻踪:突破未注册版软件的限制功能

发表于:2015-05-05 08:00:00 来源: 黑客与极客 阅读数(0人)

摘要:试图对一个“太监版”的程序进行完整化,也就是把限制的功能恢复,把阉割的功能添加等等。


试验软件:PixtopianBook.exe (一个通讯录软件)


试验软件来源:www.fishc.com


打开原始程序运行,观察界面:

软件的限制功能

 

这是一个通讯录软件,老外写的,很显然,当前是未注册版,试验后发现有功能限制,限制是只能有三个分组,每组不能超过4个人。也就是说,你用未注册版,联系人只能有12个人啊有木有!!太坑爹了!


咳咳!为了我的朋友们都能装进这个通讯录,为了我想借钱的时候不至于只能联系到几个朋友,我决定一定要破解掉这个软件!载入OD(Ollydbg),开始调试它吧。


一 异常处理


打开PixtopianBook.exe后F9直接运行,发现有异常提醒,用shift+F9忽略异常。或者如下图进行设置:

软件的限制功能

 

在调试选项里添加异常范围,因为是32位操作系统,所以00000000-FFFFFFFF就是整个内存段了。此时再打开程序,就没有异常出现了。


二 突破【限制人数】功能


在OD运行弹出的软件界面试图添加第5个人,出现错误提示box,如下图:

软件的限制功能

 

不建议大家看到有messagebox就直接去搜索API,通过API和字符串入手,观察上下,尝试爆破。因为现在的程序设计的聪明了,使用间接地调用:先调用一个自己的进程,在进程里再调用messagebox来混淆视听,避免破解。


正确方法:此时在OD中按下暂停(暂停后OD中的地址跳至动态链接库,即系统领空处),然后按ALT+F9返回到用户,在用户界面点击确定后,OD中就返回到程序接管,地址跳转到下图的位置:

软件的限制功能

 

图中的MessageBoxA就应该是刚才的错误提示框了,F8到retn,返回到函数(函数调用之后碰到ret返回),如下图:

软件的限制功能

(相应修改方法在图中已标识)

 

上图即我们定位到的“人数添加限制”的关键代码处,只需将JL跳转指令修改为JMP,让程序跳过MessageBox的执行,添加人数的限制就会被突破喽!


注意:ret返回后,在上方又有一个call,说明在此处是间接地调用messagebox。


修改后保存。载入后已经可以突破人数添加的限制了。如下图:

软件的限制功能

 

哈哈,到此,第一个限制功能就被破解了!


三 突破【分组限制】功能


破解方法和突破人数限制一样,修改后如下图,可以添加无限制的分组了:

软件的限制功能

 

到此为止呢,程序的两个限制功能已经被成功爆破了,但是还有几处UNREGISTED看着碍眼,嘿嘿,接着把碍眼的地方除掉吧。


四 标题修改


接下来将几处”unregistered version”字符查找并修改:


方法1:查找所有参考文本字串→查找文本“unregistered version”→跟随到代码处,找到在内存中的地址→在数据窗口中修改保存。


方法2:直接点击Memory→Ctrl+B查找→修改后记住字符串在内存中的地址,到OD的数据窗口保存。【建议用这种方法】


注意:修改时记得【保持大小】,不然会出错。


修改之后的图片如下:

软件的限制功能

 

软件的限制功能

 

好了,所有修改完毕,展示下完整的破解版本吧,请看下图:

软件的限制功能

 

终于的终于,可以无限制的多添加几个朋友了,大家又可以一起愉快的玩耍了。


相关新闻

大家都在学

课程详情

逆向工程

课程详情

CTF-Reverse系列汇总

课程详情

IDA教程系列