❶ OllyDbg是什么
OllyDbg是什么?
OllyDbg是一个32位汇编级的直观的分析调试器。
它在源代码不可得或者你用编译器遇到问题的时候特别有用。
运行需要。工作在Windows 95,98,Me,NT或者2000,可能XP上(没有测试)。
运行于任何奔腾级别的电脑上,但是如果想要流畅的调试,你可能需要一个至少300MHz的处理器。
Ollydbg是很耗内存的。如果你想要使用某些扩展特性比如追踪,我推荐128或更多内存。
支持的处理器。OllyDbg支持所有80x86,奔腾,MMX,3Dnow!,包括Athlon扩展,和SSE指令以及相应数据格式。
但不支持SSE2. 可配置性。大约有100个选项控制OllyDbg的行为和外观。
数据格式。
Dump窗口显示所有常规数据格式:
hex,ASCII,UNICODE,16和32位正/负/16进制整数,32/64/80位浮点数,地址,反汇编(MASM或IDEAL),或作为注释的
PE部首或者线程数据块。
帮助。
这个文件包含理解和使用OllyDbg所需的重要信息。
如果你有Windows API帮助文件(因为考虑到版权的原因没有附带),你可以把它附加到OllyDbg一起,以便在系统调
用的时候获得立即帮助。
启动。
你可以以命令行,文件菜单,拖放的方式指定可执行文件,重启最后调试过的程序或者把它附加到正在运行的程序上
。OllyDbg支持实时调试。安装是不必要的,你可以从软盘上启动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能通过名称识别大约2100个被C和Windows API频繁使用的函数,并能解码他们的参数。你可以添加你自己的描
述,或者分配预先定义的译码。你可以在已知函数上设置logging breakpoint(记录断点)并把参数记录到日志中。
堆栈。使用简单的试探,OllyDbg尝试识别返回地址和堆栈帧。
但注意,他们有可能是上一个call所留下的残余(译者:破解的时候有时反而需要!)。如果程序在已知的函数上暂
停,堆栈窗口解码实参。 搜索。大量的可能性!搜索命令(确切的或近似的),命令号,常数,二进制或者文本串(
不必是连续的),搜索参考地址的所有命令,常数或者地址范围,搜索名称,在整个分配的内存中搜索2进制序列。如
果发现多个地址,你可以在他们中间来回的切换。
资源。
如果Windows API函数参考资源串,OllyDbg可以释放并显示它(译者:w32dsam)。对其它类型的只是限制在列出附属
资源,转储和2进制编辑。 断点。OllyDbg支持所有种类的常规断点:简单断点,条件断点,中断并把信心写到日志文
件(例如,函数的参数),写或访问的内存断点,硬件断点(只能ME/NT/2000)。在hit trace(命中追踪)的极端例
子下,INT3中断可以设置在模块的每个命令下。在有500MHz处理器的Windows NT环境中,OllyDbg可以每秒钟处理
5000个以上的中断。 监视和查看工具。Watch是一个每次程序暂停时候都被计算的表达式。你可以使用寄存器,常数
,地址表达式,布尔和任何复杂的代数操作符。你可以比较ASCII和UNICODE串。Inspector是包含2个索引并能以一个
2维表格的形式表示的watch,它可以解码数组和结构。
执行。
你可以一步步的执行程序,或者进入子过程,或者立刻执行它。你可以运行程序知道返回或者运行到指定的地方,或
者连续执行。当程序运行时,你仍然对其具有完全的控制,而且你还可以查看内存,设置断点,甚至在运行时实时调
整代码。而且,在任何时候你都能暂停和重启被调试的程序。 命中追踪。Hit trace显示到目前为止,那些命令或进
程被执行了,它允许你检测你代码的所有分支。Hit trace在每个指定的命令上下断点,并在命令被执行后(被命中
Hit)移去它。
运行追踪。
Run trace一步一步执行程序,并把执行结果摘要到一个大的缓冲中。这个摘要包括所有的寄存器(除了SSE),旗标
和线程错误,消息和已知函数的解码后的参数。你可以保存原始命令,这样可以使调试自改变程序变的容易。你可以
指定条件以停止追踪。或者按地址范围,表达式或者一个命令。你可以把run trace的结果保存到一个文件中并比较两
个独立的Run。Run trace允许回朔追综,并详细分析大量命令执行的经过。
摘要。
摘要计算某条指令在run trace缓冲区中被列出了多少次。用摘要,你可以知道哪部分代码消耗了最多的处理时间。
补丁。
内建的汇编器自动选择最短可能的代码。二进制编辑器同时以ASCII,UNICODE和16进制的形式同步显示数据。固有的拷
贝粘贴功能仍然是可用的。自动备份允许撤销改变。你可以直接修改后拷贝到可执行文件中去,OllyDbg甚至还能适当
调整你做的改变。
自解压文件。
当调试自解压文件时,你常常想要跳过自解压然后停在原始程序的入口点。OllDbg完成SFX(自解压)追踪,它尝试这
定位真实的入口。SFX追踪常常对于加了保护的自解压程序是无能为力的。发现入口(或者指定)后,OllyDbg可以更
快速和可靠的跳过解压程序。 插件。通过编写你自己的插件,你可以给OllyDbg添加功能。插件存取所有重要的数据
结构,添加菜单和快捷方式到存在的OllyDbg窗口并使用超过100个插件API函数,这些插件API有详细的文档说明。
UDD。
OllyDbg存储所有程序或模块相关信息到单个文件并在模块装载的时候读入。这些信息包括标签,注释,断点,监视,
分析数据,条件等等。 定制。你可以定制字体和颜色方案。
❷ 如何右键open witeh ollydbg
最简单的方法是启动OllyDbg,点击File|Open,然后选择你想调试的程序。程序需要命令行参数输入对话框下方的文本栏。
重新开始调试最后一个程序的快捷键是Ctrl+F2,并且OllyDbg使用相同的参数。
你也可以点选历史记录。把程序拖入OllyDbg也可以开始调试。
当然,当启动OllyDbg时,你在命令行中也能指定被调试的程序名和参数。比如:
你可以创建桌面快捷方式指向OllyDbg,选择属性,到快捷方式,把程序名加入目
标栏。每次你双击这个快捷图标,OllyDbg自动装载被调试程序。
你可以attach OllyDbg到某个正在运行的进程。点击File|Attach,从列表中选择
该进程。注意:当你关闭OllyDbg,这个进程也会终止。不要试图attach系统进程
,这很可能使系统完全SI机。
❸ 有关ollydbg ,高手请进
直接CTRL+F,输入JNZ 617A09就找到了,下面也一样
❹ 关于ollydbg命令行
在ollydbg的左下角,前提是你要有命令行的插件。
❺ 为什么我下的Ollydbg没有命令行
可能没有启动DOS环境的DEBUG命令。
❻ Ollydbg 是如何将地址转换成HEX数据的
TI的ccs默认生成的是.out格式的文件,而很多应用场合往往需要的是纯二进制代码,TI提供了一个小工具HEX2000能帮助实现格式的转化,具体的说明还是请参看TMS320C28x Assembly Language Tools手册。这里简单的说明下该工具的使用:
1.hex2000是在ccs安装目录下的。
2.hex2000 转化工具支持多种输出格式,至于用那种格式,通常是由所用的烧写器来决定的。常见的有:
Ascii hex: 这种格式其实是会将所有的code转化为字符形式,比如本来的0x3132, 它就用'3' '1' '3' '2'来表示,当中有空格,这种格式比较使用通过串口等工具来更新数据。
binary:-b 选项,纯二进制格式。它还支持intel,motorola-s, ti-tagged, tektronix等格式。
3.hex2000 有memory width的概念,输入文件的(--memwidth),一般来说都是16bit的(因为编译出来就是这样的),输出格式--romwidth,可以指定为8或者16(有些格式不支持16)。如果输入16,输出是8,hex工具会自动生成两个文件,一个放低8位的数据,一个放高8位的数据。当然你也可以自己制定这两个文件的名字。
4.你也可以指定输出文件的字节顺序,默认是little-endian,也可以通过-order LD和-order MS来指定大小端顺序。
5. -image选项:打开该选项,系统会产生一个和你在roms中指定大小一样的文件,不足部分用fill的值来替代。如果没有用该选项,系统只会产生一个实际大小的文件,比如你想要的空间是0x300000-0x330000,但这里面只有0x300000-0x310000空间有数据,那系统只会产生这部分的数据,后面部分不会填0;同事如果不使用-image选项,那如果0x300000-0x330000中仅有两个数据块,且这两个数据不连接,不适用该选项则会出现一个压缩的数据块,且仅有这两个数据块和的outfile。
6.hex2000工具,可以通过命令行通过一句话将所有的参数和输入输出写在一起来运行,比如:hex2000 -t firmware -o firm.lsb -o firm.msb
也可以通过ROMS指令写一个脚本文件,这种脚本文件的好处是可以编写比较复杂的要求,而且易于修改。下面是我的一个参考例子:
1.mcbsp_sd_demo.out
2.-image
3.--memwidth 16
4.--map mcbsp_sd_demo.map
5.--order=LS
6.-b
7.-fill FFFFh
8.ROMS
9.{
10.TEXT: org = 0x00600000, len = 0x2800, romwidth = 8
11.files = {mcbsp.bin}
12.}