学习笔记
1、调试逆向概念
在程序开发过程中,程序员会使用一些调试工具,以便在高效地发现软件中存在的错误;而在逆向分析领域,分析者也会利用相关的调试工具,来分析软件的行为和验证分析思路。由于操作系统均提供了完善的调试接口,所以可以使用各种调试工具来方便灵活地观察和控制目标程序。
在使用调试工具调试程序时,程序会按照调试者的意愿按指令为单位执行。
- 动态分析技术指的是使用调试工具加载程序并运行,随着程序运行,调试者可以随时中断目标的指令序列,以便观察相关计算的结果和当前的设备情况。
- 静态分析技术是相对于动态分析技术而言的,在实际分析中,很多场景不适合运行目标(如病毒程序、设备不兼容、软件单独某一模块等)。
- 病毒:运行之后威胁系统安全
- 设备不兼容:如工控设备,造价高昂,接触不到
- 软件单独某一模块:不完整,没有主程序去调用它,运行不起来
2、OllyDbg界面
反汇编窗口分为四部分:
- 汇编代码对应的地址窗口
- 汇编代码对应的十六进制机器码窗口
- 反汇编代码窗口
- 反汇编代码对应的注释信息窗口
寄存器窗口显示所有寄存器的相关信息
信息窗口显示当前执行到的反汇编代码的信息
数据窗口分为三部分:
- 数据存放的地址
- 数据的十六进制
- 数据的ASCII码
堆栈窗口分为三部分:
- 栈地址
- 存放的数据
- 对应说明信息
3、OllyDbg快捷键
快捷键 | 作用 |
---|---|
F2 | 下断点,指定断点的位置 |
F3 | 加载一个可执行程序,进行调试分析 |
F4 | 执行程序到光标处 |
F5 | 缩小、还原当前窗口 |
F7 | 单步步入 |
F8 | 单步步过 |
F9 | 直接执行程序,遇到断点时,程序暂停 |
Ctrl+F2 | 重新执行程序到起始处,一般用于重新调试程序 |
Ctrl+F9 | 执行到函数返回处,用于跳出函数实现 |
Alt+F9 | 执行到用户代码处,用于快速跳出系统函数 |
Ctrl+G | 输入十六进制地址,快速定位到该地址 |
; | 输入注释 |
4、调试技巧
- 第一次调试,采用F8单步步过大体走一遍。
5、小知识点
- Windows调用A函数时,会按照参数从右到左依次push参数,之后call函数的地址
- 修改数据窗口中的数据后,如果是字符串,需要以00结尾
- 数据窗口被修改后,重新执行程序修改的内容会丢失