销售部网站建设费百度的特点和优势
本文通过吾爱破解论坛上提供的OllyDbg版本为例,讲解该软件的使用方法
F2 | 对鼠标所处的位置打下断点,一般表现为鼠标所属地址位置背景变红 |
F3 | 加载一个可执行程序,进行调试分析,表现为弹出打开文件框 |
F4 | 执行程序到光标处 |
F5 | 缩小还原当前窗口,表现为所有打开的窗口都进行缩小 |
F7 | 单步步入,进入函数实现内,进步到CALL地址处 |
F8 | 单步步过,越过函数实现 |
F9 | 直接运行程序,遇到断点处暂停 |
Ctrl+F2 | 重新运行程序到起始处,用于重新调试程序 |
Ctrl+F9 | 执行到函数返回处 |
Alt+F9 | 执行到用户代码处,用于快速跳出系统函数(不好用) |
Ctrl+G | 输入十六进制地址,在反汇编或数据窗口中快速定位到该地址处 |
修改数据
找到要修改数据的地址所对应的HEX数据,双击该数据,弹出对应的编辑数据对话框,去掉对"保持大小"的勾选,可向后修改数据。由于C\C++中字符串以00结尾,需要将字符串最末尾的数据修改为00。选择十六进制编码文本框,在最末尾处插入00。单击“确定”按钮。
字串参考
顾名思义,就是在程序中搜索特定的字符串或者编码,对于定位操作有很大的作用
一般操作是:
鼠标右键->search for(查找)->all referenced text string(所有参考文本字串)出现以下界面
可以同过右键点击->查找查找字符串,也可以双击直接跳转到目标位置
为了看看是否还有其他的参考,可以通过右键选择查找参考(find reference to)->立即数:
OllyDbg 显示程序的某些部分时是 不正确的,错误的将可执行代码解释为数据.这种情况,你可以在反汇编窗口中右击选择 Analysis(分析) -> Remove analysis from module(从模块中删除分析) 手动删除分析结果
高亮显示 jumps 和 calls ,你使用它可能会更为方便但我个人不 喜欢(这会有不 同的体验),右键点击,选择 选项->界面选项->代码高亮

L 图标或 View-> Log,显示日志窗口, 通过配置,可以显示 OllyDbg 启动时保存在日志窗口 的不同类型信息,也涉及条件断点的信息。如果需要将日志进行导出,则右键->记录到文件
E 按钮 View ->Executables 显示程序 运行使用的模块:exe,,dll,,ocx 和 其它。
M 按钮或 View->Memory 显示我们的程 序映射到内存的信息,一个内存块可能 被分为几个部 分
右键点击可以搜索不同种类的字符串, 可以在访问上设置中断

T 按钮或 View->Threads 显示程序的线程窗口

W 按钮或 View-> Windows 显示程序窗口
H 按钮或 View-> Handles,句柄窗口
C 按钮或 View->CPU,允许我们返回到 O llyDbg 的主窗口,CPU 窗口。
P按钮或 View->Patches,如果程序经过 了修改,这里显示修改的信息,现在我们的程序还没
有被修改过,所以为空白。

K 按钮或 View->Call stack 显示调用堆 栈的窗口信息,可以尝试反向跟踪函数的
调用顺序。

B 按钮或 View->Breakpoints 显示程序 普通断点的列表窗口,这里不显示硬件 断点和内存断点。
R 按钮或 View->Reference 参考窗口, 显示我们在 OllyDbg 中搜索的结果。
“...”按钮或 View->Run trace 显示 RUN TRACE(RUN 跟踪)命令的结果。
寄存器
显示有 EAX,ECX,,EDX,,EBX , ESP, EBP,,ESI,,EDI 和 EIP 等 它们都被称为 32 位寄存器。 在 OllyDbg 中,它们的内容以十六进制 显示。例如,EAX 的最小值为 00000000 ,最大值为 FFFFFFFF,用二进制表示将 是 11111111111111111111111111111111 。
ESP 指向堆栈最顶端的地址我们看到寄存器显示了在我们的堆栈最上 方的值,打个比方,它就是一堆信件最上 方的那一 封。
EIP – 另一个非常重要的寄存器,它指 向当前将要执行的指令如果你按下 F7,那么将执行第一条指令,然后切到第二条将执行的指令。

同样我们可以对寄存器的值进行修改,选中对应的寄存器->修改 即可
如果你要用到 EAX 寄存器的一部分,AX 是 EAX 的一部分,是 16 位寄存器,我们在 CommandBar 中 进行输入也可以看到。 ? AX(问号也可用于查询寄存器的值)
OllyDbg 可以更改寄存 器的值。我们在 EAX 上进行的一切操作同样适用于 其它寄存器:检查寄存器, 看哪一个是你想要更改的,然后右键点击 它选择 Modify。但 EIP 是唯一一个例外 的,它指向下一条将要执行的指令。 要改变头的值,需要如下操作。 EIP 指向将要执行的指令,只需简单的在 反汇编窗口中选择新的指令起始点一旦选择,例如 40101A,在其上点击鼠标右键,选择 New origin here(汉化版翻译为:处为新的 EIP),EIP 就会改变为 40101A,这样,程序就将会从这条指令执行。

在 OllyDbg 寄存器信息的下方显示的就是标志寄存器我们看到,这里的标志分为 C,P,A,Z
,S,T,D 和 O。 我们还看到,它们只能是两个数字值,0 和 1。某一具体指
令的执行可以改变它们的含义。 我们一起来看看这些标志:
1) O 标志(溢出标志)溢出标志在当操作改变了符号位,返回错误值时被设置
该标志的目的:当 指令的结果超出了它可能存取的最大值 ,将被设置
2) A 标志(辅助进位标志) 完成操作后,用其它的某种形式对其进行记录。
3) P 标志(奇偶标志) 如果指令的结果用二进制表示,该二进 制数中的的 1 的总个数为偶数时,P 标志被设置
4) Z 标志(零标志) 这是在 Cracking 过程中最著名最有用的 一个标志。当运算产生的结果为 0 时被设置。
5) S 标志(符号标志)这个标志在运算结果为负时设置为 1。
6) C 标志进位标志(无符号运算的结果)在超过最大数值时 设置,可能是寄存器的值
未完待续