Ollydbg介绍

Ollydbg(简称OD)是Windows平台下Ring3级的程序调试利器。程序调试有静态调试和动态调试两种。静态调试是指将程序源代码编译成可执行程序之前,用手工或编译程序等方法对程序源代码进行测试,来查找和修正程序中的语法错误和逻辑错误。动态调试则是在可执行程序的运行过程中,来查找和修正程序中的语法错误和逻辑错误。随着系统安全与逆向工程的不断发展,程序调试已经成为信息安全爱好者所必备的一种技术。OD结合了静态调试和动态调试的方法,功能强大,已经成为了Windows平台下普通应用程序的调试利器。

OD官网:http://www.ollydbg.de/(Windows 95、98、ME、NT、XP、Win7)。

OD汉化版请自行百度。

反汇编介绍

在计算机语言的进化过程中,是由低级语言(机器语言)向高级语言(C、C++、C#、Java等)逐步发展的,但是在实际的运行过程中,计算机能识别的只有机器语言(01代码)。所有高级语言在编译、链接、执行过程中转化为机器语言,并由CPU解释并执行。

机器语言不仅晦涩难懂,而且难以记忆,因此在计算机语言的进化过程中出现了汇编语言。汇编语言是一种与硬件紧密相关的程序设计低级语言,汇编语言使机器语言以便于记忆和理解的符号形式(又称为助记符)存在。

汇编是将汇编代码编译、链接成可执行文件的过程。反汇编则是将可执行文件还原成汇编代码的过程。反汇编技术常常应用在逆向分析、软件破解、漏洞挖掘等场景中,主要目的是逆向分析程序中的逻辑,然后改变程序的运行逻辑,达到更改程序执行的目的。

1. 熟悉OD的CPU窗口

打开OD。OD的默认主界面是CPU窗口。CPU窗口由5个子窗口(面板)组成,分别是反汇编窗口,信息窗口,寄存器窗口,数据窗口,堆栈窗口。图示OD现在并没有载入程序,因此所有窗口都是空的。

通过OD菜单–[文件]–[打开](或者快捷键F3)选择一个可执行程序文件(EXE、COM、DLL文件都可以)打开(这里打开OD的测试程序Test.exe)。可以看到OD加载可执行程序时的界面状态。

CPU窗口中的反汇编窗口用于显示被调试程序的代码。它有四个栏,地址栏[address]、十六进制数据栏[hex dump]、反汇编代码栏[disassembled commands]和注释栏[comments]。最后一栏可以改变显示模式为:相关源代码或运行统计[run profile],如果列标题栏可见的话,点列标题栏就可以改变显示模式。

地址栏[Address] - 显示距双击地址处的相对地址。再次双击基地址,则恢复为标准地址显示模式;

十六进制数据栏[Hex dump] - 设置或取消非条件断点;

反汇编栏[Disassembly] - 调用汇编器,修改命令;

注释栏[Comment] - 增加或修改与命令相关的注释。

CPU窗口中的信息窗口用于解码反汇编窗口中选中的第一个命令的参数,信息窗口也会显示隐含的参数。

CPU窗口中的数据窗口用于显示内存或文件的内容。可以从以下预处理格式中选择一种显示方式:字节[byte]、文本[text]、整数[integer]、浮点数[float]、地址[address],反汇编[disassembly]、PE头[PE Header]。

CPU窗口中的寄存器窗口用于显示和解释当前所选线程的CPU寄存器中的内容。该窗口同样允许修改寄存器,并可以跟进地址到其它CPU窗口。

CPU窗口的堆栈窗口用于显示当前线程的堆栈。当被调试程序暂停运行时,堆栈窗口一般会自动滚动将当前ESP指向的地址放在窗口的第一条。并且这个地址被高亮显示。在某些情况下禁止滚动会更方便一些,可以通过在堆栈窗口右键单击[锁定堆栈]来禁止堆栈自动滚动。

2. 熟悉OD的其他窗口

OD默认主界面是CPU窗口,因为在实际调试程序的过程中,用的最多的是CPU窗口,其他的许多窗口是辅助作用但是也非常实用。用OD打开测试程序Test.exe后,通过菜单->查看->可执行模块,打开可执行模块窗口(快捷键ALT+E)可以查看程序的模块调用信息。

其他的窗口还有,记录数据窗口(L)、内存映射窗口(M)、线程窗口(T)、窗口面板(W)、句柄窗口(H)、补丁窗口(/)、调用堆栈窗口(K)、断点窗口(B)、参考窗口(R)、RUN跟踪窗口(…)、源码窗口(S)。详细说明查看OD系统帮助(使用说明书)。

3.如何使用OD开始调试

在用OD打开测试程序Test.exe时,OD只是载入程序,并没有开始调试程序。在OD最右下角(堆栈窗口右下面)有一个黄色的状态提示窗,若显示为“暂停”,则表示OD处于暂停状态(例如程序尚未运行或者运行到断点位置)。此时,可以单击快捷菜单F9或者打开菜单[调试] – [运行]来运行程序。

用OD调试程序时,经常交换使用F7/F8/F9快捷键。其中F7表示[单步步入](遇到子函数时跟进到子函数内部,并停在子函数的第一条命令上),F8表示[单步步过](遇到子函数时直接运行完子函数),F9表示[运行]。

在运行Test.exe程序之后,可能会有程序异常导致程序中断。此时根据OD左下角的提示窗口信息可能需要Shift+F7/F8/F9来忽略异常继续执行程序。使用快捷键F9或者Shift+F9直到Text.exe程序入口点,此时OD的左下角信息提示窗口提示[程序入口点],表示已经运行到Text.exe的真实入口点。

继续使用快捷键F9运行程序,观察在不设置断点的情况下,OD调试器进入到Test.exe程序主界面的运行状态。

单击Test.exe主界面的[Close]按钮,观察Test.exe程序终止时OD的运行状态。

4.常用OD设置

OD调试器提供了非常多的调试设置选项。

打开OD菜单-[选项]-[界面],设置OD的外观。包含字体,颜色,代码高亮等设置,其中目录的UDD路径提供了OD默认保存的修改过的调试程序和备份用的调试程序,插件路径提供了OD的插件存放的路径。.\表示OD主程序所在目录的当前绝对路径。.\UDD即表示OD当前目录的UDD目录下。

5.常用OD快捷键

是否熟练使用快捷键是衡量使用者技术水平的一个重要标准。OD的快捷键相当丰富,当然我们经常用到的也不过那么十几个,请自行练习使用以下OD快捷键。

(1) Enter(回车键):将选中的命令添加到命令历史[command history]中,如果当前命令是一个跳转、函数或者是转换表的一个部分,则进入到目的地址;

(2) F2:在CPU窗口的反汇编窗口中,在选择的命令上开关INT3断点[Breakpoint],也可以双击该行第二列[HEX数据];

(3) F7:表示[单步步入](遇到子函数时跟进到子函数内部,并停在子函数的第一条命令上);

(4) F8:表示[单步步过](遇到子函数时直接运行完子函数);

(5) F9:表示[运行],在遇到断点后可以单击F9继续运行程序;

(6) Shift+F7/F8/F9:忽略异常,继续运行程序;

(7) Ctrl+F2:重新载入调试程序;

(8) Alt+F2:关闭调试程序;

(9) 空格键:汇编代码修改。可在CPU窗口中的反汇编窗口中以汇编代码修改实际代码或输入新代码,也可以在想要修改的代码处双击鼠标;

(10) Alt+B/C/E/K/L/M:显示断点窗口/CPU窗口/模块窗口/调用栈窗口/日志窗口/内存窗口;

(11) Alt+X:关闭OD;

(12) Ctrl+B:二进制(十六进制)搜索;

(13) Ctrl+E:二进制(十六进制)编辑所选内容;

Ollydbg简易教学相关推荐

  1. web课设 thinkphp5+mySQL 简易教学管理系统

    教学管理系统 需求 结果展示 登录界面 学生界面 教师界面 管理员界面 数据库设计 E-R图 实现 一.文件创建 二.前端界面 三.数据库设置 四.控制器 五.前端返回信息处理 ajax简单入门 需求 ...

  2. mysql 密码加密windows_Windows下mysql数据库的安装及8.0以上版本设置密码的命令(简易教学)...

    先去官网下载mysql的压缩安装包Download MySQL Community Server​dev.mysql.com 这时应该需要登录有账户的直接登录就可下载,没有账号的可以自行注册 下载完后 ...

  3. swift左滑手势简易教学

    swift中要使用手势,需要首先创建一个实例对象,然后设置其状态 var sideView:UIView func addSideMenu(){let swipe = UISwipeGestureRe ...

  4. 51单片机蓝牙通讯精准控制步进电机简易教学

    51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...

  5. 微信小程序录音功能(简易教学)

    .wxml <button bindtouchstart="touchdown" bindtouchend="touchup">按住录音</b ...

  6. 第一课 逆向分析基础知识

    看雪软件安全论坛 > 初学者园地 > 『伴你成长』 > 『资料导航』 加密与解密 解密分析入门基础知识 欢迎您,youcou 您上次访问的时间是: 2009-09-23,23:53 ...

  7. 吸烟检测 yolov5开源推荐

    [项目实战]YOLOV5 +实时吸烟目标检测+手把手教学+开源数据 文末有数据下载链接. 文章目录 一.项目展示 二.项目资源共享 1:训练图片:香烟图片+吸烟手势+烟雾 三.实践教学 3.1环境配置 ...

  8. 启明云端技术社区之星--张梦玉

    社区简介 启明云端技术社区致力成为开发者爱好者的交流学习平台,我们希望在这里能助力开发者们用乐鑫.sigmastarSSD20x等硬件方案在8ms平台上开发更多的智能产品,打造万物互联的智能世界. 欢 ...

  9. pytorch 吸烟检测yolov5s

    YOLOV5s +吸烟目标检测 参考学习 文章目录 本原创项目长期更新,旨在完成校园异常行为实时精检测,作到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新如下模型+数据+标注文件+教程.关 ...

最新文章

  1. 树莓派学习笔记——交叉编译工具链
  2. scala与python混合调用实验
  3. c++11 随机数random
  4. 两个git库之间迁移_从一个git仓库迁移代码到另一个git仓库(亲测有效版)(转)...
  5. 疫情防控,开发者集结出战!
  6. java线程同步(synchronized,wait,notify,notifyAll)
  7. [再学Python] - 4 - 循环
  8. 技术 产品 团队(上):如何成为超级个体
  9. win7 64的系统安装。net4.0总是提示安装未成功
  10. 一般处理程序里使用session对象为null,未将对象引用到实例化
  11. shiro框架的简单介绍以及使用(一)
  12. 16G kingston U盘 解除写保护
  13. matlab做nmf矩阵分解,进阶理解非负矩阵分解(NMF)
  14. 电子设计教程33:RC桥式正弦波振荡电路
  15. 【CityHunter】游戏进度总控,及需求设计
  16. 解决el-table 树形结构expand 操作后 stripe 显示失效问题
  17. 求三角形面积-gyy
  18. 彻底删除windos8 打印机驱动程序
  19. 熟练的“猎手”使用新的脉冲波 DDoS 攻击来打击多个目标
  20. tcp socket 和 socket文件

热门文章

  1. FPGA/IC领域术语表
  2. 提问的智慧-对自己学习之路的一次反思
  3. 【EPC】赛事竞猜上线后大涨50%,若风、Miss投资的电竞链实现商业化落地
  4. 量化投资范围包括哪些?
  5. EDI的国内外发展现状
  6. 疲劳驾驶监测方案_疲劳驾驶检测方法
  7. Windows 7及以上操作系统无法访问网络位置的问题
  8. QQ个人中心模块测试用例
  9. Sui Builder House首尔站倒计时!
  10. php convert函数,convert函数怎么用?