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继续执行程序。

  修改到此成功。

时间: 2024-10-13 12:39:19

OD调试1--第一个win32程序的相关文章

【DirectX11-Tutorial】运行第一个win32程序A Primer of Basic Windows

DirectX11-Tutorial 本系列主要参考此博客的文章,同时会加上一点个人实践过程. ========================================== 分割线 ========================================== <span style="font-family:Microsoft YaHei;font-size:14px;">#include <stdio.h> // include the sta

OD调试一个小程序的思考总结

最近用OD调试了一些小程序,有一些感悟,和大家分享一下 我用了一个多窗口的的程序(软件的试用),对如何去掉弹窗提供一些自己的看法,为大家提供一些思路 首先单步调试,会出现3个弹窗 1.通过对反汇编代码的分析,发现一个关键跳je,我们将je跳转改为jmp无条件跳转,使其直接跳过弹窗的程序 2.修改窗口句柄的值,学习过win32的人都知道,hOwner是一个父窗口的句柄,将他的值改为push 0x1,使他的子窗口失效 3.修改PE文件,alt+m进入内存映射的窗口并双击PE文件的内部 向下寻找,发现

OD学习笔记10:一个VB程序的加密和解密思路

前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程语言. VB是由事件驱动的编程语言:就是在可视化编程环境下我们可以绘制一些窗体,按钮,编辑框等控件,然后为这些控件所可能引发的事件如按钮被单击或者被双击编写对应的处理代码. 所有的VB程序几乎都是依赖于一个外部的动态链接库.这个动态链接库的名字是:MSVBVM60.dll(可能有多个版本,但名字都差

第一个Win32应用程序

今天使用Visual Studio 2015,在教程的指导下开发了一个Win32窗口应用程序,在这个过程中遇到了两个问题: 一.无法查找或者打开pda文件 解决办法:(工具栏)调试->选项->常规->(勾选启用源服务器支持):调试->选项->符号->(勾选Microsoft符号服务器),完成! 二.不能将const char*类型的值分配到LPCWSTR类型的实体(wndClass.lpszClassName = "DX11BookWindowClass&qu

带dos调试窗口的win32程序

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"") 方法只要在cpp文件头部加入一行: #pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")//以console程序样式,并且制

Win32 程序开发:创建一个应用程序窗口

一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSNAME"; WCHAR g_lpszWindowName[] = L"哈喽,新的征程"; // 函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 应用程序主函数 INT APIENTRY WinMain(H

OD调试9—实例:深入分析代码完成软件破解

OD调试9—实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出的一些走法,逆向程序的算法,才能体会逆向的真正乐趣! 所以,今天的主题是:是男人,就跟进去吧~ 这次还是使用一个比较简单的程序,不然太复杂的话,一步步跟进程序可能会把自己搞崩溃,脑子恐怕不够搞.大家凭自己的能力,能进入多少就进入多少,一分不少,一寸不多!能力是培养出来的,耐心! 试验软件:MrBil

使用AllocConsole在Win32程序中调用控制台调试输出

近期一个Win32窗口项目中,调试时经常需要输出调试信息以追踪数据流及程序运行状态. 起初我封装了一系列文件操作,实现了日志形式的调试信息输出,但在后期的使用过程中越发觉得颇不顺手.那么,如何方便地在Win32程序中使用控制台进行调试输出?答案如题:AllocConsole函数和C-Runtime的freopen函数.具体操作流程如下: 打开控制台 重定向输出流至控制台 执行调试信息输出操作 完整代码如下: SetConsoleTitle(_T("Debug Output")); fr

Directx11学习笔记【三】 第一个D3D11程序

在先前的解决方案中新建一个新的Win32项目FirstD3D11Demo.在写代码之前,我们必须先添加dx11所需要的库.为了链接dx库,右键项目选择属性->vc++目录,在包含目录中添加你所安装的SDK根目录\Include,在库目录中添加 根目录\lib\x86(或x64),在链接器->输入的附加依赖项中添加d3d11.lib.d3dx11.lib.dxerr.lib. 第一次使用d3d,首先应该从初始化开始. 初始化d3d11的步骤主要有以下几个: 1.定义我们要检查的设备类型和特征级别