今天我对Ollydbg进行了学习。虽然我以前用过,但还是对这个软件再进行了一下理论层次的学习,方便自己更深刻的理解。
1:主界面
主要有:反汇编窗口;信息窗口;数据窗口;寄存器窗口;堆栈窗口;命令行
数据寄存器:EAX EBX ECX EDX
指针及变址寄存器:ESP EBP ESI EDI
段寄存器:CS DS SS ES
控制寄存器中的程序状态字寄存器:CF PF AF ZF SF
其中应用最广泛的就是数据寄存器和指针及变址寄存器,像输入的用户名、机器码等信息一般都会放在这些寄存器当中。
堆栈窗口主要显示堆栈的内容,也就是EBP和ESP所指向的内容。API函数或者子程序等都会利用它来传递参数、变量等信息。
2:反汇编操作
ctrl+n:在弹出的对话框中会显示程序调用的外部模块和函数,也就是程序的引入表。ctrl+g:在弹出的对话框中输入虚拟地址,就可以跳到该地址初。
;可以对当前代码行添加注释
:可以对当前代码行添加标签
ctrl+e:以16进制修改汇编代码
space:在反汇编窗口输入空格,可以对当前代码行进行汇编编辑。方便修改指令。
在寄存器窗口双击寄存器,可以修改寄存器的值;双击程序状态字寄存器,可以修改值;
3:断点操作
断点可分为:
一般断点:F2键或者通过bp命令在命令行中下断点
内存断点:又可分成内存访问断点和内存写入断点。ollydbg每一时刻只允许有一个内存断点。
硬件断点:下中断的方法和内存断点的方法相同,有三种方式:HR(硬件访问)HW(硬件写入)HE(硬件执行)
只要在命令行输入:brk或者按alt+b组合键,打开断点窗口,把不需要的断点删除掉。
4:动态调试操作
F9:运行程序
F7:单步跟踪。与call跟入
F8:单步跟踪。与call不会跟入
F4:程序执行到所选代码。
ctrl+F9键:执行到返回语句。
alt+F9:执行到程序领空