二进制串[binary string]
常量[constant]
命令[command]
命令序列[sequence of commands]
模块间调用[intermodular calls]
修改过的命令或数据[modified command or data]
自定义标签[user—defined label]
自定义注释[user—defined comment
文本字符串[text string]
Run跟踪的记录[recordin run trace]
参考命令[referencing commands]
十三、自解压文件[Self—extracting(SFX) files]
自解压文件由提取程序和压缩的原程序两部分组成。当遇到自解压文件(SFX)文件时,我们通常希望跳过解压部分,而直接跳到原始程序的入口(真正的入口)。
OllyDbg 包含了几个便于完成这一任务的功能。
通常提取程序的加载地址都在执行代码之外。在这种情况下,OllyDbg 将这类文件均视作为自解压文件(SFX)。
当自解压选项[SFX options]要求跟踪真正入口时,OllyDbg 在整个代码节[Code section]设置内存断点,最初这里是空的,或者只包含压缩数据。当程序试图执行某个在这个保护区域的命令,而这些命令不是RET和JMP时,OllyDbg 会报告真正的入口。这就是提取工作的原理。
上面的方法非常慢。有另外一种比较快的方法。每次读取数据发生异常时,OllyDbg 使这个4K内存区域变为可读,而使原先可读的区域变为无效。而每次发生写数据异常时,OllyDbg 使这个区域变为可写,而使原先可写的区域变为无效。当程序执行在保留的保护区域中的指令时,OllyDbg 报告真正的入口。但是,当真正的入口点在可读或可写区域内部时,报告的地址就可能有误。
你可以纠正入口位置,选择新的入口,从反汇编窗口的快捷菜单中选择“断点[Breakpoint]—>设置真正的自解压入口[Set real SFX entry here]”。如果相应的SFX选项是开启的,OllyDbg下次可以迅速而可靠的跳过自提取程序。
注意:OllyDbg 在跟踪采取了保护或者反调试技术的解压程序时通常会失败。
十四、单步执行与自动执行[Step—by—step execution and animation]
你可以通过按 F7(单步步入)或 F8(单步步过),对程序进行单步调试。这两个单步执行操作的主要区别在于:如果当前的命令是一个子函数,按F7,将会进入子函数,并停在子函数的第一条命令上;而按 F8,将会一次运行完这个子函数。如果你单步步过的子函数中含有断点或其他调试事件,执行将会被暂停,并且OllyDbg会在子函数的后一条命令上,自动下一个断点,而这个断点你迟早会碰到。
如果被调试程序停在异常上,你可以跳过它,并转到被调试程序建立的句柄处。只需简单的 Shift 键和任何一个单步命令。
如果需要连续按F7、F8键上百次,你可以使用自动执行(CtrlF7或者CtrlF8)功能。在这种情况下,OllyDbg 将自动重复F7或者F8操作,并且实时更新所有的窗口。这个过程会在下面情况停止:
—按 Esc 键或发出任何单步命令
—OllyDbg 遇到断点
—被调试程序发生异常
使用“”和“—”按键,可以回朔以前的执行历史[execution history]。
注意:当执行停止时OllyDbg将会刷新大部分窗口。如果动态执行过程非常慢,可以尝试关掉或最小化没有用的窗口。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-41789-18.html
强迫症
小编你是无知还是意淫