OD 实验(七) - 对一个程序的破解和去广告
程序:
这里有很多的动态链接库
双击运行程序
这个程序有次数限制
按钮也在隐藏处
主界面
退出程序,会弹出一个广告
目的:
让程序的使用次数不受限制,且没有显示次数的窗口
去除程序关闭时候的广告
逆向:
修改次数限制:
用 OD 打开程序
按 F8 走一下程序
程序在这里走到了一个循环,程序会在这个循环中走很久
要想退出这个循环,可以在 004BD452 处下一个断点,然后按 F9
然后接着往下走
当运行到这个地方的时候,就会启动程序
在这个地方应该按 F7 步入,而不是步过
要是步过,之后就会 exit 退出程序
这 call 指令这个地方下一个断点,重新载入程序运行
按 Alt+B 查看断点
按 Delete 删除该断点
回到主界面,按 F7 步入
F7 步入第一个 call
按 F8 往下走
走到动态链接库的地方
按 F8 接着往下走
走到这个地方会启动程序
在这个地方下一个断点
如果在这里直接按 F2 下断点的话,重新载入程序的时候,断点会不见
动态链接库应该下硬件断点
右键 -> 断点 -> 硬件执行,来下硬件断点,硬件断点只能下 4 个
重新载入程序,按 F9 运行
菜单栏 -> 调试 -> 硬件断点,可以查看硬件断点的信息
重新载入并按 F9 运行
程序停在了这个硬件断点处
按 F7 步入
进来之后,菜单栏 -> 调试 -> 硬件断点,可以删除该硬件断点
按 F8 继续往下走
走到这个地方,又启动了程序
在此处按 F2 下一个断点
这个 call 之后还有一大堆的指令,不像刚才那样后面是 exit 退出
按 F7 步入进去看看有什么
都是 jmp 跳转指令
按 F8 往下走
又到了动态链接库的地方
按 F8 继续往下走
在这个地方启动了程序,在这个地方下一个硬件断点
重新载入并运行程序后按 F7 步入,进来之后删除下的硬件断点
按 Ctrl+F8 让程序跑起来
跑起来会发现,程序会重复地一直循环跑
看来那个 call 没必要步入
按 F8
启动了程序,然后按绿色的按钮
指令往下走了一步
此处的 call 通往程序的主界面,还带有计数的功能
cmp eax,0x1 比较 eax 和 1 的关系
如果 eax 等于 1,ZF 就会置 1,然后 je 跳转语句将会进行跳转
也就是说 eax 等于 1 的话,程序会进入主界面
可以修改这条 call 指令来达到程序直接进入主界面,而没有对使用次数进行计数
这样每次 eax 的值将会为 1
保存文件并运行
直接进入到主界面
去广告:
用 OD 载入刚才保存的程序
按 F9 运行,运行之后关闭程序,出现广告,这时候按 F12 暂停
然后按上面的 K 按钮,快捷键为 Alt+K,显示调用堆栈
通过查看调用堆栈就能知道哪些函数被调用过
只有这个函数调用是在程序代码中实现的,其它的是在动态链接库中进行调用的
双击箭头指的空白处看看该函数的调用
在这里下一个断点
然后重新载入程序并运行
关闭主界面后
程序停在了该断点处,而没有弹出广告界面
按 F8 往下走
这时弹出了广告界面
这说明广告界面的出现是因为这个 call 指令
把这个 call 指令改为 nop 就好了
保存文件后运行,关闭程序后就不会再弹广告了
OD 实验(七) - 对一个程序的破解和去广告的更多相关文章
- OD 实验(十一) - 对一个程序的破解
程序: 点击安装程序 这是一个拼图程序 点击 Options -> Flash Sizes 程序会提示是未注册版本 点击一些选项的时候会提示该程序只给注册的用户 点击 Register 随便输入 ...
- OD 实验(九) - 对一个程序的破解
程序: 运行程序 点击 About 这是要注册的 点击 Register 输入邮箱和注册码,点击 Register Now 逆向: 用 OD 打开程序 右键 -> 查找 -> 所有参考文本 ...
- OD 实验(六) - 对一个程序的破解
程序: 双击进行安装,安装过程默认就好了 安装完成 运行程序 输入 User 为 sch01ar,点击 Create 点击 Log In 这里显示为未注册版本 看看未注册版本有哪些功能被限制 这里会显 ...
- 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 ...
- [android]亲自破解Flappy Bird(去广告+永生)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3544785.html 听说最近Flappy Bird很火,但 ...
- 实验七:Linux内核如何装载和启动一个可执行程序
原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linu ...
随机推荐
- Gradle 1.12用户指南翻译——第六十四章. 发布到Ivy(新)
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...
- 如何从github下载项目的源代码,包含git客户端,直接下载,vs下载
有好多小伙伴可能刚刚接触github,还不知道如果和github下载项目,此处写个博客统一的声明.从多种方式下载源代码,加深对git的理解. 首先先解释下git的含义,git是一个源代码的管理工具,通 ...
- C# 加密狗 超级狗 加密程序 程序授权示例 程序授权验证
本篇针对超级狗进行讲解,对应的超级狗套件的工具包版本为2.4版本.超级狗图片如下: 主要包含两个狗,一个是超级狗,一个是开发狗,在本博文中都是必须的.首先先安装光盘中的开发套间. 接下来就开始演示一个 ...
- UICollectionView 数据库元素分组 多种section分开显示
第一遍 复杂方法 : 数据库查询一个表中userID 然后进行分类 中间去重 获得ID个数 放到section 中 显示 #pragma mark - 查询不同的ID 各数 - (void)c ...
- iOS-----解决Prefix Header出错的问题
我们在使用 Prefix Header 预编译文件时有时会遇到如下的报错 clang: error: no such file or directory: '/Users/linus/Dropbox/ ...
- [IC]Lithograph(2)光刻技术的分辨率与分辨率增强技术
接上一篇介绍IC制造的基本过程,光刻的基本过程.这篇文章继续介绍光刻过程中的一些概念. 该系列文章的目录如下: [IC]Lithograph(0)半导体制造的基本过程 [IC]Lithograph(1 ...
- js之隔行换色
HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- 程序设计入门-C语言基础知识-翁恺-第七周:指针与字符串-详细笔记(七)
目录 第七周:指针与字符串 7.1 指针初步 7.2 字符类型 7.3 字符串 7.3 课后练习 第七周:指针与字符串 7.1 指针初步 sizeof 是一个运算符,给出某个类型或变量在内存中所占据的 ...
- 自己理解的java工厂模式,希望对大家有所帮助
[http://www.360doc.com/content/11/0824/17/3034429_142983837.shtml] 这两天突然想学学java源代码,不过看到一篇文章说看java源代码 ...
- BZOJ1220 HNOI2002 跳蚤 【容斥原理+高精度】*
BZOJ1220 HNOI2002 跳蚤 Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持 ...