OD 实验(十五) - 对一个程序的逆向
程序:

打开程序

出现一个 NAG 窗口

这是主界面
点击 Exit

程序出现 NAG 窗口,然后退出
用 PEiD 看一下

是用 VC++ 6.0 写的程序
逆向:
用 OD 载入程序
跑一下程序
出现 NAG 窗口时暂停

按 Alt+K 显示调用堆栈

这个是 MFC 的对话框,双击来到它所在的地方

下一个断点,重新跑一下程序

OD 停在了断点处
按 F8 往下走一步

NAG 窗口出现了
过了几秒就往下走了一步了

按 F9 运行

程序又停在了这个断点处
按一下 F8

主窗口出现了
点击 Exit

OD 往下走了一步
按 F9 运行

OD 又停在了断点处
按一下 F8

程序关闭的 NAG 窗口出现了
说明这个断点是三个窗口出现的地方

这个 call 语句上面有个 je 跳转指令,如果执行跳转的话,将跳过这个 call 语句
如果这个 je 跳转指令第一次执行跳转,第二次不执行跳转,第三次执行跳转,就会只显示主界面不显示 NAG 窗口
可以用到条件判断,设一个变量 i,如果 i 等于 2 的话就不执行跳转,i 等于 1 或 3 的话就执行跳转
按 Alt+M 显示内存窗口,查看程序的 PE 头结构

双击进入 data 段

找到一块没数据的地方
先测试一下这块地方在程序运行的时候会不会被影响到

右键 -> 断点 -> 硬件访问 -> Byte,关注这一个字节
重新跑一下程序,程序运行过程中没有停在该断点处,说明程序运行过程中没有对该字节区域造成影响
接下来在代码块区域找一个空白的地方

接下来使用 OD 的一个插件 NonaWrite 进行修改

在 NonaWrite 上写汇编代码

0x437D6E 为要修改的地址
下面为要修改的语句
写完之后点击“汇编”

然后把 je 跳转指令改为 jmp

保存文件,运行程序

没有了 NAG 窗口,只有主窗口
OD 实验(十五) - 对一个程序的逆向的更多相关文章
- OD 实验(十二) - 对一个 Delphi 程序的逆向
程序: 运行程序 界面显示的是未注册 点击 Help -> About 点击 Use Reg Key 这里输入注册码 用 PEiD 看一下 该程序是用 Delphi 6.0 - 7.0 写的 逆 ...
- 实验十五 GUI编程练习与应用程序部署
实验十五 GUI编程练习与应用程序部署 实验时间 2018-12-6 一:理论部分 1.Java 程序的打包:编译完成后,程序员将.class 文件压缩打包为 .jar 文件后,GUI 界面序就可以 ...
- VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager
VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager VMware vShield Manager是专为 VMware vCenter Server 集成 ...
- Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十五:FIFO储存模块(同步)
实验十五:FIFO储存模块(同步) 笔者虽然在实验十四曾解释储存模块,而且也演示奇怪的家伙,但是实验十四只是一场游戏而已.至于实验十五,笔者会稍微严肃一点,手动建立有规格的储存模块,即同步FIFO.那 ...
- OD 实验(十) - 对一个 VB 程序的逆向
前话: VB 程序用 OD 进行逆向的话,可以先查找相关的变量和字符串,以寻找突破口 变量: __vbaVarTstEq __vbaVarCompEq __vbaVarTstNe __vbaVarCo ...
- OD 实验(十九) - 对多态和变形程序的逆向
程序: 这个窗口显示这是一个需要去除的 Nag 窗口 点击“确定” 用 PEiD 看一下 这是一个用汇编语言写的程序 逆向: 用 OD 载入程序 Nag 窗口的标题和文本 右键 -> 查找 -& ...
- OD 实验(十七) - 对一个程序的逆向分析
程序: 运行程序 弹出一个对话框,点击 OK 来到主界面,点击 Help -> Register Now 这是输入注册码的地方 按关闭程序的按钮 会提示剩下 30 天的使用时间 用 Ressco ...
- OD 实验(十六) - 从对话框入手对程序的逆向
对话框: 对话框从类型上分为两类:modal 对话框和 modeless 对话框,就是模态对话框和非模态对话框,也有叫成模式和非模式 模态对话框不允许用户在不同窗口间进行切换,非模态对话框允许用户在不 ...
随机推荐
- 正则 匹配 HTML 标签
var tt=((result.data).toString()).match(/<style(([\s\S])*?)<\/style>/g);
- HDU 1073
http://acm.hdu.edu.cn/showproblem.php?pid=1073 模拟oj判题 随便搞,开始字符串读入的细节地方没处理好,wa了好久 #include <iostre ...
- Java从入门到精通全套教程免费分享
这是我自己早前听课时整理的Java全套知识,适用于初学者,也可以适用于中级进阶的人,你们可以下载,我认为是比较系统全面的,可以抵得上市场上90%的学习资料.讨厌那些随便乱写的资料还有拿出来卖钱的人!在 ...
- 8.另类方法求1+2+...+n[AnotherMethodOfCalculateSumN]
[题目] 求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). [分析] 这道题没有多少实际意义,因为在软件开发中不 ...
- 最新博客开启 - Noogle's Blogs
博客地址: http://noogel.xyz/ 戳我进入 Noogle's Blogs
- c# mysql and sqlserver数据库连接字符串
.net 项目访问sqlserver 和mysql 两种数据库时,连接字符串有些不一样 具体配置如下 <connectionStrings> <add name="mysq ...
- hiho1601最大分数 DP
#1601 : 最大得分 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在玩一个游戏.给定一个数组A=[A1, A2, ... AN],小Hi可以指定M个 ...
- Python基础之路
一.Python基础之简介 二.Python基础之数据类型 三.Python之运算符 三.Python变量 四.Python之流程控制 三.Python基础之函数 四.Python基础之面向对象
- 在MEF中实现延迟加载部件(转)
在MEF的宿主中,当我们通过Import声明导入的对象时,组装(Compose)的时候会创建该对象.例如: interface ILogger { void Log(string ...
- HAL层编写规范
andriod HAL模块也有一个通用的入口地址,这个入口地址就是HAL_MODULE_INFO_SYM变量,通过它,我们可以访问到HAL模块中的所有想要外部访问到的方法. 在Linux系统中,后缀 ...