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 对话框,就是模态对话框和非模态对话框,也有叫成模式和非模式 模态对话框不允许用户在不同窗口间进行切换,非模态对话框允许用户在不 ...
随机推荐
- 《gradle 用户指南中文版》 第一部分、关于Gradle
第一部分.关于Gradle 目录1.介绍1.1 关于本用户指南2.概述2.1 特性2.2 为什么选择Groovy? 上一页 | 目录 | 下一页
- Service的启动过程分析
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/76039510
- 解决在django中应用keras模型时出现的ValueError("Tensor %s is not an element of this graph." % obj)问题
用keras训练好模型,再在django初始化加载模型,这个过程没有问题,但是在调用到模型执行model.predict()的时候就报错: raise ValueError("Tensor ...
- caffe学习记录2——blobs
参考:caffe官网 2016-01-23 10:08:22 1 blobs,layers,nets是caffe模型的骨架 2 blobs是作者写好的数据存储的“容器”,可以有效实现CPU和GPU之 ...
- OK335xS knob driver hacking
/************************************************************************* * OK335xS knob driver hac ...
- 【剑指offer】07重建二叉树,C++实现
本博文是原创博文,转载请注明出处! # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 输入某二叉树的前序遍历和中序遍历的结果,重建二叉树 2.思路(递归) # 前序遍历中,第一个数 ...
- jQuery radio|checkbox的取值与赋值
文章简单即是美[我说的是技术博客] |--radio |--checkbox 参考: http://blog.csdn.net/gd2008/article/details/6951208 h ...
- BZOJ4566 Haoi2016 找相同字符【广义后缀自动机】
Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两 个子串中有一个位置不同. Input 两行,两个字符串s1,s2,长度分别 ...
- python嵌入c++
1.去主页下载源代码项目 2.编译下载下来的项目 3.新建项目填入下面代码 // pythonIncludeTest.cpp : 定义控制台应用程序的入口点. // #include "st ...
- 对两个奇葩的C语言程序的思考
原文章的连接为:http://www.cnblogs.com/jacksu-tencent/default.html?page=2 1. 第一个程序例如以下: #include <stdio.h ...