【汇编】OllyDbg使用方法

1. 主窗口界面

【汇编】OllyDbg使用方法_第1张图片

反汇编面板:

  • 被调试程序在反汇编后显示在该面板窗口中,显示的信息分为四列,从左到右依次为:地址、数据、反汇编代码和注释
  • 主要关注的是反汇编代码列,该列将指令以汇编代码的形式显示,从而让用户在汇编层次上对程序进行调试

寄存器面板窗口:

  • 该窗口将程序运行时用到的寄存器的值都列了出来,其中寄存器的值发生变化时颜色会变为红色

堆栈面板窗口:

  • 该窗口显示的是程序执行时的堆栈信息,左边一列是堆栈地址,右边一列是该地址存放的数据

数据面板窗口:

  • 该窗口以十六进制和字符串的形式显示程序在内存中的数据

信息面板窗口:

  • 在调试跟踪时,该窗口显示与指令相关的寄存器值、API函数调用提示和跳转提示等信息

2.开始调试

2.1 打开方式

​ 一般有两种打开方式

  • 第一种:依次点击File->open,选择待调试的程序,若程序执行时需要输入参数,则可以在Arguments栏填入
  • 第二种:附加到正在执行的进程,依次点击File->Attach,选择需要调试的进行即可。

2.2 设置断点

2.2.1 INT3断点

  • 断点的一种,快捷键是F2,一种常用的断点类型
  • INT3指令的机器码为CC。当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常从而停在断点处,然后将断点处的指令恢复成原来的指令

优点

  • 可以设置无数个断点

缺点

  • 改变了原程序指令,容易被软件检测到。

2.2.2 硬件断点

  • 由硬件提供的调试寄存器组,可以对这些硬件寄存器设置相应的值,然后让硬件帮我们断在需要下断点的地址
  • 设置方法:依次点击Breakpoint --> Hardware on execution
  • 取消断点:依次点击:Debug --> Hardware breakpoints,然后在弹出的窗口中删除硬件断点(或者Breakpoint --> Remove Hardware breakpoints )

优点:

  • 速度快,在INT3断点容易被发现的地方使用硬件断点代替会有很好的效果

缺点:

  • 最多只能设置4个断点
    【汇编】OllyDbg使用方法_第2张图片

2.2.3 内存断点

  • 修改内存访问属性来触发内存访问错误而设置的断点称为内存断点
  • 设置断点:鼠标右键并依次点击:Breakpoint --> Memory, on access/Memory,on write。

2.3 跟踪运行

ollydbg快捷键 功能
F4 运行到指定地址
F7 单步步进,遇到CALL跟进
F8 单步步过,遇到CALL跳过
F9 运行程序
Ctrl+F9 遇到第一个RET指令时中断

2.4 地址跳转

  • 按下快捷键Ctrl+G可以直接跳转到对应的地址处
  • 如果要查看某个地址的数据 ,那么点击一下数据窗口,然后按下快捷键便可跳转到对应地址
  • 同理,如果要 查看汇编代码或是堆栈数据,采用同样的操作即可
  • 执行Go to命令,打开一个Enter expression to follow(对话框),输入地址,单击OK按钮
    【汇编】OllyDbg使用方法_第3张图片

2.5 堆栈相关操作

  • 堆栈区显示的数据总是从栈顶指针ESP处显示
    • 选择Address ->Relative to ESP(子菜单一般只显示上面4个种的3个,根据需要动态变化),这时堆栈窗口就以ESP为指引,显示你想要的数据
    • 随着程序单步执行时(F7或F8),窗口中的ESP总是滚动的,总是将栈顶置于顶部
    • 在观察某个地址处数据的变动时会不方便,如果你不想滚动,而是想观察某个位置上的堆栈值,这时可以使用Lock Stack来锁定滚动。
      【汇编】OllyDbg使用方法_第4张图片

ps:博主正在学习汇编当中,会在之后更新更详细的OD使用经验和汇编知识

你可能感兴趣的:(学习)