五
![](/icons/1253dou.gif)
Object扫描器〔Object scanner〕
扫描器将特定
![](/icons/1253de.gif)
目标文件或者目标库(包括OMF和COFF两种格式)
![](/icons/1253dou.gif)
提取出代码段
![](/icons/1253dou.gif)
然后将这些段定位在当前模块
![](/icons/1253de.gif)
代码节〔Code section〕中.如果段定位好了,扫描器将从目标文件中
![](/icons/1253de.gif)
调试信息提取名称(也就是所谓
![](/icons/1253de.gif)
库标签〔library labels〕)
![](/icons/1253dou2.gif)
这极大
![](/icons/1253de.gif)
增加了代码与数据
![](/icons/1253de.gif)
可读性.
扫描器并不会对已识别
![](/icons/1253de.gif)
目标文件进行标签匹配
![](/icons/1253dou.gif)
所以它不能识别非常小或相似
![](/icons/1253de.gif)
![](/icons/1253hanshu.gif)
(比如:两个
![](/icons/1253hanshu.gif)
只是在重定位有区别)
![](/icons/1253dou2.gif)
因此要经常检查扫描器发送到登陆窗口
![](/icons/1253de.gif)
警告列表!
六
![](/icons/1253dou.gif)
Implib扫描器 〔Implib scanner〕
某些DLL
![](/icons/1253de.gif)
输出符号仅仅是
![](/icons/1253yi.gif)
个序号
![](/icons/1253dou2.gif)
许多符号都是井号加数字(比如:MFC42.#1003)
![](/icons/1253dou.gif)
这非常不便于理解
![](/icons/1253dou2.gif)
幸运
![](/icons/1253de.gif)
是
![](/icons/1253dou.gif)
软件零售商提供了输入连接库(implibs)
![](/icons/1253dou.gif)
它与序号符号名相关
![](/icons/1253dou2.gif)
使用implib扫描器
![](/icons/1253de.gif)
方法:从主菜单中选择调试〔Debug〕|选择输入链接库〔Select import libraries〕
![](/icons/1253dou2.gif)
当您加载应用
![](/icons/1253chengxu.gif)
时
![](/icons/1253dou.gif)
OllyDbg会读取链接库并从内置表格〔
![](/icons/1253int.gif)
ernal tables〕中提取符号名
![](/icons/1253dou2.gif)
每次遇到序号符号
![](/icons/1253dou.gif)
而对应
![](/icons/1253de.gif)
链接库已经注册到OllyDbg中时
![](/icons/1253dou.gif)
这个序号符号会被替换
![](/icons/1253dou2.gif)
七
![](/icons/1253dou.gif)
如何开始调试〔How to start debugging session〕
最简单
![](/icons/1253de.gif)
方法是:运行 OllyDbg
![](/icons/1253dou.gif)
点击菜单上
![](/icons/1253de.gif)
文件〔File〕|打开〔Open〕
![](/icons/1253dou.gif)
选择您想调试
![](/icons/1253de.gif)
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
如果
![](/icons/1253chengxu.gif)
需要命令行参数
![](/icons/1253dou.gif)
您可以在对话框底部
![](/icons/1253de.gif)
输入栏中
![](/icons/1253dou.gif)
输入参数或者选择以前调试时输入过
![](/icons/1253de.gif)
![](/icons/1253yi.gif)
条参数
![](/icons/1253dou2.gif)
OllyDbg 能够调试独立
![](/icons/1253de.gif)
DLL〔stand-alone DLLs〕
![](/icons/1253dou2.gif)
在这种情况下
![](/icons/1253dou.gif)
OllyDbg 会创建并运行
![](/icons/1253yi.gif)
个小
![](/icons/1253de.gif)
应用
![](/icons/1253chengxu.gif)
来加载链接库并根据您
![](/icons/1253de.gif)
需要
![](/icons/1253diaoyong.gif)
输出
![](/icons/1253hanshu.gif)
![](/icons/1253dou2.gif)
如果您想重新启动上
![](/icons/1253yi.gif)
次调试
![](/icons/1253de.gif)
![](/icons/1253chengxu.gif)
![](/icons/1253dou.gif)
只要按
![](/icons/1253yi.gif)
下 Ctrl+F2(这是重启
![](/icons/1253chengxu.gif)
![](/icons/1253de.gif)
快捷键)
![](/icons/1253dou.gif)
这样 OllyDbg 会以同样
![](/icons/1253de.gif)
参数运行这个
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
另
![](/icons/1253yi.gif)
种做法是在菜单中选择文件〔File〕
![](/icons/1253dou.gif)
从历史列表中选择
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
您也可以在 Windows 资源管理器中将可执行文件或 DLL 文件拖拽到 OllyDbg 中
![](/icons/1253dou2.gif)
当然
![](/icons/1253dou.gif)
您可以在 OllyDbg 启动时
![](/icons/1253dou.gif)
运行指定带有运行参数
![](/icons/1253de.gif)
被调试
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
例如:您可以在桌面创建
![](/icons/1253yi.gif)
个 OllyDbg
![](/icons/1253de.gif)
快捷方式
![](/icons/1253dou.gif)
右击并选择“属性”
![](/icons/1253dou.gif)
在“快捷方式”中
![](/icons/1253de.gif)
“目标”中添加调试
![](/icons/1253de.gif)
![](/icons/1253chengxu.gif)
![](/icons/1253de.gif)
全路径
![](/icons/1253dou2.gif)
这样
![](/icons/1253dou.gif)
您每次双击快捷方式时
![](/icons/1253dou.gif)
OllyDbg 将自动运行被调试
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
注意:DLL文件不支持这种方式
![](/icons/1253dou2.gif)
您可以把正在运行
![](/icons/1253de.gif)
进程挂接到 OllyDbg 中
![](/icons/1253dou2.gif)
在菜单中打开文件〔File〕|挂接〔Attach〕
![](/icons/1253dou.gif)
从进程列表中选择要挂接
![](/icons/1253de.gif)
进程
![](/icons/1253dou2.gif)
注意:在您关闭 OllyDbg
![](/icons/1253de.gif)
同时
![](/icons/1253dou.gif)
这个进程也会被关闭
![](/icons/1253dou2.gif)
不要挂接系统进程
![](/icons/1253dou.gif)
否则可能会导致整个操作系统
![](/icons/1253de.gif)
崩溃
![](/icons/1253dou2.gif)
(事实上在大多数情况下
![](/icons/1253dou.gif)
操作系统禁止您挂接敏感进程)
![](/icons/1253dou2.gif)
OllyDbg 可以作为即时〔just-in-time〕调试器
![](/icons/1253dou2.gif)
这需要在系统注册表中注册
![](/icons/1253dou2.gif)
在菜单中选择选项〔Options〕|即时调试〔Just-in-time debugging〕 并在弹出
![](/icons/1253de.gif)
对话框中单击按钮“设置OllyDbg为即时调试器”〔Make OllyDbg just-in-time debugger〕
![](/icons/1253dou2.gif)
今后
![](/icons/1253dou.gif)
如果某个应用
![](/icons/1253chengxu.gif)
发生了非法操作
![](/icons/1253dou.gif)
系统将提示您是否用 OllyDbg 调试这个
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
操作系统会启动 OllyDbg 并直接停在发生异常
![](/icons/1253de.gif)
地方
![](/icons/1253dou2.gif)
如果您选择了“挂接时不询问”〔attaching without confirmation〕
![](/icons/1253dou.gif)
则在即时调试时OllyDbg不会弹出询问对话框
![](/icons/1253dou2.gif)
如果想恢复成以前
![](/icons/1253de.gif)
即时调试器〔Restore old just-in-time debuger〕
![](/icons/1253dou.gif)
按相应
![](/icons/1253de.gif)
按钮即可
![](/icons/1253dou2.gif)
另
![](/icons/1253yi.gif)
种方法是把 OllyDbg 添加到与可执行文件关联
![](/icons/1253de.gif)
快捷菜单中(这个想法是 Jochen Gerster 提出
![](/icons/1253de.gif)
)
![](/icons/1253dou2.gif)
在主菜单中
![](/icons/1253dou.gif)
选择选项〔Options〕|添加到资源管理器中〔Add to Explorer〕
![](/icons/1253dou2.gif)
以后您可以在所有
![](/icons/1253de.gif)
文件列表中
![](/icons/1253dou.gif)
右击可执行文件或DLL
![](/icons/1253dou.gif)
在快捷菜单中选择OllyDbg
![](/icons/1253dou2.gif)
这个功能会创建四个注册表键值:
HKEY_CLASSES_ROOT\exefile\shell\Open with OllyDbg
HKEY_CLASSES_ROOT\exefile\shell\Open with OllyDbg\command
HKEY_CLASSES_ROOT\dllfile\shell\Open with OllyDbg
HKEY_CLASSES_ROOT\dllfile\shell\Open with OllyDbg\command
OllyDbg能够调试控制台
![](/icons/1253chengxu.gif)
(基于文字
![](/icons/1253de.gif)
)
![](/icons/1253dou2.gif)
OllyDbg不能调试.NET应用
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
.NET
![](/icons/1253chengxu.gif)
是由微软
![](/icons/1253de.gif)
中间语言这种伪指令组成
![](/icons/1253de.gif)
![](/icons/1253dou.gif)
或是on-the-fly to native ?6 commands编译
![](/icons/1253de.gif)
![](/icons/1253dou2.gif)
注意:如果您运行
![](/icons/1253de.gif)
是Windows NT、2000 或XP操作系统
![](/icons/1253dou.gif)
您应该拥有管理员权限以便能够调试
![](/icons/1253chengxu.gif)
![](/icons/1253dou2.gif)
![](/icons/1253dou2.gif)
,
八
![](/icons/1253dou.gif)
CPU 窗口〔CPU window〕
对于用户来说
![](/icons/1253dou.gif)
CPU窗口在OllyDbg中是最重要
![](/icons/1253de.gif)
窗口
![](/icons/1253dou2.gif)
您调试自己
![](/icons/1253chengxu.gif)
![](/icons/1253de.gif)
绝大部分操作都要在这个窗口中进行
![](/icons/1253dou2.gif)
它包括以下五个面板(这五个面板
![](/icons/1253de.gif)
大小都是可以调节
![](/icons/1253de.gif)
):
反汇编〔Disassembler〕
信息〔Information〕
数据〔Dump〕
寄存器〔Registers〕
栈〔Stack〕
按TAB键
![](/icons/1253dou.gif)
可以切换到下
![](/icons/1253yi.gif)
个CPU面板中(顺时针方向)
![](/icons/1253dou2.gif)
按Sh
![](/icons/1253if.gif)
t+TAB
![](/icons/1253dou.gif)
可以切换到前
![](/icons/1253yi.gif)
个CPU面板(逆时针方向)
如果本文没有解决您的问题,请进老妖怪开发者社区提问