od的简单使用

  我在网上看了一下od的教程很全很好,不过为了方面学弟学妹们以及和大家交流,我决定写一下关于od的简单使用(大牛请无视)。
  首先把软件挂一下,od很多版本,52pojie的od还是挺好用的](https://down.52pojie.cn/Tools/Debuggers/)

介绍

  在软件开发的过程中,程序员会使用一些调试工具,以便高效地找出软件中存在的错误。
  而在逆向分析领域,分析者也会利用相关的调试工具来分析软件的行为并验证分析结果。
  软件调试技术分为静态调试技术和动态调试技术,而od具有强大的动态调试功能。
  OllyDbg 是一种具有可视化界面的 32 位汇编-分析调试器。它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。

结构

image

  1. 汇编代码对应的地址窗口
  2. 汇编代码对应的十六进制机器码窗口
  3. 反汇编窗口
  4. 反汇编代码对应的注释信息窗口
  5. 寄存器信息窗口
  6. 当前执行到的反汇编代码的信息窗口
    7~9. 数据所在的内存地址,十六进制,ASCII码
    10~12.栈地址,存放的数据,对应说明信息

快捷键

F2   //下断点
F3   //加载一个可执行程序
F4   //程序执行到光标处
F5   //缩小,还原当前窗口
F7   //单步步入
F8   //单步步过
F9   //直接运行程序,遇到断点处,程序会暂停
Ctrl+F2   //重新运行程序到起始处,用于重新调试程序
Ctrl+F9   //执行到函数的返回处,用于跳出函数
Alt+F9   //执行到用户代码处,用于快速跳出系统函数
Ctrl+G   //输入十六进制地址,快速定位到该地址处

使用

  使用不必多说,网上好多大牛总结的非常经典,下面我就给大家演示一下破解一个简单的小程序。

程序链接:http://pan.baidu.com/s/1hsOof0C 密码:ec5n


大牛略过,过程面对萌新,较为详细


首先用od打开程序
image

然后鼠标右键查找字符串
image

  找到关键字符,从而找到程序入口点,比如程序运行过程中显示的字符都可能成为关键字符,在关键字符周围下断点,先找到程序入口点(多下断点,多下断点,多下断点),往上找一找有一片NOP,就表示找到了这段函数的入口了,直接在入口点按F2下断点。
image
image

  F9运行程序,我们输入123456789只有,在call函数成功断下,004010AA这个函数应该是接收输入的值,004010B0是0x61也就是字符’a’和2比较,那么这个字符串的第二个字符应该是’a’
image

  cmp之后jnz,判断是否相等,不相等就跳转,改一下不让它跳转,双击红圈内字符,把z标志位改成1
image

  在004010C3有个call函数进去看一下,然后会发现’3’和’5’比较,根据分析3是我们输入的,所以第三个字符应该是5
image

然后依次分析得出最终答案

image