OD(OllyDbg)使用教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应的快捷键是F2键;
• 反汇编列:调用汇编器,可直接修改汇编
代码;
• 注释列:允许增加或编辑注释,对应快捷
键是“;“键
实用文档
调试中我们经常要用到的快捷键有这些:
F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即 可,再按一次F2键则会删除断点
F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令, 遇到 CALL 等子程序不进入其代码
方法:将光标移动到要设断点的行,按F2键就可以设置 了, 也可以双击Hex数据列
目的:可以让软件运行的时候停在设断点的地方,以方便 反复跟踪调试
当关闭程序时,OllyDbg会将设置好的断点保存在UDD文件 中,下次运行时还有效。
实用文档
5、调试分析:
调试分析其实就是分析程序代码的意义,如图:
阅读这些代码时,首先要搞清楚各API函数的定义,还弄明 白那些汇编程序代码的具体含义
注意:这里又回到TraceMe的领空了
我们可以按Alt+B调出断点窗口,然后将GetDlgItemTextA的断点改为已禁止
实用文档
接下来就在004011AE下一个断点,因为这里有调用到 GetDlgItemTextA这个函数
然后就要开始分析这些汇编代码的意义,所以,我们在使 用这个软件的时候,一定要明白这些代码的含义,现在我 们只是先认识一下这个软件的作用,所以就不为大家做出 分析,接下来就是修改代码了。其实我们要是分析下来, 可以发现,其实问题就在于一个代码行--004011F5
工具介绍 OllyDbg调试
实用文档
什么是OllyDbg?
OllyDbg简称OD,是一款具有可视化界面的用户模式调试器,结合了动态 调试和静态分析,具有强大的反汇编引擎,能够识别数千个被C和Windows 所使用的函数,并能将其参数注释出,能自动分析函数过程、循环语句、 代码中的字符串等。
实用文档
实用文档
注意:此时的领空是模块USER32,领空就是在
某一时刻,CPU的CS:EIP所指向代码的所有者
领空
接着,在USER32的领空中,在77D6B05E代码行按下F2,下断 点,然后按F9运行,然后键入下图所示:
实用文档
点check,可以看到程序被OD截停在下断点的地方,如图所示: 接着,按Alt+F9,返回到用户代码,可以回到:
显示被调试程序的反汇编代 码
显示反汇编窗口中选中的第一 个命令的参数及一些跳转目标
地址、字串等
显示当前所选线程 的 CPU 寄存器内容。
显示内存或文件的 内容。
显示当前线程的堆栈
实用文档
反汇编窗口的列中,双击的效果:
• 地址列:显示相对被单击地址的地址,再
次
双击返回到标准地址模式;
• Hex数据列:设置或取消无条件断点,对
实用文档
6、保存修改后的文件
图中红色的就是我们修改的地方,然后就点右键,复制到 文件,就可以保存当前的实修用文改档
我们现在来举个简答你的例子
破解TraceMe的注册码 操作步骤如图:
实用文档
首先当然要载入TraceMe,载入之后就会出现如下窗口
文件入口点
然后我们要找到GetDlgItemTextA函数,因为程序从文本框 中将内容读取出来,需要用到这个函数。我们就用Ctrl+G 打开跟随表达式的窗口,在里面输入函数名就可以跟踪到 函数名存在的地方
实用文档
上面是我的总结,大家可以大致的了解一下,有什 么不清楚的地方,可以过来跟我交流。共享的文件 里面还有教程,大家可以根据里面的教程,做更深 入的学习。还有很多汇编代码的含义没有介绍,共 享文件里面有完备的代码解释,可以好好看看,参 考参考。
实用文档
2、加载目标文件调试
运行OllyDbg后,打开选项/调试设置
程序运行之后,在系统 空间里会触发一个INT3
文件入口点
程序的Winmain()函数入口点, 但一般都是在文件入口点
实用文档
设置完成之后,载入文件,出现如图所示:
虚拟地址
机器码:
CPU执行的机器 代码
实用文档
汇编指令: 和机器码对应的
实用文档
修改这一反汇编代码段,双击反汇编列后者按空格键, 键入NOP,点汇编
最后 F9运行,你会看到:
实用文档
下面就介绍一些分析常用的汇编代码含义:
MOV 传送字或字节 如MOV A B,就是将B中的字传给A PUSH 把字压入堆栈 CALL 子程序调用指令 XOR 异或运算 所谓异或,就是两值不同,则为真,反之,为假 RET 子程序返回指令 CMP 比较.(两操作数作减法,仅修改标志位,不回送结果) JNZ(或jNE) OPR --------------结果不为零转移,测试条件ZF=0 DEC 减 1 INC 加 1 JZ(或jE) OPR---------------结果为零转移, 测试条件ZF=1 SUB 减法 LEA 装入有效地址 例: LEA DX,string ;把偏移地址存到DX. MOVSX 先符号扩展,再传送 REP 当CX/ECX0时重复 AND 与运算 TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果)
F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程 序时会进入其中,进入后首先会停留在子程序的第一条指令上
F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停
F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序 将直接开始运行
CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时 暂停,常用于从系统领空返回到我们调试的程序领空
ALT+F9:执行到用户代码。可用于实从用系文档统领空快速返回到我们调试 的程序领空
如何加载程序?
•
点击菜单 文件->打开 (快捷键是 F3)来
打开一个可执行文件进行调试
• 点击菜单 文件->附加 来附加一个已运行的 进程上进行调试。注意这里要附加的程序必须已 运行。
实用文档
基本操作:
1、准备工作 我们以Traceme这个软件为例,了解Traceme序列号的验证流程
程序代码
Leabharlann Baidu
3、单步跟踪
调试器一个最基本功能就是动态跟踪,OllyDbg单步跟踪功能键:
F7与F8的区别:在遇到CALL时,F8会直接跳过,而F7就跟进去
实用文档
4、设置断点
断点是调试器的一个重要功能,它能使程序中断在需要的 地方,从而方便对其分析,常用的断点是INT3,其原理是 OllyDbg将断点处的代码设置为int3指令。