OllyDbg的基本使用
注:内容整理自《逆向工程核心原理》,结合我的OllyDbg版本修改了一些内容
1. OllyDbg常用命令及其快捷键
指令 | 快捷键 | 含义 |
Restart | Ctrl+F2 | 重新开始调试 |
Step Into | F7 | 执行一句OP code,若遇到CALL,进入函数代码内部 |
Step Over | F8 | 执行一句OP code,若遇到CALL,仅执行函数自身,不跟随进入 |
Run | F9 | 运行(遇到断点时暂停) |
Execute till return | Ctrl+F9 | 执行函数代码内的命令,直到遇到RETN命令,用于跳出函数体 |
Execute till cursor | F4 | 执行到光标所在位置 |
Comment | ; | 添加注释 |
User-defined comment | 鼠标右键菜单Search for-User defined comment | 查看用户输入的注释目录 |
Label | : | 添加标签 |
User-defined label | 鼠标右键菜单Search for-User defined Label | 查看用户输入的标签目录 |
Breakpoint | F2 | 设置或取消断点 |
All referenced text strings | 鼠标右键菜单Search for-All referenced text strings | 查看代码中引用的字符串 |
All intermodular calls | 鼠标右键菜单Search for-All intermodular calls | 查看代码中调用的所有API函数 |
Name in all modules | 鼠标右键菜单Search for-Name in all modules | 查看所有API函数 |
Edit data | Ctrl+E | 编辑数据 |
Assemble | 空格键 | 编写汇编代码 |
Copy to executable file | 鼠标右键菜单Copy to executable file | 创建文本副本(修改的项目被保留) |
2. 设置点的方法(这里我们假设大本营的地址为004010ED)
①Goto命令
执行Goto命令(Ctrl+G),在打开的对话框中输入004010ED,然后单击OK按钮,这样光标就会自动定位到004010ED处
然后执行Execute till cursor(F4)命令,让调试流运行到该处
②设置断点
选中004010ED这一行(可以手动找,也可以使用上述Goto命令中的第一步),设置BreakPoint(F2),调试运行到断点处会暂停
然后执行Run debugged application(F9)即可让调试直接运行到断点处暂停
注:在OllyDbg菜单栏中选择View-Breakpoints(Alt+B),可以打开Breakpoints对话框,列出代码中设置的断点。在断点列表中双击某个断点会直接跳转到相应位置
③使用注释
选中004010ED这一行(可以手动找,也可以使用上述Goto命令中的第一步),按;键添加注释
在鼠标右键菜单中选择Search for-User defined comment,就能看到用户输入的所有注释,双击相应注释,光标将自动定位到相应位置
然后执行Execute till cursor(F4)命令,让调试流运行到该处
④使用标签
选中004010ED这一行(可以手动找,也可以使用上述Goto命令中的第一步),按:键为其添加标签
在鼠标右键菜单中选择Search for-User defined labels,就能看到用户设置的所有标签,双击相应标签,光标将自动定位到相应位置
然后执行Execute till cursor(F4)命令,让调试流运行到该处
3. 快速查找指定代码的方法
①代码执行法
当代码量不大且程序功能非常明确时,逐条执行指令来查找需要查找的位置。
具体方法为结合使用F8和F7
②字符串检索法
OllyDbg会先经历一个预分析过程,此过程中会查看进程内存,程序中引用的字符串和调用的API都会被摘录出来,整理到另外一个列表中,这样的列表可以使用鼠标右键菜单Search for-All referenced strings来查看
地址00401007处有一条PUSH OFFSET 00411AF0指令,该指令中引用的00411AF0处即是字符串Hello World!,双击字符串,光标将定位到00401007这一位置
使用Goto命令查看00411AF0地址处的字符串:
即是Hello World!这个字符串
③API检索法——在调用代码中设置断点
OllyDbg的预分析中不仅可以分析出程序中使用的字符串,还可以摘录出程序运行时调用的API函数列表,可以通过鼠标右键菜单中Search for-Intermodular calls来查看该列表
双击其中的任意一行可以定位到该处所对应的代码位置,使用F2下断点即可。
④API检索法——在API代码中设置断点
我们编写的应用程序执行某种操作时(如各种IO操作),必须使用OS提供的API向OS提出请求,然后与被调用API对应的系统DLL文件就会被加载到应用程序的进程内存。使用OllyDbg中的Search for-Names可以列出被加载的DLL文件中提供的所有API
单击Name栏目按名称排序,通过键盘敲出MessageBoxW后,光标会自动定位到MessageBoxW上,双击之后就会显示其代码???(我这里好像不太行,此处存疑)
在MessageBoxW函数的内部实现中的起始地址按下F2下断点,调试时程序运行到该处就会暂停。
4. 修改字符串的方法
①直接修改字符串缓冲区
首先找到Hello World!字符串所在的位置(我这里是00411AF0),在Dump窗口中按Ctrl+G,跳转到这一位置,使用鼠标选中Hello World这一字符串,按Ctrl+E快捷键打开编辑窗口
在弹出的编辑窗口的UNICODE文本框中输入Hello Reversing字符串,Unicode字符串必须以NULL结束,它占据两个字节(00 00),添加NULL只能在HEX文本框中添加,修改完毕之后点击OK即可
这种方法的优点是使用起来非常简单,缺点是对新字符串的长度有限制,新字符串的长度不应比原字符串长(虽然可执行文件保存时一般会给字符串多留出一些空间)
注意:这种修改方式只是暂时的,终止调试后,程序中的字符串仍然没有改变。要把这种更改保存下来,就要把更改后的程序另保存为一个可执行文件。
方法如下:在Dump窗口中,选中更改后的Hello Reversing字符串,单击鼠标右键Edit-Copy to Executable,会打开Hex窗口,在弹出的Hex窗口中点击鼠标右键,选择Save file,保存为新的可执行文件即可。
②在其他内存区域新建字符串并传递给消息函数
待补充
OllyDbg的基本使用的更多相关文章
- OllyDBG 1.10
OllyDBG 1.10 OllyDBG.exeOllyDBG SoftICE文件->打开 (快捷键是 F3)F2 断点 F9F8 步过 F10F7 步入 F8F4 运行到位置 F7F9 运行 ...
- RockWare RockWorks的Ollydbg调试过程及注册机(破解)思路
最近拿到了RockWorks15的安装包,可惜没有破解,试用也只能用14天.用PEiD工具察看了一下,Delphi编写的程序,竟然没加壳.本想用OllyDBG调试进去爆破一下,不意发现注册码很简单,如 ...
- ollydbg z
通达信l2密码器方法: 1:使用Ollydbg,点文件,打开,选择通达信的可执行文件(或者把通达信的执行文件直接拖进Ollydbg的窗口),按F9运行程序. 2:正常使用通达信,进入到K线图后,在k线 ...
- 【原创】OllyDBG 入门系列(一)-认识OllyDBG
****** http://blog.fishc.com/645.html 标 题: [原创]OllyDBG 入门系列(一)-认识OllyDBG作 者: CCDebuger时 间: 2006-0 ...
- Ollydbg 中断方法浅探
Ollydbg是一个新的32位的汇编层调试软件.适应于windows98.me.2000.xp和2003操作系统.由于他具有图形窗口界面,所以操作方便.直观,是cracker的好工具. 由于Ollyd ...
- OllyDbg 使用笔记 (二)
OllyDbg 使用笔记 (二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 TraceMe.exe下载地址:http://pan.baidu.com/s/1c0s2twO T ...
- 反汇编动态追踪工具Ollydbg. ALD,ddd,dbg,edb...
Ollydbg 通常称作OD,是反汇编工作的常用工具,吾爱破解OD附带了118脱壳脚本和各种插件,功能非常强大,基本上不需要再附加安装其它插件了. 对OD的窗口签名进行了更改,从而避免被针对性检测 修 ...
- OllyDbg 使用注意事项 (十)
OllyDbg 用笔记 (十) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1kT1ce83 这个程序能够从 ...
- OllyDBG V1.10聆风听雨汉化版
软件名称:OllyDBG V1.10聆风听雨汉化版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 3.84MB 图片预览: 软件简介: Ollydbg2. ...
- 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用
32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX 可以这样想,16位通 ...
随机推荐
- wireshark 抓包
Wireshark(前称Ethereal)是一个网络数据包分析软件.网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据.Wireshark使用WinPCAP作为接口,直接 ...
- DB2 Check Pending Script
转载 http://www.zinox.com/archives/144 Thanks to Max Petrenko of DB2 Toronto Lab for sharing a very us ...
- Java调用C函数
一.关于JNI JNI( Java Native Interface )主要是实现Java和C/C++语言之间的通信. Java通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOW ...
- javascript中操作元素属性
1. setAttribute():设置属性的值: getAttribute():得到属性的值: removeAttribute():移除属性: 2.offsetWidth:offsetWidth = ...
- Chapter 7. Packages
Chapter 7. Packages The hierarchical naming structure for packages is intended to be convenient for ...
- np.random.random()函数 参数用法以及numpy.random系列函数大全
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.r ...
- python实例:快速找出多个字典中的公共键
1.生成随机字典 # 从abcdefg 中随机取出 3-6个,作为key, 1-4 的随机数作为 value s1 = {x : randint(1, 4) for x in sample('abcd ...
- vs2015 点击cshtml 后提示 "无效指针" 的解决办法
1. 关闭vs 2. 删除 %LocalAppData%\Microsoft\VisualStudio\14.0\ComponentModelCache 3. 打开vs OK 解决
- Jquery 搜索框自动提示
为文本框增加自动提示下拉功能,比如输入 1,则从后台数据库查询出包含1 的字段,在文本框增加下拉列表供用户选择 ajax 返回数据为搜索查询字段的json集合 <script src=" ...
- 将字符串 “ hello word,你 好 世 界 ! ” 两端空格去掉并且将其中的其他所有空格替换成一个空格 输出结果为“hello word,你 好 世界”
string str = " hello word,你 好 世 界 ! "; string msg = str.Trim(); //去掉首尾空格 //使用split分割字符串,st ...