5、软件漏洞挖掘与防护---破解未注册软件的功能限制

项目五 破解未注册软件的功能限制

一、 项目环境

VMware Workstation Pro 安装 Windows Server 2008 Datacenter 操作系统。

二、 项目软件工具

1.未注册软件 PixtopainBook.exe(通讯录软件)
2.软件安全动态分析工具 OllyDbg

三、 项目实践

项目需求:通过 OllyDbg 软件破解未注册软件 PixtopainBook 的功能限制,也就是在没有进行注册情况下将限制的功能恢复,让这些限制功能能够被用户正常使用。

1.运行 VMware Workstation Pro 的 Windows Server 2008 操作系统,进入操作系统后进行 PixtopainBook 软件的安装,安装步骤一直点下一步即可,安装完毕后需要创建一个用户如图 5-1 所示, 然后根据刚创建的用户运行PixtopainBook 软件程序如图 5-2 所示,最后进入软件主界面如图 5-3 所示。

在这里插入图片描述
图 5-1 创建用户

在这里插入图片描述
图 5-2 登录软件
在这里插入图片描述
图 5-3 软件主界面

2.根据图 5-3 所示,该通讯录软件是一款”UNREGISTERED VERSION”未注册版本的软件,软件本身有一个默认的组“Contact”,接下来我们在该默认组下添加联系人,点击上方的“Add”添加联系人按钮添加联系人,结果我们发现当我们添加超过 4 个人时,该软件就弹出报错提示,提示我们“一个组只能添加 4 个联系

人,请你注册软件”,如图 5-4 所示。
在这里插入图片描述
图 5-4 添加联系人

3.根据步骤二我们了解到该通讯录软件在未注册的情况下,一个组里面只能创建

4 个联系人,接下来我们来测试一下添加组的功能,点击“Add Group”按钮添加
组,结果发现当我们要创建超过 3 个组时,该软件就弹出报错提示,提示我们
“软件最多存在 3 个组,请注册软件”如图 5-5 所示,也就是说在软件未注册的
情况下,最多只能存在 3 个组。
在这里插入图片描述
图 5-5 创建组

4.根据上面两个步骤我们了解到了这款通讯录软件在没有注册的情况下,最多创建 3 各组,每个组最多创建 4 个联系人,也就是说使用这款未注册软件的用户最

多只能存放 12 个联系人,这显然是很坑人的,所以本次项目的任务就是利用OllyDbg 破解软件未注册下的功能限制,让用户能够随意添加联系人和添加组。打开 OllyDbg 按下 F3 选择 PixtopainBook 程序运行(程序默认安装路径C:\Program Files (x86)\PixtopianBook),如图 5-6 所示。
在这里插入图片描述
图 5-6 OllyDbg 运行程序

5.打开程序后按下 F9 运行程序,发现左下角提示“异常 E06D7363”,此时我们需要使用 Shift+F7/F8/F9 来忽略程序异常, 如图 5-7 所示。但是使用Shift+F7/F8/F9 来忽略程序异常是比较繁琐的操作,因为程序只要每重新执行一次我们都需要按组合键来忽略异常,所以这里建议到【选项】→【调试设置】

→【异常】选择添加异常范围,输入首个异常“00000000”,末个异常“FFFFFFFF”点击确定(由于是 32 位程序,所以异常范围 00000000-FFFFFFFF 忽略的是程序的所有异常),如图 5-8 所示。这样后续我们重新打开程序就自动忽略所有异常了。
在这里插入图片描述
图 5-7 程序异常
在这里插入图片描述
图 5-8 添加忽略的异常范围

6.忽略的程序异常添加完毕后,我们使用 Ctrl+F2 重新加载程序,按下 F9 运行程序,此时我们发现程序运行成功,并没有异常错误了。接下来我们在软件主界面下,选择默认组,点击“Add”添加联系人按钮,肯定会弹出如图 5-4 的提示框。那么这边大家需要了解一个知识点,就是我们 Windows 程序的错误提示框其实是调用 API 函数“MessageBoxA”,所以我们需要在命令行窗口当中输入“bp MessageBoxA”下断点, 然后按下回车。这条命令的含义是当程序执行到有MessageBoxA 的地方就会停止程序运行,如图 5-9 所示。

在这里插入图片描述
图 5-9 使用 bp 命令下断点

7.断点下完后,我们在重新点击”Add”添加联系人按钮,此时程序就直接运行到调用 API 函数 MessageBoxA 的位置停止下来,如图 5-10 所示。

在这里插入图片描述
图 5-10 程序停止在 MessageBoxA 位置

8.接下来按 F8 往下执行,当执行到图 5-10 当中的“call MessageBoxExA”指令时,错误提示框就会弹出,我们点击确定将错误提示框关掉,然后继续按 F8 往下执行,执行到”retn 10”指令,会进入返回函数的位置,如图 5-11 所示。

在这里插入图片描述
图 5-11 返回函数位置

9.按 F8 执行下一条返回指令“retn 0C”,将返回到 MessageBoxA 被调用的位置, 将界面往上拉一点我们就能看到MessageBoxA 函数调用的指令,如图5-12 所示。

在这里插入图片描述
图 5-12 MessageBoxA 函数调用位置

10.根据图 5-12 我们观察到调用 MessageBoxA 函数指令上面就是错误提示框里的提示内容,说明我们找到了我们需要破解的位置,再往上有一条跳转指令”jl short 00412DEF”此时显示的是跳转未实现,由于 jl 跳转指令是跳转未实现, 所以才会执行下面的错误提示内容和调用错误提示窗口,故在此处我们需要将jl 跳转指令修改为 jmp 无条件跳转,这样才能避开错误提示窗口调用和提示。如图 5-13 所示。

在这里插入图片描述
图 5-13 修改 jl 为 jmp

11.选中修改的指令,右键选择【复制到可执行文件】→【备份】→【保存数据到文件】,在弹出的保存文件框中输入保存的文件名为”PixtopainBook1”点击保存,如图 5-14 所示。

在这里插入图片描述
在这里插入图片描述
图 5-14 保存修改的程序

12.使用 OllyDbg 打开刚刚保存的 PixtopainBook1 程序,然后按 F9 运行程序, 此时在点击“Add”添加联系人按钮,会发现可以正常添加,说明该软件的添加联系人功能限制被我们给破解成功了,如图 5-15 所示。

在这里插入图片描述

图 5-15 添加联系人功能限制破解成功

13.破解添加组的功能限制跟破解添加联系人功能限制相同,重复上述步骤 6 到步骤 9,我们将找到调用添加组失败的错误提示窗口函数所在位置,往上拉也会发现有一个跳转指令 jl 未实现跳转,那么我们也需要将该 jl 指令修改为无条件跳转指令 jmp,实现跳转避开错误提示窗口和提示内容,如图 5-16 所示。

在这里插入图片描述
图 5-16 修改 jl 为 jmp

14.修改完毕以后选中被修改的指令进行保存, 步骤同上, 保存的文件名为”PixtopainBook2”,然后再使用 OllyDbg 打开刚保存的 PixtopainBook2 程序,按 F9 运行程序,然后点击“Add Group”添加组按钮,发现可以正常添加组, 如图 5-17 所示。说明添加组的功能限制被破解成功。

在这里插入图片描述
图 5-17 破解添加组功能限制成功

15.虽然程序的功能限制被我们破解成功了,但是如图 5-18 三处所示,显示软件程序是“UNREGISTERED VERSION”未注册版本,这很烦人,所以我们想把未注册版本显示内容修改为“REGISTERED VERSION”。

在这里插入图片描述
图 5-18 未注册版本提示

16.修改上图当中的第一处未注册版本提示,使用 OD 运行 PixtopainBook2 程序后,按 F9 让程序运行,然后使用组合键 Alt+M 打开内存窗口,在内存窗口中使用组合键 Ctrl+B 打开查找窗口,输入“UNREGISTERED VERSION”进行查找如图5-19 所示。查找到后选中要修改的内容按下空格键,将内容修改为“REGISTERED

VERSION”如图 5-20 所示。
在这里插入图片描述

图 5-19 查找内容
在这里插入图片描述
图 5-20 修改内容

17.修改内容完毕以后一定要保存,但不是在数据窗口当中保存,我们需要记住修改的起始位置地址,此处是 004E4BD8(参考图 5-20),然后使用组合键 Alt+C回到 CPU 窗口,按下组合键 Ctrl+G 输入“004E4BD8”跳转到该位置,然后选中已经修改完的内容右键选择【复制到可执行文件】→【备份】→【保存数据到文件】,保存的文件名为 PixtopainBox3,如图 5-21 所示。

在这里插入图片描述

在这里插入图片描述
图 5-21 保存修改的程序

18.使用 OD 打开 PixtopainBook3 程序,按下 F9 运行程序,观察到主界面上第一处未注册版本的提示已经修改成功,结果如图 5-22 所示。

在这里插入图片描述
图 5-22 第一处修改成功

19.在运行 PixtopainBook3 程序的基础上我们去修改第二处未注册版本提示,操作步骤同上,这里不在描述,如图 5-23 所示。修改完后一样也要保存,保存的文件名称为“PixtopainBook4”,然后使用 OD 加载 PixtopainBook4 程序,按 F9 运行程序,观察到主界面上第二处未注册版本提示内容修改成功,如图 5-24 所示。

在这里插入图片描述
在这里插入图片描述
图 5-23 查找、修改内容
在这里插入图片描述
图 5-24 第二处修改成功

20.在运行 PixtopainBook4 程序的基础上我们去修改第三处未注册版本提示,操作步骤同上,这里不在描述,如图 5-25 所示。修改完后一样也要保存,保存的文件名称为“PixtopainBook5”,然后使用 OD 加载 PixtopainBook5 程序,按 F9 运行程序,观察到 help 版本信息里面第三处未注册版本提示内容修改成功,如图 5-26 所示。至此本项目操作全部完成。

在这里插入图片描述
在这里插入图片描述
图 5-25 查找、修改内容

在这里插入图片描述
图 5-26 第三处修改成功

发布了29 篇原创文章 · 获赞 52 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_42250189/article/details/105059736