OD 实验(六) - 对一个程序的破解

程序:

双击进行安装,安装过程默认就好了

安装完成

运行程序

输入 User 为 sch01ar,点击 Create

点击 Log In

这里显示为未注册版本

看看未注册版本有哪些功能被限制

这里会显示这个是未注册的版本,要在今天注册

最多只能创建 3 个组

每个组最多只能添加四个联系人

目标:

修改程序添加组和联系人的限制

修改程序中的未注册的提示信息

实战:

用 OD 打开程序

该可执行文件在安装目录下

联系人数量的突破

按 F9 运行

再次试图新建一个联系人,还是不行

按 F12 暂停运行

然后按 Alt+F9,用于返回到用户

回到程序

按“确定”

返回到由程序接管

按 F8 往下走,是一个 retn 返回指令

走过这个指令,回到函数执行后的语句,也就是调用函数的地方

上面两条 ASCII 码的语句是程序弹出的对话框的内容

call Pixtopia.004562ED 间接调用了 MessageBox

继续往上拉一点

cmp eax,0x4,对 eax 和 4 进行比较,如果大于的话进行跳转

如果 jl 跳转指令进行跳转的话,就会跳过弹出的对话框

所以要让该处跳转,把 jl 改为 jmp

添加联系人已经没有数量限制了

组数量的突破

根据联系人数量的突破,可类似地对组数量进行突破

新建一个组

按 F12 暂停运行

然后按 Alt+F9,用于返回到用户

回到程序,点击确定

按 F8 往下走,执行 retn 返回指令,回到函数执行后的语句,也就是调用函数的地方

上面这段还是程序弹出的对话框

cmp eax,0x3 对 eax 和 0x3 进行比较,如果大于的话就进行跳转

如果 jl 跳转指令进行跳转的话,就会跳过弹出对话框的那一段指令

所以,可以把 jl 改为 jmp 进行强制跳转,按空格进行修改

组的数量限制也修改成功

修改未注册提示

载入程序,按按钮 M,快捷键为 Alt+M,显示内存窗口

右键 -> 查找,快捷键为 Ctrl+B,查找字符串

输入 UNREGISTERED VERSION,区分大小写,点击确定进行查找

选择内容,右键 -> 二进制 -> 编辑,对该字符串进行修改,快捷键为 Ctrl+E

修改内容

多出来的字符要用空字符填充,记得要勾选保持大小的选项,点击确定

跟随表达式,地址为修改的起始地址

选择内容

右键 -> 复制到可执行文件

右键 -> 保存文件

保存完后运行程序

修改成功

posted @ 2018-09-04 23:05  Sch01aR#  阅读(517)  评论(0编辑  收藏  举报