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 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚 ...
随机推荐
- 【Hibernate实战】源码解析Hibernate参数绑定及PreparedStatement防SQL注入原理
本文采用mysql驱动是5.1.38版本. 本篇文章涉及内容比较多,单就Hibernate来讲就很大,再加上数据库驱动和数据库相关,非一篇文章或一篇专题就能说得完.本文从使用入手在[Spr ...
- 从零开始编写深度学习库(五)PoolingLayer 网络层CPU编写
记录:编写卷积层和池化层,比较需要注意的细节就是边界问题,还有另外一个就是重叠池化的情况,这两个小细节比较重要,边界问题pad在反向求导的时候,由于tensorflow是没有计算的,另外一个比较烦人的 ...
- mysql在innodb索引下b+树的高度问题。
B+树索引介绍 B+树索引的本质是B+树在数据库中的实现.但是B+树索引有一个特点是高扇出性,因此在数据库中,B+树的高度一般在2到3层.也就是说查找某一键值的记录,最多只需要2到3次IO开销.按磁盘 ...
- Uncaught TypeError: jQuery.i18n.browserLang is not a function
/********************************************************************* * Uncaught TypeError: jQuery. ...
- [剑指offer]09用两个栈实现队列插入和删除操作,C++实现
原创博文,转载请注明出处! # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 用两个栈实现队列的插入和删除操作 2.思路 栈服从先入后出的原则处理数据,队列服从先入先出的原则处理数 ...
- Linux下定时任务Crontab的使用
使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 入门 # crontab –e 这样可以已编辑模式打开个人的cro ...
- hexo的环境搭建
今天开始折腾下hexo,安装起来还是有点坑,简单记录下,会不断更新. 网上安装的文章多不胜数,当然首先还是得去看看官方的文档. 按照官方的文档,不知大家是否顺利,本人搭建环境的时候并不顺利. 明确要安 ...
- 写一个Python的windows服务
1. 安装pywin32和pyinstaller pip install pywin32 pip install pyinstaller 2.写一个服务Demo # -*- coding: utf-8 ...
- LOJ2425 NOIP2015 运输计划 【二分+LCA+树上差分】*
LOJ2425 NOIP2015 运输计划 LINK 题意:给你一颗树,可以将任意一条边的权值变成0,然后求m条路径的长度的最小值 思路: 先二分最后的距离ans,然后我们把路程大于ans的所有路径拿 ...
- 语义版本号(Semantic Versioning)
版本号格式不陌生吧,.NET 传统的版本号格式类似这样 1.5.1254.0.本文将推荐一种新的版本号格式——语义版本号,格式类似这样 1.4.6-beta.我推荐语义版本号是因为这样的版本号自包含语 ...