OllyDbg完全教程 反汇编器[Disassembler]

转载 2006年06月10日 08:48:00
三,反汇编器[Disassembler]

反汇编器识别所有的标准80x86、保护、FPU、MMX和3DNow!指令集(包括Athlon扩展的MMX指令集)。但它不识别ISSI命令,尽管计划要在下个版本中支持这种命令。某些过时或者未公开的命令,像LOADALL,也不支持。

反汇编器可以正确解码16位地址。但它假设所有的段都是32位的(段属性使用32位)。这对于PE[Portable Executable]格式文件总是真的。OllyDbg不支持16位的NE
[New Executables]格式。

如果您熟悉MASM或者TASM,那么反汇编的代码对于您没有任何问题。但是,一些特例也是存在的。以下命令的解码与Intel的标准不同:


AAD (ASCII Adjust AX Before Division) -
该命令的解码后的一般形式为:AAD imm8

AAM (ASCII Adjust AX After Multiply) -
该命令(非十进制数)的一般解码形式为:AAM imm8

SLDT (Store Local Descriptor Table register) -
操作数总被解码为16位。这个命令的32位形式会在目的操作数的低16位中存储段选择器,并保留高16位不变。

SALC (Sign-extend Carry bit to AL, undocumented) -
OllyDbg 支持这个未公开指令。

PINSRW (Insert Word From Integer Register, Athlon extension to MMX) -
在AMD的官方文档中,这个命令的内存形式使用了16位内存操作数;然而寄存器形式需要32位寄存器,但只使用了低16位。为了方便处理,反汇编器解码寄存器为16
位形式。而汇编器两种形式都支持。

CVTPS2PI and CVTTPS2PI (Convert Packed Single-Precision Floating to Packed Doubleword, Convert with Truncation Packed Single-Precision Floating to Packed Doubleword) -

在这些命令中,第一个操作数是MMX寄存器,第二个或者是128位XMM寄存器或者是64位内存区域。为了方便处理,内存操作数也被解码为128位。


有些指令的助记符要依赖操作数的大小:


不分大小的形式 明确的16位形式 明确的32位形式
PUSHA PUSHAW PUSHAD
POPA POPAW POPAD
LOOP LOOPW LOOPD
LOOPE LOOPWE LOOPDE
LOOPNE LOOPWNE LOOPDNE
PUSHF PUSHFW PUSHFD
POPF POPFW POPFD
IRET IRETW IRETD
您可以改变解码大小敏感助记符[decoding of size-sensitive mnemonics].。根据选项,反汇编器从三种可能中选择之一进行解码。这个选项也会影响汇编器的默认处理方式。

解码MMX和3DNow!指令总是开启的,尽管您的处理器并不支持这些指令。


OllyDbg完全教程 单步执行与自动执行[Step-by-step execution and animation] Hit跟踪[Hit trace]

二十,单步执行与自动执行[Step-by-step execution and animation] 您可以通过按 F7(单步步入)或 F8(单步步过),对程序进行单步调试。这两个单步执行操作的...

GHOST 装双系统[详细图解教程]

  • 2010年05月16日 14:33
  • 7.51MB
  • 下载

[Android实践]之:Fragment完全解析

前言虽然有点类似activity,但是Android四大组件中没有它,只是整个大知识框架中实践的一个布局类的小知识点,所以没有写在Android知识体系中,而是写在了实践中,毕竟在实践中比较常用。又是...

局域网共享 [图解] 教程.doc

  • 2011年04月27日 19:42
  • 6.2MB
  • 下载

[Android知识体系]之四大组件:service(完全解析上)

之前想自己写一份介绍来着,但是后来觉得service好多知识点好麻烦啊所以就直接转郭大神的解析了。转载请注明出处:http://blog.csdn.net/guolin_blog/article/de...

OllyDbg完全教程

OllyDbg完全教程 一,什么是 OllyDbg? OllyDbg 是一种具有可视化界面的 32 位汇编-分析调试器。它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无...
  • Augusdi
  • Augusdi
  • 2011年04月01日 16:29
  • 2568

[Android Studio 权威教程]AS添加第三方库的6种方式(Jar,module,so等)

前几篇我们讲过了AS3种添加插件的方式,以及最常用的一些快捷键的用法,这篇我们讲讲添加第三方库的方法,我这里讲的是最实用、最简单也是最有效的方法,网上很多方法杂七杂八的而且有的已尽很老了在新的版本中根...

[Android Studio 权威教程]打包、生成jks密钥、签名Apk、多渠道打包

上一篇我们讲了多渠道打包 其中我们用到了签名文件在eclipse时.keystore在Android Studio中就是.jks文件了,那么这个文件怎么生成呢?这篇文章是上一篇的补充篇。 生成jks签...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OllyDbg完全教程 反汇编器[Disassembler]
举报原因:
原因补充:

(最多只允许输入30个字)