反汇编引擎的工作原理

本文探讨了反汇编引擎如何解析X86平台下的Intel指令集,重点在于指令前缀、Opcode、Mode R/M、SIB和Displacement的角色。Opcode作为指令操作的核心,而Mode R/M、SIB和Displacement则帮助确定操作数类型和地址计算,确保正确反汇编汇编指令。
摘要由CSDN通过智能技术生成

OllyDBG和IDA都有一个很重要的功能:反汇编

在X86平台下使用的汇编指令对应的二进制机器码为Intel 指令集一Opcode,Intel指令手册中描述的指令由6部分组成:

Irsinucton Prefixes 指令前缀

Opcode 指令操作码

Mode R/M 操作数类型

SIB Displacement 辅助Mode R/M,计算偏移地址

Immedate 立即数 

 

Instuction Prefixes:指令前缀

指令前缀是可选的,作为指令的补助说明信息存在,主要用于以下4种情况。

重复指令:如REP、REPE\REPZ

跨段指令:如MOV DWORD PTR FS:[XXXX], 0

将操作数从32位转为16位:如MOV AX,WORD PTR DS:[EAX]

将地址从16位转为32位:如MOV EAX,DWORD PTR DS:[BX+SI]

Opcode:指令操作码

Opcode为机器码中的操作符部分,用来说明指令语句执行什么样的操作,如某条汇编语句是MOV、JMP还是CALL。Opcode为汇编指令语句的主要组成部分,是必不可少的。对Opcode的解析也是反汇编引擎的主要工作。

汇编指令助记符与Opcode是--一对应的关系。每一条汇编指令助记符都会对应一条Opcode码,但由于操作数类型不同,所占长度也不相同,因此对于非单字节指令来说,解析一条汇编指令单凭Opcode是不够的,还需要Mode R/M、SIB、 Displacement 的帮助,才能够完整地解析出汇编信息。

Mode RIM:操作数类型

Mode R/M是辅助Opcode解释汇编指令助記符后的操作数类型. R表示寄存器, M表示内存単元。Mode R/M占一个字节的固定长度,第6、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值