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

修改内容

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

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

选择内容

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

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

修改成功
OD 实验(六) - 对一个程序的破解的更多相关文章
- OD 实验(七) - 对一个程序的破解和去广告
程序: 这里有很多的动态链接库 双击运行程序 这个程序有次数限制 按钮也在隐藏处 主界面 退出程序,会弹出一个广告 目的: 让程序的使用次数不受限制,且没有显示次数的窗口 去除程序关闭时候的广告 逆向 ...
- OD 实验(十一) - 对一个程序的破解
程序: 点击安装程序 这是一个拼图程序 点击 Options -> Flash Sizes 程序会提示是未注册版本 点击一些选项的时候会提示该程序只给注册的用户 点击 Register 随便输入 ...
- OD 实验(九) - 对一个程序的破解
程序: 运行程序 点击 About 这是要注册的 点击 Register 输入邮箱和注册码,点击 Register Now 逆向: 用 OD 打开程序 右键 -> 查找 -> 所有参考文本 ...
- OD 实验(十七) - 对一个程序的逆向分析
程序: 运行程序 弹出一个对话框,点击 OK 来到主界面,点击 Help -> Register Now 这是输入注册码的地方 按关闭程序的按钮 会提示剩下 30 天的使用时间 用 Ressco ...
- OD 实验(十三) - 对一个程序的逆向
程序: 运行程序 点击 Start,它就会进行对系统的扫描 点击 About -> Enter Registration Code 随便输入一下内容,点击 OK,会弹出该弹窗 用 PEiD 看一 ...
- OD 实验(八) - 对一个程序的逆向
程序: 运行 弹出 NAG 窗口,提示要花 20 美元注册 然后会进入主窗口 提示剩余 5 天的使用时间 点击,菜单栏 -> Help -> About 显示未注册版本 逆向: 用 OD ...
- OD 实验(十) - 对一个 VB 程序的逆向
前话: VB 程序用 OD 进行逆向的话,可以先查找相关的变量和字符串,以寻找突破口 变量: __vbaVarTstEq __vbaVarCompEq __vbaVarTstNe __vbaVarCo ...
- 实验 六:分析linux内核创建一个新进程的过程
实验六:分析Linux内核创建一个新进程的过程 作者:王朝宪 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029 ...
- JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
第二题 已知有十六支男子足球队参加2008 北京奥运会.写一个程序,把这16 支球队随机分为4 个组.采用List集合和随机数 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚 ...
随机推荐
- 求序列完美度(trie+贪心)
题目链接: 求序列完美度 题目描述 给出由n个数组成的序列s,规定第i个数s[i]到第j个数s[j]组成的子序列的完美度为该子序列中所有数的和与任意一个不在该子序列中的数进行异或运算得到的值中的最大值 ...
- 快速生成树RTSP
Note: 数据分组:
- [Java]如何为一个自定义类型的List排序。
好吧,三年了,又重拾我的博客了,是因为啥呢,哈哈哈.今天被问到一个题目,当场答不出来,动手动的少了,再此记录下来. Q:有一个MyObject类型的List,MyObject定义如下: class M ...
- debian 8.1 安装idempiere 2.1 X64 笔记
接上文.当虚拟服务器和虚拟机搭建完成后.登陆debian 8.1 X64. 进入虚拟服务器控制台.打开虚拟机.root登陆.(留好初始状态系统快照.以便系统恢复.) 由于之前debian8.1X64默 ...
- 表单验证——jquery validate使用说明
//validate 选项*********************************************************** $("form").validat ...
- MySQL排序_20160926
在工作中对数据进行排序也是最常用的,比如根据用户的下单金额降序 或者对销售业绩进行降序排序 在考核员工KPI时候也经常用到 一.order by 函数 order by 函数默认根据后面字段升序,使 ...
- Http中Get/Post请求区别
Http中Get/Post请求区别 (1)get是从服务器上获取数据,post是向服务器传送数据. (1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置 ...
- 字符编码:ASCII,Unicode和UTF-8
字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两 ...
- HDU4864 Task
题意 Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, t ...
- win7下安装ubuntu14.04lts 双系统
首先,在win7下的硬盘管理 压缩出一块空闲的分区,即压缩卷之后,不做任何操作. 并且确保该空闲卷是“基本”类型 不是的话,参考http://www.jianshu.com/p/2f07312 ...