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

修改内容

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

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

选择内容

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

右键 -> 保存文件
保存完后运行程序

修改成功

浙公网安备 33010602011771号