OllyDBG使用

OllyDBG基本操作

1)        查找调用的API 函数。 OllyDBG 的反汇编窗口中右击鼠标,在弹出菜单中选择 查找->当前模块中的名称 (标签),或者我们通过按 CTR+N 组合键也可以达到同样的效果,界面输入可搜索。右键菜单可下断点

2)        查找引用字符串。反汇编窗口中右击,出来一个菜单,我们在 查找->所有参考文本字串 上左键点击

3)        数据窗口,选择其中的转到->表达式,找内存地址。内存断点只在当前调试的进程中有效,就是说你如果重新载入程序的话内存断点就自动删除了。且内存断点每一时刻只能有一个

4)        函数调用是先把最后一个参数压栈,参数压栈顺序是从后往前。这就是一般比较常见的 stdcall 调用约定。

5)        RUN 跟踪就是把被调试程序执行过的指令保存下来,让你可以查看被调试程序运行期间干了哪些事。RUN 跟踪会把地址、寄存器的内容、消息以及已知的操作数记录到 RUN 跟踪缓冲区中,你可以通过查看 RUN 跟踪的记录来了解程序执行了那些指令。汇编窗口,右键,RUN跟踪->添加所有函数的入口,运行,用这个可以跟踪,如运行过了会有红色显示出来。点运行程序,这样程序就运行完了,就可以开始分析了。首先还是找那个范围出来吧。点查看菜单--run跟踪--选择一行--点右键选统计模块,统计结果中的计数,是运行这个程序块的次数。对每个一次的下端分析。在运行run跟踪前最好先大体定下位,跳过一些无关代码

6)        点击菜单 查看->窗口(或者点击工具栏上那个“W”的图标),查看窗口信息

7)        汇编功能。双击汇编代码可以改写保存

8)        binary copy/paste。用binary copy把代码放到notepad,下次用时再binary paste

9)        更改二进制文件。方法1.查看-->文件,打开文件,找到欲修改的偏移,使用机器码修改,然后右击保存文件.方法2.直接在反汇编代码区更改,这时可以使用汇编代码更改,不用记机器码.完了.右击-->复制到可执行文件-->保存文件。

10)     bpbpx的区别bp address,string -- Break with condition   [addressstring下断点]bpx string -- Break on all calls            [call string下断点]

11)     暂停F9运行目标程序,并且有意让目标程序显示“MessageBox”,然后切换到OD中,F12暂停。在程序某段的开头第一行代码下断(下面也行,这样可以避免不必要的干扰)中断后在堆栈中的第一行选反汇编中跟踪就可以返回到上一层的调用这里的地方了,回到上一层后,如果发现关键段不是这段,再在此段的开头第一行下断,向上找。这样可以一层一层向上找,直到找到最初的调用的CALL,这里就是关键段了!

12)     条件断点bp CreateFileA,[[STRING [esp+4]]]=="abcdefghigklmn"

13)     万能断点HMEMCPY(俗称为万能断点)

14)     第一 寻常断点F2键,在命令窗口中输入BPX xxxxxxxx 下断。

15)     第二 API断点1.  在代码窗口中点鼠标右键,出现功能菜单。在[搜索]选择项下有〔当前模块的名称〕和〔全部模块的名称〕俩项,选择其中的一项就打开了程序调用API的窗口,在这个窗口中选择你要跟踪的API函数名。双击这个函数就能到程序的调用地址处。然后用F2下中断。也可以在API窗口中选择需要跟踪的函数点鼠标右键出现功能菜单,选择〔在每个参考设置断点〕。同样下了断点。快捷方式:Ctrl+N 2.  在命令行窗口中输入BPX  API函数名或者BP  API函数名 后回车。这时出现了所有调用这个函数的地址的窗口,在这个窗口中可以看到调用这个API函数的地址已改变了颜色。说明下好了断点。

16)     第三  内存断点(跟踪关键数据的断点)。在程序运行中断时选择界面中的转存窗口,用光标选择内存中的一段关键数据(颜色会改变),然后右击鼠标出现功能菜单。选择〔断点〕项,其中有二个选择〔内存访问〕和〔内存写入〕。另外的一种方法:程序运行时如果知道关键的数据,比如我们输入的试验码、程序生成的序列号等。这时在内存中一定存在这些数据。用Alt+M打开内存窗口,在这个窗口中搜索知道的关键数据。用光标选择这些数据同样下内存中断,这种方法更容易找的关键的数据。

17)     第四  硬件断点(跟踪关键标志的断点)。三个方式〔硬件访问〕、〔硬件写入〕、〔硬件执行〕。方法:在转存窗口中选择到标志存放的内存地址处,然后选择标志值。下〔硬件写入〕中断(根据标志的字节下不同的长度)。重新运行程序你会发现Ollydbg会不断的中断在这个标志的内存地址处。在功能菜单的〔调试〕选项下选择〔硬件断点〕就打开了硬件断点的窗口,在这个窗口中选择〔跟踪〕,这时转存窗口就会来到被下中断的内存地址处。运行程序跟踪内存地址中的值就会知道被赋标志的代码,跟踪到计算的核心。〔硬件访问〕的使用可以知道程序在运行时多少地方用到了这个注册标志。

18)     ALT+F9,返回到用户空间

19)      

20)      

21)     快捷命令栏插件

CALC  判断表达式   

WATCH  添加监视表达式   

AT / FOLLOW  Disassemble at address  在地址进行反汇编   

ORIG  Disassemble at EIP  反汇编于 EIP   

DUMP  Dump at address  在地址转存   

DA  Dump as disassembly  转存为反汇编代码   

DB  Dump in hex byte format  转存在十六进制字节格式   

DC  Dump in ASCII format  转存在 ASCII格式   

DD  Dump in stack format  转存在堆栈格式   

DU  Dump in UNICODE format  转存在 UNICODE格式   

DW  Dump in hex word format  转存在十六进制字词格式   

STK  Go to address in stack  前往堆栈中的地址   

AS + 地址 +字符串  Assemble at address  在地址进行汇编   

L + 地址 +字符串  Label at address  在地址进行标号   

C + 地址 +字符串  Comment at address  在地址进行注释   

BP  Break with condition  使用条件中断   

BPX  Break on all calls  中断在全部调用   

BPD  Delete break on all calls  清除位于全部调用的断点   

BC  Delete breakpoint  清除断点   

MR  Memory breakpt on access  内存断点于访问时   

MW  Memory breakpt on write  内存断点于写入时   

MD  Remove memory breakpoint  清除内存断点   

HR  HW break on access  硬件中断在访问   

HW  HW break on write  硬件中断在写入   

HE  HW break on execution  硬件中断在执行   

HD  Remove HW breakpoint  清除硬件断点   

STOP  Pause execution  暂停执行  

PAUSE  PAUSE   

RUN  Run program  运行程序  

Run till address  运行到地址   

GE  Run and pass exception  运行和通过例外   

SI  Step into  步入    SO  Step over  步过   

TI  Trace in till address  跟踪进入直到地址   

TO  Trace over till address  跟踪步过直到地址   

TC  Trace in till condition  跟踪进入直到条件   

TOC  Trace over till condition  跟踪步过直到条件   

TR  Till return  直到返回   

TU  Till user code  直到用户代码   

LOG  View Log window  查看记录窗口   

MOD  View Modules window  查看模块窗口   

MEM  View Memory window  查看内存窗口  

CPU  View CPU window  查看 CPU窗口   

CS  View Call Stack  查看 Call堆栈   

BRK  View Breakpoints window  查看断点窗口   

OPT  Open Options  打开选项   

EXIT / QUIT  Quit OllyDbg  退出 OllyDbg   

OPEN  Open executable file  打开可执行文件   

CLOSE  Close executable  关闭程序   

RST  Restart current program  恢复当前程序   

HELP  Help on API function  API函数的帮助   

ASM  Assemble (if command needs it's own addres, \"ASM COMMAND;ADDRESS\")  汇编 (如果命令需要自身的地址 \"ASM COMMAND;ADDRESS\")   

DASM  Disassemble immediate opcode  反汇编直接的机器码   

FR  Find reference to selected command/address  查找参考到选定的命令/地址   

AC  Analyse code  分析代码   

SN  Search for Name(label) in current module  在当前模块中搜索名称(标号)   

SOB  Scan object files  扫描项目文件

22)      

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值