OD调试1--第一个win32程序
OD调试一:第一个Win32程序的修改
在软件开发的过程中,程序员会使用一些调试工具,以便高效地找出软件中存在的错误。而在逆向分析领域,分析者也会利用相关的调试工具来分析软件的行为并验证分析结果。由于操作系统都会提供完善的调试接口,所以利用各类调试工具可以非常方便灵活地观察和控制目标软件。在使用调试工具分析程序的过程中,程序会按调试者的意愿以指令为单位执行。
调试逆向分为动态分析技术和静态分析技术。
动态分析技术指的是使用调试工具加载程序并运行,随着程序运行,调试者可以随时中断目标的指令流程,以便观察相关计算的结果和当前的设备情况。
静态分析技术是相对于动态分析而言的。由于在实际分析中,很多场合不方便运行目标(例如病毒程序,设备不兼容,软件的单独某一模块)。那么这个时候静态分析技术就该上场了!
OD(OllyDbg)和IDA Pro这两款工具分别是调试逆向的倚天剑和屠龙刀。虽然两者都兼容动态和静态的调试方式,但就动态调试而言,OD更为灵活和强大,而静态调试工具的王者理所应当是功能极为强大的IDA Pro。
1. 汇编代码对应的地址窗口
2. 汇编代码对应的十六进制机器码窗口
3. 反汇编窗口
4. 反汇编代码对应的注释信息窗口
5. 寄存器信息窗口
6. 当前执行到的反汇编代码的信息窗口
7~9. 数据所在的内存地址,十六进制,ASCII码
10~12.栈地址,存放的数据,对应说明信息
任务要求:通过OD将程序的标题“I love fishc.com”改为“Iam JiaYuntian”
具体操作步骤:
打开OD。按F3载入程序hello.exe.
粗略浏览汇编代码,发现是一些乱七八糟的东西。Ctrl+F2重新载入程序回到入口点OEP。一直按F8单步步过,注意观察窗口各处信息的变化,一直按到出现对话框。此时停在下图的这个call上。
在此行按F2设下断点(或者双击该行),Ctrl+F2重新载入,直接按F9运行到断点处,按F7单步步入这个call里。
进入到这里后,继续按F8单步往下执行。
此处就找到了我们要修改的地方。
在左下方的数据窗口里按Ctrl+G,键入地址00422030,确认
在第一行的地方按空格,修改标题内容:此处应注意,16进制数字末尾处应加上00(因为字符串是以0结尾的,C语言编程里有学到。)
点击确定,修改完成。按F9继续执行程序。
修改到此成功。
OD调试1--第一个win32程序的更多相关文章
- 一个Win32程序的进化------转载
一个Win32程序的进化 转载 weixin_34273046 发布于2017-11-15 10:53:00 阅读数 10 收藏 展开 一.为什么要学Win32 要回答这个问题,我们就要先搞清 ...
- [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...
- OD 实验(十) - 对一个 VB 程序的逆向
前话: VB 程序用 OD 进行逆向的话,可以先查找相关的变量和字符串,以寻找突破口 变量: __vbaVarTstEq __vbaVarCompEq __vbaVarTstNe __vbaVarCo ...
- 在cmd启动一个win32程序,printf把信息输出到启运它的那个CMD窗口
#define ProcessBasicInformation 0 typedef struct { DWORD ExitStatus; DWORD PebBaseAddress; DWORD Aff ...
- 第一个win32程序
vs2017下自动创建的窗口程序 // win_test.cpp : 定义应用程序的入口点. // #include "framework.h" #include "wi ...
- 最简单的一个win32程序
#include <windows.h> HINSTANCE g_hInst = NULL; //2 窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, ...
- Win32程序支持命令行参数的做法(转载)
转载:http://www.cnblogs.com/lanzhi/p/6470406.html 转载:http://blog.csdn.net/kelsel/article/details/52759 ...
- Win32程序支持命令行参数的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 首先说说Win 32 API程序如何支持命令行参数.Win 32程序的入口函数为: int APIENTRY _tWi ...
- OD学习笔记10:一个VB程序的加密和解密思路
前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程 ...
随机推荐
- C#操作Flash动画
对于在C#开发的过程中没有接触过Flash相关开发的人员来说,没有系统的资料进行学习,那么这篇文档针对于初学者来说是很好的学习DEMO. 本文章中的DEMO实现了C#的COM控件库中本来就带有对fla ...
- 【android】android中activity的启动模式
在AndroidManifest.xml中配置 <activity android:label="第二个应用" android:name=".Demo2Activi ...
- ubuntu12.04 安装 ruby1.9.3
sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt-get update sudo apt-get install ruby rubygems ...
- java基础总结——数组
数组需要掌握的: 1.数组的定义 2.数组的内存分配及特点 3.数组操作常见问题 4.数组常见操作 5.数组中的数组(理解) 数组唯一属性:length,即数组的长度. 1.数组定义 格式一: 元素类 ...
- python描述符 descriptor
descriptor 在python中,如果一个新式类定义了__get__, __set__, __delete__方法中的一个或者多个,那么称之为descriptor.descriptor通常用来改 ...
- 数据库语句union的总结
select * from ( (select * from user limit 0,3) union (select * from user limit 10,30) ) tmp where ui ...
- (转)centos6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!
centos6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!
- linux find详解
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> - < ...
- java设计模式--结构型模式--组合模式
什么是组合模式,这个有待研究,个人觉得是各类组合而形成的一种结构吧. 组合模式: 组合模式 概述 将对象组合成树形结构以表示"部分-整体"的层次结构."Composite ...
- MVC View返回list列表
); Sql sql2 = ); Sql sql3 = ); Sql sql4 = ); Sql sql ...