OllyDBG新手使用说明书(6)

2018-12-19 21:44

Ctrl+P - 显示补丁窗口。

Ctrl+T - 打开 暂停 Run跟踪 对话框 Alt+X - 关闭 OllyDbg。

大多数窗口都支持以下的键盘命令: Alt+F3 - 关闭当前窗口。 Ctrl+F4 - 关闭当前窗口。

F5 - 最大化当前窗口或将当前窗口大小改为正常化。 F6 - 切换到下一个窗口。

Shift+F6 - 切换到前一个窗口。

F10 - 打开与当前窗口或面板相关的快捷菜单。 左方向键 - 显示窗口左方一个字节宽度的内容。 Ctrl+左方向键 - 显示窗口左方一栏的内容。 右方向键 - 显示窗口右方一个字节宽度的内容 Ctrl+右方向键 - 显示窗口右方一栏的内容

反汇编窗口中的快捷键[Disassembler shortcuts]

当CPU窗口中的反汇编面板[Disassembler pane]处于激活状态时,您可以使用以下快捷键:

回车键 - 将选中的命令添加到命令历史[command history]中,如果当前命令是一个跳转、函数或者是转换表的一个部分,则进入到目的地址。

退格键 - 移除选中部分的自动分析信息。如果分析器将代码误识别为数据,这个快捷键就非常有用。请参考解码提示[decoding hints]。

Alt+退格键 - 撤消所选部分的修改,以备份数据的相应内容替换所选部分。仅当备份数据存在且与所选部分不同时可用。

Ctrl+F1 -如果API帮助文件已经选择,将打开与首个选择行内的符号名相关联的帮助主题。

F2 -在首个选择的命令上开关INT3 断点[Breakpoint],也可以双击该行第二列。

Shift+F2 -在首个选择命令设置条件断点,参见忽略Kernel32中内存访问异常[Ignore memory access violations in Kernel32]。 F4 -执行到所选行,在首个选择的命令上设置一次性断点,然后继续执行调试程序,直到OllyDbg捕获到异常或者停止在该断点上。在程序执行到该命令之前,该一次性断点一直有效。如有必要,可在断点窗口[Breakpoints window]中删除它。 Shift+F4 -设置记录断点(一种条件断点,当条件满足时一些表达式的值会记录下来), 详情参见断点[Breakpoint]。

Ctrl+F5 -打开与首个选择的命令相对应的源文件。 Alt+F7 -转到上一个找到的参考。 Alt+F8 -转到下一个找到参考。 Ctrl+A -分析当前模块的代码段。 Ctrl+B - 开始黑吧搜索。 Ctrl+C -复制所选内容到剪贴板。复制时会简单地按列宽截断不可见内容,如果希望排除不需要的列,可把这些列的宽度调整到最小。 Ctrl+E -以黑吧(十六进制)格式编辑所选内容。 Ctrl+F -开始命令搜索。

Ctrl+G -转到某地址。该命令将弹出输入地址或表达式的窗口。该命令不会修改 EIP。 Ctrl+J -列出所有的涉及到该位置的调用和跳转,在您用这个功能之前,您必须使用分析代码功能。

Ctrl+K - 查看与当前函数相关的调用树[Call tree]。在您用这个功能之前,您必须使用分析代码功能。

Ctrl+L - 搜索下一个,重复上一次的搜索内容。 Ctrl+N - 打开当前模块的名称(标签)列表。 Ctrl+O - 扫描object文件。扫描Object文件。该命令会显示扫描Object文件对话框,您可以在该对话框中选

择Object文件或者lib文件,并扫描这个文件,试图找到在实际代码段中用到的目标模块。 Ctrl+R -搜索所选命令的参考。该命令扫描激活模块的全部可执行代码,以找到涉及到首个选中的命令的全部相关参考(包括:常量、跳转及调用),您可以在参考中使用快捷键 Alt+F7 和 Alt+F8来浏览这些参考。为便于您使用,被参考的命令也包含在该列表中。 Ctrl+S -命令搜索。该命令显示命令查找[Find command]对话框供您输入汇编命令,并从当前命令开始搜索。

星号[Asterisk](*) -转到原始位置(激活线程的EIP处)。

Ctrl+星号(*) - 指定新的起始位置,设置当前所选线程的EIP为首个选择字节的地址。您可以在选择EIP并撤消该操作。 加号[Plus](+) -如果run跟踪[run trace] 没有激活,则根据命令历史[command history]跳到下一条运行过命令的地方;否则跳到Run跟踪的下一个记录。 Ctrl+加号 - 跳到前一个函数开始处。(注意只是跳到,并不执行)减号[Minus](-) - 如果run跟踪[run trace] 没有激活,则根据命令历史[command history]跳到前一条运行过命令的地方;否则跳到Run跟踪的前一个记录。 Ctrl+减号 - 跳到下一个函数开始处。(注意只是跳到,并不执行)

空格[Space] - 修改命令。您可在显示对话框中以汇编语言修改实际指令或输入新指令,这些指令将替换实际代码,您也可以在想要修改的指令处双击鼠标。 冒号[Colon](:) - 添加标签。显示添加标签窗口[Add label]或修改标签窗口[Change label],您可在此输入与首个选择的命令中的第一个字节相关联的标签(符号名)。注意,在多种编程语言中,冒号可以是标签的一部分。 分号[Semicolon]( - 添加注释[comment]。显示添加注释窗口[Add label]或修改注释窗口[Change label],您可在此输入与首条所选命令的第一个字节相关联的注释(注释串会显示在最后一列中)。注意,多种汇编语言使用分号作为注释开始。您也可以在注释列双击需要注释的命令行。 插件[Plugins]

插件是一个DLL,存放在OllyDbg的目录中,用于增加 OllyDbg 的功能。您可以从 OllyDbg 的主页上(http://home.t-online.de/home/Ollydbg)免费下载插件开发工具包plug110.zip。

插件可以设置断点,增加标签和注释,修改寄存器和内存。插件可以添加到主菜单和很多的窗口(比如反汇编窗口、内存窗口)的快捷菜单中,也可以拦截快捷键。插件还可以创建MDI(多文档界面)窗口。插件还可以根据模块信息和OllyDbg.ini文件,将自己数据写到.udd文件中;并能读取描述被调试程序的各

种数据结构。

插件API包含了多达170 个函数。

许多第三方插件都可以从Internet网上获得,比如由网友TBD创建并维护的OllyDbg的论坛

(http://ollydbg.win32asmcommunity.net)。 安装插件的方法:将DLL复制到插件目录[plugin directory]中,然后重新启动Ollydbg。默认情况下,这个插件目录为ollydbg.exe文件所在的目录。 现在的版本中已经包含了两个“原始”插件: 书签[Bookmark] and 命令行[Command line]. 他们的源代码都保存在plug110.zip.文件中。这些插件都是免费的,您可以任意修改或使用它们。

OLLYDBG完全教程(十五)

技巧提示[Tips and tricks]

1.OllyDbg 可以作为黑吧编辑器使用。选择视图[View]→文件[File]并选定需要查看的文件。文件不能大于剩余内存数量。

2.假使您修改了内存中的执行文件,这时您想恢复修改的部分,但是您忘记哪里被修改了,您可以把原始文件当作备份进行加载,这样您就可以找到修改的部分了。

分析前,先扫描 OBJ 文件。这时 OllyDbg 会对已知 C 函数的参数进行解码。 一些表格中包含了隐藏数据。可以通过增加列宽来显示出来。 所有数据窗口(包括反汇编窗口),可以通过双击显示相对的地址。 您可以通过 Ctrl +↑ 或 Ctrl+↓ 对数据窗口翻动一个字节。 调试独立的DLL[Debugging of stand-alone DLLs]

打开DLL,也可以直接将其从资源管理器拖放到 OllyDbg 上。OllyDbg 会询问您并将该文件的全路径作为参数

传递给loaddll.exe.。然后链接库被加载并停在代码的入口()。您可以设置断点,运行或跟踪启动代码,等等。在初始化完成后,应该程序会再次暂停。这次停在标签名为 Firstbp 的位置,其在立即进入主消息循环之前。

现在,您可以调用DLL函数。从主菜单选择“调试[Debug]|调用DLL输出[Call DLL export]”。这时会弹出一个对话框。由于这个对话框是无模式对话框,因此您仍然能够使用OllyDbg的全部功能,比如查看代码、数据,查看断点,修改内存等等。

选择您想调用的函数。例如我们将开始使用 USER32.DLL 里的MessageBox 函数。注意loaddll.exe 已经使用了这个链接库,因此会假定这个 DLL 已经初始化而不再调用入口。MessageBox 这个函数名是通用函数名,实事上,这个函数有处理 ASCII 的 MessageBoxA 和处理 Unicode 的MessageBoxW 两种。我们继续往下看:

screen.width * 0.7) { this.resized = true; this.width = screen.width * 0.7; this.alt = \

\击\在\新\窗\口\查\看\全\图\\nCTRL+\鼠\标\滚\轮\放\大\或\缩\小\} } \

\

在我们选择这个函数后,右边的消息框中会出现 Number of arguments: 4(有四个参数)的字样。OllyDbg会根据函数尾部的RET 10语句来正确识别参数的数量。RET nnn是使用PASCAL调用约定的函数的典型特征。(参数被放入栈中,第一个参数会被最后一个压入栈中,函数调用完毕后,参数会被遗弃)。大多数的 Windows API 函数都是PASCAL形式的。

下一步,我们要设定栈中参数的个数。在这个例子中,不必做进行这个操作,因为OllyDbg已经知道了MessageBoxW函数的参数数量。但是,如果您愿意的话,也可以单击左边的复选框,改变成您认为合适的参数数量。现在填写参数列表。这个对话框中支持至多10个参数. 参数可以是任何有效的表达式,而不必使用

寄存器。如果操作数指向了内存,则参数右边的缓冲区窗口会显示内存中的数据。Loaddll.exe 有10个大小为1K的缓冲区,这些缓冲区被标记为Arg1 .. Arg10,,您可以方便自由的使用它们。另外,对话框还支持两个伪变量:由loaddll.exe创建的父窗口句柄,以及loaddll的实例句柄。为了方便您的使用,在您第一次使用调用输出函数时,OllyDbg就已经将这两个伪变量加到了历史列表中去了。

MessageBoxW e函数需要4个参数:

1.父窗口句柄。 这里我们选择 ;handle of owner window. Here, we simply select ;

2.在消息框中UNICODE文本的地址。选择Arg2并按回车。缓冲区窗口会以16进制的格式显现内存中的缓冲区。这个缓冲区初始化全是0。点击第一个字节,并按快捷键Ctrl+E(另外, 也可以从菜单中选择“黑吧[Binary]|编辑[Edit]”)。这时会出现一个对话框,在对话框中键入“Text in box”或者其他希望显示的字符串;

3.消息框标题的UNICODE文本的地址。选择Arg3并在Unicode格式的内存中写上“Box title”;

4.消息框的风格。使用常量MB_xxx进行组合.OllyDbg 可以识别这些常量。在这里我们键入:MB_OK|MB_ICONEXCLAMATION。这里不需要寄存器参数。

现在我们准备调用输出函数。选项“在调用时隐藏[Hide on call]”意思是说,当函数运行时对话框将会从屏幕消失。当我们执行一个会运行很长时间的函数,或者设置了断点的时候,这个选项非常的有用。您也可以手动关闭对话框。当函数执行完毕后,OllyDbg会重新自动打开。“调用输出函数”对话框。选项“在调用后暂停[Pause after call]”意思是说,在执行完函数后,loaddll将会被暂停。

按“调用[Call]按钮”后,OllyDbg 会自动备份所有的内存、校验、参数、寄存器等信息。并隐藏对话框,然后调用 MessageBoxW 函数。和期望的一样,消息框在屏幕中出现了:

screen.width * 0.7) { this.resized = true; this.width = screen.width * 0.7; this.style.cursor =

\zoom in/out\

onload=\{ this.resized = true;

this.width = screen.width * 0.7; this.alt = \window\\nCTRL+Mouse wheel to zoom in/out\


OllyDBG新手使用说明书(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:声屏障施工技术交底

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: