1.这是什么
2.OllyDebugOD基本功能
3.pe文件简介
这是什么
远程用的
OllyDbg是一个位汇编级的直观的分析调试器。
它在源代码不可得或者你用编译器遇到问题的时候特别有用。
运行需要。工作在Windows ,,Me,NT或者,可能XP上(没有测试)。
运行于任何奔腾级别的rpm源码包下载电脑上,但是如果想要流畅的调试,你可能需要一个至少MHz的处理器。
Ollydbg是很耗内存的。如果你想要使用某些扩展特性比如追踪,我推荐或更多内存。
支持的处理器。OllyDbg支持所有x,奔腾,MMX,3Dnow!,包括Athlon扩展,和SSE指令以及相应数据格式。
但不支持SSE2. 可配置性。大约有个选项控制OllyDbg的行为和外观。
数据格式。
Dump窗口显示所有常规数据格式:
hex,ASCII,UNICODE,和位正/负/进制整数,//位浮点数,地址,反汇编(MASM或IDEAL),或作为注释的
PE部首或者线程数据块。
帮助。
这个文件包含理解和使用OllyDbg所需的重要信息。
如果你有Windows API帮助文件(因为考虑到版权的原因没有附带),你可以把它附加到OllyDbg一起,以便在系统调
用的时候获得立即帮助。
启动。
你可以以命令行,文件菜单,拖放的方式指定可执行文件,重启最后调试过的程序或者把它附加到正在运行的程序上
。OllyDbg支持实时调试。profile源码安装是不必要的,你可以从软盘上启动OllyDbg。
线程。
OllyDbg可以调试多线程应用程序。你可以从一个线程切换到另一个,挂起,恢复和中止线程或者改变他们的优先级。
线程窗口显示每一个线程的错误信息(通过调用GetLastError来返回)
分析。
分析器是OllyDbg重要的一部分。它识别过程,简单和级联转换器,表,嵌入代码中的常数和字符串,复杂的结构,
API函数调用,函数参数号,输入段等等。分析可以使二进制代码可读性增强,使调试变得容易以及减少错误中断和崩
溃的可能性。它不是面向编译器的,可以于任何的PE程序工作得一样好。
对象扫描器。
OllyDbg扫描对象文件或库(都是按OMF和COFF格式的),释放代码段并在被调试的程序中定位它们。
IMPLIB扫描器。
一些DLLS只按照序数输出它们的Symbols,这对于人的眼睛来说是没什么意义的。如果你有相应的输入库,OllyDBg能
把序数翻译回symbolic名称。
全UNICODE支持。
几乎所有对ASCII串可用的操作对于UNICODE串都是可用的,反之亦然。
名称。
OllyDbg显示所有输入和输出的symbols.它按照Borland格式把名称从调试信息中提取出来。对象扫描器允许识别库函
数。源码思考你可以增添你自己的名字和注释。如果某些DLL中的函数是通过序数输出的,你可以附加一个输入库到OllyDbg中
,以恢复原始名称。Ollydbg也可识别许多常数的symbolic名称,像窗口消息,错误代码或位段,然后在call中把他们
解码为已知的函数。
已知函数。
OllyDbg能通过名称识别大约个被C和Windows API频繁使用的函数,并能解码他们的参数。你可以添加你自己的描
述,或者分配预先定义的译码。你可以在已知函数上设置logging breakpoint(记录断点)并把参数记录到日志中。
堆栈。使用简单的试探,OllyDbg尝试识别返回地址和堆栈帧。
但注意,他们有可能是上一个call所留下的残余(译者:破解的时候有时反而需要!)。如果程序在已知的函数上暂
停,堆栈窗口解码实参。 搜索。大量的可能性!搜索命令(确切的或近似的),命令号,常数,二进制或者文本串(
不必是连续的),搜索参考地址的所有命令,常数或者地址范围,搜索名称,在整个分配的内存中搜索2进制序列。如
果发现多个地址,你可以在他们中间来回的切换。
资源。lightbgm源码
如果Windows API函数参考资源串,OllyDbg可以释放并显示它(译者:wdsam)。对其它类型的只是限制在列出附属
资源,转储和2进制编辑。 断点。OllyDbg支持所有种类的常规断点:简单断点,条件断点,中断并把信心写到日志文
件(例如,函数的参数),写或访问的内存断点,硬件断点(只能ME/NT/)。在hit trace(命中追踪)的极端例
子下,INT3中断可以设置在模块的每个命令下。在有MHz处理器的Windows NT环境中,OllyDbg可以每秒钟处理
个以上的中断。 监视和查看工具。Watch是一个每次程序暂停时候都被计算的表达式。你可以使用寄存器,常数
,地址表达式,布尔和任何复杂的代数操作符。你可以比较ASCII和UNICODE串。Inspector是包含2个索引并能以一个
2维表格的形式表示的watch,它可以解码数组和结构。
执行。
你可以一步步的执行程序,或者进入子过程,或者立刻执行它。你可以运行程序知道返回或者运行到指定的地方,或
者连续执行。当程序运行时,你仍然对其具有完全的控制,而且你还可以查看内存,设置断点,甚至在运行时实时调
整代码。源码cmo而且,在任何时候你都能暂停和重启被调试的程序。 命中追踪。Hit trace显示到目前为止,那些命令或进
程被执行了,它允许你检测你代码的所有分支。Hit trace在每个指定的命令上下断点,并在命令被执行后(被命中
Hit)移去它。
运行追踪。
Run trace一步一步执行程序,并把执行结果摘要到一个大的缓冲中。这个摘要包括所有的寄存器(除了SSE),旗标
和线程错误,消息和已知函数的解码后的参数。你可以保存原始命令,这样可以使调试自改变程序变的容易。你可以
指定条件以停止追踪。或者按地址范围,表达式或者一个命令。你可以把run trace的结果保存到一个文件中并比较两
个独立的Run。Run trace允许回朔追综,并详细分析大量命令执行的经过。
摘要。
摘要计算某条指令在run trace缓冲区中被列出了多少次。用摘要,你可以知道哪部分代码消耗了最多的处理时间。
补丁。
内建的汇编器自动选择最短可能的代码。二进制编辑器同时以ASCII,UNICODE和进制的形式同步显示数据。固有的拷
贝粘贴功能仍然是可用的。自动备份允许撤销改变。你可以直接修改后拷贝到可执行文件中去,OllyDbg甚至还能适当
调整你做的改变。
自解压文件。
当调试自解压文件时,你常常想要跳过自解压然后停在原始程序的入口点。OllDbg完成SFX(自解压)追踪,它尝试这
定位真实的入口。SFX追踪常常对于加了保护的自解压程序是无能为力的。发现入口(或者指定)后,OllyDbg可以更
快速和可靠的跳过解压程序。 插件。通过编写你自己的插件,你可以给OllyDbg添加功能。插件存取所有重要的数据
结构,添加菜单和快捷方式到存在的OllyDbg窗口并使用超过个插件API函数,这些插件API有详细的文档说明。
UDD。
OllyDbg存储所有程序或模块相关信息到单个文件并在模块装载的时候读入。这些信息包括标签,注释,断点,监视,
分析数据,条件等等。 定制。你可以定制字体和颜色方案。
OllyDebugOD基本功能
OllyDebugOD是一个功能强大的调试工具,提供了丰富的配置选项,让你能定制外观和运行设置,超过百种选项供你选择。其数据窗口支持多种数据格式,如HEX、ASCII、UNICODE,以及不同类型的数值和地址显示,包括/位、//位浮点数,以及反汇编代码和PE文件头信息。
OllyDebugOD的文档详尽,内置帮助文件,你可以将其与Windows API帮助文件结合使用,快速获取系统函数的详细信息。启动方式灵活,可以通过命令行、菜单选择、拖放文件或重启/挂接正在运行的程序进行调试。它支持即时调试,无需安装,直接在软盘上就能运行。
调试DLLs是其核心功能之一,它会自动运行一个程序来加载链接库,并允许你调用库中的输出函数。源码级调试也很强大,能识别Borland和Microsoft格式的调试信息,包括源代码、函数名、变量等,支持动态变量和结构的有限度识别。
OllyDebugOD的反汇编器具备代码高亮功能,可针对不同类型的指令和操作数进行个性化定制。它能调试多线程程序,提供了线程管理和转换的能力,以及线程错误信息的显示。此外,OllyDebugOD的分析功能极其出色,能解析函数过程、循环、API调用等,显著提升二进制代码的可读性和减少错误发生的可能性。
OllyDbg还支持对象扫描,包括OMF和COFF格式的文件,可以解压并定向代码段。对于DLL的输出函数索引,可通过导入库恢复原始名称。它全面支持Unicode,并能识别和显示函数名称、对象库函数及大量常量符号名。
OllyDbg能识别大量C和Windows API函数,支持添加描述和预定义解码,还能设置Log断点和记录参数。即使在没有调试信息的情况下,也能处理递归调用。在栈窗口,它能智能识别和分析函数参数和栈框架,包括栈跟踪和结构化异常处理。
搜索功能强大,支持多种搜索类型,包括命令、字符串、地址和函数等。OllyDbg提供多种类型的断点,如一般断点、条件断点和内存读写断点,以及Hit跟踪和Run跟踪,帮助深入理解和调试程序。统计功能可以分析代码执行频率,而内置的编辑器和补丁工具则支持数据的修改和恢复。
最后,OllyDbg支持自解压文件跟踪,插件系统允许用户扩展其功能,而UDD特性则保证了调试数据的持久性和一致性,即使在模块重新加载时也能继续使用。总的来说,OllyDebugOD是一个全面且功能强大的调试工具,为开发者提供了深度剖析和优化代码的众多工具。
pe文件简介
PE文件是一种广泛应用于Microsoft基于Win系统(如winnt、win9x)的可执行文件格式,将在未来的Windows操作系统中扮演重要角色。PE格式的普及使其成为开发者和系统设计者不可或缺的一部分,尤其是对于那些使用Win或Winnt系统,或者在Windows3.1下使用Visual C++编程的用户来说,PE文件是其工作环境的一部分。这种格式之所以重要,是因为它不仅在所有平台上实现的WindowsNT项目启动时间更短,而且还简化了操作系统的装入器和程序设计工具的开发过程。 PE文件格式的演变反映了Microsoft对提升WindowsNT性能的决心。在WindowsNT之前,存在用于位Windows的虚拟设备驱动程序的特殊文件布局。此外,MS-DOS的文件格式在向PE文件格式过渡时,需要解决与COFF(Common Object File Format)格式相关的问题,以适应WindowsNT的不同需求。COFF格式是WindowsNT继承的,它在VAX、VMS和UNIX等平台的项目中具有良好的基础。然而,COFF格式需要进一步发展以满足现代操作系统的需求,最终PE文件格式应运而生。 PE文件格式与COFF格式共享许多特点,但PE文件格式更适用于位Windows系统。在WindowsNT的C编译器之前,Microsoft的编译器遵循Intel的OMF (Object Module Format) 规范,但为了适应WindowsNT的需要,Microsoft放弃了OMF格式并转向了COFF格式。然而,由于Microsoft的竞争者如Borland和Symentec继续坚持OMF格式,导致制作库文件时需要为不同的编译器提供不同版本的库。为了解决这个问题,PE文件格式应运而生,它在所有平台上使用相同的文件格式,大大减少了开发和维护的复杂性。 PE文件格式在Winnt.h头文件中得到了文档化,其中包括了PE文件的生鲜数据结构定义,尽管注释较少。然而,通过参考PE文件和COFF格式的规格说明,开发者能够更好地理解这些数据结构和标志变量。为了帮助理解Winnt.h中的信息,PE文件和COFF OBJ文件的文档化变得尤为重要。 为了更直观地理解PE文件的组成,本文提供了一个PE和COFF OBJ文件的Dump程序—PEDUMP的示例输出。通过使用PEDUMP,开发者可以将PE文件和COFF OBJ/LIB文件转化为可读形式,从而更好地理解这些概念。虽然该程序的源代码在MSJ电子公报版上可获取,但本文仅展示了从PEDUMP得到的一些示例输出,以阐明其描述的概念。 总之,PE文件格式是Microsoft操作系统中不可或缺的一部分,它为开发者提供了灵活性和效率,同时也简化了操作系统装入器和程序设计工具的开发。通过PE文件格式,WindowsNT能够在不同平台上保持一致的文件格式,从而加速项目启动时间并减少开发复杂性。扩展资料
PE文件被称为可移植的执行体是Portable Execute的全称,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)