代码高亮:OllyDbg的反汇编器可以高亮不同类型的指令(如:跳转、条件跳转、入栈、出栈、调用、返回、特殊的或是无效的指令)和不同的操作数(常规[general]、FPU/SSE、段/系统寄存器、在栈或内存中的操作数,常量)。你可以定制个性化高亮方案。
线程:OllyDbg可以调试多线程程序。因此你可以在多个线程之间转换,挂起、恢复、终止线程或是改变线程优先级。并且线程窗口将会显示每个线程的错误(就像调用 GETLASTERROR 返回一样)。
分析:OllyDbg 的最大特点之一就是分析。它会分析函数过程、循环语句、选择语句、表[tables]、常量、代码中的字符串、欺骗性指令[tricky constructs]、API调用、函数中参数的数目,import表等等。这些分析增加了二进制代码的可读性,减少了出错的可能性,使得我们的调试工作更加容易。
Object扫描:OllyDbg 可以扫描Object文件/库(包括 OMF 和 COFF 式),解压代码段[code segments]并且对其位置进行定向。
Implib扫描: 由于一些DLL文件的输出函数使用的索引号,对于人来说,这些索引号没有实际含义。如果你有与DLL相应的输入库[importlibrary],OllyDbg 就可以将序号转换成符号名称。
完全支持Unicode: 几乎所有支持 ASCII 的操作同时也支持 UNICODE,反之亦然。
名称:OllyDbg可以根据 Borland 和 Microsoft 式的调试信息,显示输入/输出符号及名称。Object扫描器可以识别库函数。其中的名称和注释你可任意添加。如果DLL中的某些函数是通过索引号输出的,则你可通过挂接输入库[import library]来恢复原来的函数名称。不仅如此,OllyDbg还能识别大量的常量符号名(如:窗口消息、错误代码、位域[bit fields]…)并能够解码为已知的函数调用。
已知函数:OllyDbg 可以识别 2300 多个 C 和 Windows API 中的常用函数及其使用的参数。你可以添加描述信息、预定义解码。你还可以在已知函数设定 Log 断点并可以对参数进行记录。
函数调用:OllyDbg可以在没有调试信息或函数过程使用非标准的开始部分[prolog]和结尾部分[epilog]的情况下,对递归调用进行回溯。
译者注:
004010D0 pushebp \
004010D1 movebp,esp |
004010D3 subesp,10h |>prolog
004010D6 pushebx |
004010D7 pushesi |
004010D8 pushedi /
……
004010C5 pop edi \
004010C6 popesi |
004010C7 popebx |>epilog
004010C8 movesp,ebp |
004010CA popebp |
004010CB ret /
栈:在栈窗口中,OllyDbg 能智能识别返回地址和栈框架[Stack Frames]。并会留下一些先前的调用。如果程序停在已知函数上,堆栈窗口将会对其参数进行分析解码。
译者注:栈框架[Stack Frames]是指一个内存区域,用于存放函数参数和局部变量。
SEH 链: 跟踪栈并显示结构化异常句柄链。全部链会显示在一个单独的窗口中。
搜索:方法真是太多了!可精确、模糊搜索命令或命令序列,搜索常数,搜索二进制、文本字符串,搜索全部命令地址,搜索全部常量或地址域[address range],搜索所有能跳到选定地址的跳转,搜索所有调用和被调用的函数,搜索所有参考字符串,在不同模块中搜索所有调用、搜索函数名称,在全部已分配的内存中搜索二进制序列。如果搜索到多个结果,你可以对其进行快速操作。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-41789-3.html
如果是漏过气的到是很正常