调试工具OllyDbg学习笔记

前言:

        在软件的开发过程中程序员会使用―些调试工具,以便高效地找出软件中存在的错误。而在逆向分析领域,分析者也会利用调试工具来分析软件的行为并验证分析结果。对于有源代码的程序,我们使用Visual Studio2019进行调试,它可以将C++源码反汇编;对于无源码的程序,我们使用OllyDbg进行调试分析,它的调试功能十分强大。

       OllyDbg的默认功能界面如下图所示。
 

 1:汇编代码对应的地址窗口。

2:汇编代码对应的十六进制机器码窗口。

3:反汇编窗口。

4:反汇编代码对应的注释信息窗口。

5:寄存器信息窗口。

6:当前执行到的反汇编代码的信息窗口。

7:数据窗口,数据所在的内存地址。

8:数据窗口,数据的十六进制编码信息。

9:数据窗口,数据对应的ASCII 码信息。

10:栈窗口,栈地址。

11:栈窗口,栈地址中存放的数据。

12:栈窗口,对应的说明信息。

基本快捷键及其功能:

                                

熟悉各个窗口后,来试试OD的操作方法,通过实际操作演练,将窗口标题“Hello world ”改为”I Like C.“

1.加载可执行程序

方法:使用快捷键F3选择要调试程序的路径。

           在菜单选项中(“文件”→“打开”)选择调试程序路径。

            将OllyDbg加入系统资源管理菜单中,鼠标右键“打开”

依次选择OllyDbg菜单“选项”→“添加到浏览器"→“添加OllyDbg到系统资源管理菜单”→“完成”,即可将OllyDbg加人系统资源管理菜单中,如下图所示。

 在上图中,代码运行到地址0x00D71801处,对应反汇编指令PUSH 0,此汇编指令对应的机器码为6A00(汇编指令对应的机器码可查询Intel 的指令帮助手册)。在OllyDbg的注释窗口中,已经分析出此汇编指令的含义:OllyDbg根据CALL 指令的地址,得知这个函数的首地址API MessageBoxA的首地址,进而进行分析对应的参数个数是4个和对应的参数功能

2.查看API MessageBoxA的各个参数的功能

MessageBoxA各参数的功能,找到弹出对话框的标题参数(地址D71801),此参数保存了字符串“Hello world”的首地址。

3.定位数据

双击地址D71801的汇编代码PUSH XXX复制地址,使用快捷键CTRL+G,输入查询地址00D77B30点”确定“快速定位到该地址处

4.修改数据

找到需要修改数据的地址的HEX数据,在下图1中,地址00D77B30对应的十六进制数据为0X48。双击HEX数据窗口中”48“处,弹出对应的编辑数据对话框,如下图2所示

 

 图1

 图2

去掉“保持大小”的勾选,可向后修改数据。在ASCII文本编辑框中,输入“I Like C.”,由于C\C++中字符串以00结尾,需要将字符串最末尾的数据修改为00。选择十六进制编码文本框,在末尾处插入00。单击“确定”按钮,完成对字符串的修改。

5.调试程序

使用快捷键F8单步调试运行,连续按4次F8键,单步运行4条汇编指令,观察栈窗口变化,。函数 MessageBoxA所需参数都已被保存在栈中。按快捷键F7可跟进到函数MessageBoxA 的实现代码中,这个API为一个间接调用,须再次按快捷键F7,程序运行到函数MessageBoxA 的首地址处。MessageBoxA 的实现代码较多,不适合初学者话框,学习,使用快捷键Alt+F9返回到用户代码处,MessageBoxA运行结束,弹出运行结果对查看是否修改成功。

 如上图所示修改成功!!!!

OD下载地址参考:(30条消息) 吾爱破解ODOllydbg-系统安全工具类资源-CSDN文库

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于调试64位应用程序,你可以使用OllyDbg的64位版本或者其他支持64位调试的工具。以下是一些基本步骤: 1. 获取OllyDbg 64位版本:你可以在OllyDbg官方网站上下载最新的64位版本。 2. 打开目标程序:启动OllyDbg,并选择要调试的64位应用程序。你可以使用OllyDbg的文件菜单或拖放方式打开目标程序。 3. 设置断点:根据需要,在目标程序中设置断点。你可以通过右键单击代码窗口上的特定行或指令,然后选择"Toggle breakpoint"来设置断点。 4. 开始调试:点击OllyDbg的运行按钮或按下F9键开始调试目标程序。程序将在第一个断点处停止。 5. 调试过程中的操作: - 使用F8键逐过程执行代码,或者使用F7键逐语句执行代码。 - 使用F5键继续执行到下一个断点处。 - 使用F2键在代码窗口中设置或删除注释。 - 使用F4键在堆栈窗口中跳转到当前指令的位置。 - 使用Ctrl+G键跳转到指定地址。 6. 查看寄存器和内存:在调试过程中,你可以使用寄存器窗口查看和修改寄存器的值,使用内存窗口查看和修改内存的内容。 请注意,OllyDbg是一个强大的调试器,但对于64位应用程序的调试可能会有一些限制。在某些情况下,你可能需要考虑使用其他支持64位调试的工具,如x64dbg、IDA Pro等。此外,要成功地调试64位应用程序,你需要熟悉x86-64指令集和64位程序的调试技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

summer 2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值