OllyDbg调试器简单介绍

   准备工作:吾爱破解[LCG].exe

                     一小例子

  简单介绍一下OD的界面

基本操作:

   OllyDbg比较容易上手

Ctrl+F2 - 重启程序,即重新启动被调试程序。如果当前没有调试的程序,OllyDbg会运行历史列表[history

list]中的第一个程序。程序重启后,将会删除所有内存断点和硬件断点。

译者注:从实际使用效果看,硬件断点在程序重启后并没有移除。
Alt+F2 - 关闭,即关闭被调试程序。如果程序仍在运行,会弹出一个提示信息,询问您是否要关闭程序。

F3 - 弹出“打开32位.EXE文件”对话框[Open 32-bit .EXE file],您可以选择可执行文件,并可以输入运行参数。

Alt+F5 -

让OllyDbg总在最前面。如果被调试程序在某个断点处发生中断,而这时调试程序弹出一个总在最前面的窗口(一般为模式消息或模式对话框[modal message

or dialog]),它可能会遮住OllyDbg的一部分,但是我们又不能移动最小化这个窗口。激活OllyDbg(比如按任务栏上的标签)并按

Alt+F5,OllyDbg将设置成总在最前面,会反过来遮住刚才那个窗口。如果您再按一下Alt+F5,OllyDbg会恢复到正常状态。

OllyDbg是否处于总在最前面状态,将会保存,在下一次调试时依然有效。当前是否处于总在最前面状态,会显示在状态栏中。
F7 -

单步步入到下一条命令,如果当前命令是一个函数[Call],则会停在这个函数体的第一条命令上。如果当前命令是是含有REP前缀,则只执行一次重复操作。
Shift+F7 -

与F7相同,但是如果被调试程序发生异常而中止,调试器会首先尝试步入被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。
Ctrl+F7 -

自动步入,在所有的函数调用中一条一条地执行命令(就像您按住F7键不放一样,只是更快一些)。当您执行其他一些单步命令,或者程序到达断点,或者发生异常时,自动步入过程都会停止。每次单步步入,OllyDbg都会更新所有的窗口。所以为了提高自动步入的速度,请您关闭不必要成窗口,对于保留的窗口最好尽量的小。按Esc键,可以停止自动步入。

F8 -

单步步过到下一条命令。如果当前命令是一个函数,则一次执行完这个函数(除非这个函数内部包含断点,或发生了异常)。如果当前命令是含有REP前缀,则会执行完重复操作,并停在下一条命令上。

Shift+F8 -

与F8相同,但是如果被调试程序发生异常而中止,调试器会首先尝试步过被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。

Ctrl+F8 -

自动步过,一条一条的执行命令,但并不进入函数调用内部(就像您按住F8键不放一样,只是更快一些)。当您执行其他一些单步命令,或者程序到达断点,或者发生异常时,自动步过过程都会停止。每次单步步过,OllyDbg都会更新所有的窗口。所以为了提高自动步过的速度,请您关闭不必要成窗口,对于保留的窗口最好尽量的小。按Esc键,可以停止自动步过。

F9 - 让程序继续执行。
Shift+F9 -

与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。

Ctrl+F9 -

执行直到返回,跟踪程序直到遇到返回,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条命令执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

Alt+F9 -

执行直到返回到用户代码段,跟踪程序直到指令所属于的模块不在系统目录中,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

Ctrl+F11

-Run跟踪步入,一条一条执行命令,进入每个子函数调用,并把寄存器的信息加入到Run跟踪的存储数据中。Run跟踪不会同步更新CPU窗口。

F12 - 停止程序执行,同时暂停被调试程序的所有线程。请不要手动恢复线程运行,最好使用继续执行快捷键或菜单选项(像 F9)。

Ctrl+F12 - Run跟踪步过,一条一条执行命令,但是不进入子函数调用,,并把寄存器的信息加入到Run跟踪的存储数据中。Run跟踪不会同步更新CPU窗口。

 

拿一个简单的例子

运行它得到


在反汇编窗口右键-->中文搜索引擎-->智能搜索

可以看到例子的全部字符串

双击“flag错误,再试试?”

来到上面的je跳转下断点(关于跳转知识请学习一下汇编,这里不多介绍了)

输入flag之后 , OD会停下来· 咱们把je修改成jmp

使得程序直接跳转到成功

这种方法叫爆破法

下面进行算法的分析

看到请输入flag下面的十六进制数  与ASCII码进行比较得到

galf

leW{

emoc

_oT_

W_ER

dlro

}!

由于是小端方式存储  把字符反过来就好了

 

常用断点:

常用的断电有INT 3 、硬件断点、内存断点、消息断点等。

INT 3断点(快捷键F2)

执行一个INT 3断点是,该地址出的内容呗调试器用INT 3指令代替了 ,此时OD将INT 3 隐藏,显示出来的仍是中断前的指令。实际上,

显示的是 00401511 CC 00004100

硬件断点:

  硬件断电和DRx调试寄存器有关。在Intel CPU体系结构手册中可以找到DRx调试寄存器的介绍。

下硬件断点操作:在反汇编窗口右键-->断点-->硬件执行

取消硬件断点可以在菜单栏调试-->硬件断点中取消

硬件断点只有4个

原理是用DR0、DR1、DR2、DR3设定地址,并使用DR7设定状态。

硬件执行断点与CC的断点的作用一样,蛋硬件断点不会降至零首字节修改为“CC”所以难以检测

 

内存断点:

设置内存访问/写入断点,原理是对所设的地址赋予不可以访问/不可写属性,这样当访问/写入的时候就会产生异常。OD在截获一场后,比较异常地址是不是断点地址,如果是就中断。

操作方式:在反汇编窗口右键-->断点-->内存访问/写入

 

消息断点:

Windows本身是有消息驱动的,如果调试时没有合适的断点,可以尝试使用消息断点。

在菜单栏-->查看-->窗口 下断点

 

OD常用插件:

CmdBar

吾爱OD上配有

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值