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
修改内容
多出来的字符要用空字符填充,记得要勾选保持大小的选项,点击确定
跟随表达式,地址为修改的起始地址
选择内容
右键 -> 复制到可执行文件
右键 -> 保存文件
保存完后运行程序
修改成功