前言

ModR/M字段是用来进行内存寻址的,可当地址形如DS:[EAX + ECX*2 + 12345678]时,仅仅靠ModR/M字段,是描述不出来的。

这时就在ModR/M后面增加一个SIB字节,与ModR/M字段共同描述。

上一节说到opcode决定了是否有ModR/M字段,而opcode和ModR/M字段一起决定了SIB字段

可以看到再ModR/M后面,SIB这个值是否有取决于ModR/M的具体取值,其实就是上一节说的esp那个位置,ModR/M是空出来

SIB结构

首字母命名Scale Index Base   SIB

SIB的描述方式为

Base + Index*2**Scale (Scale描述2Scale,所以只能为 *1 *2 *4 *8)

SIB图表

1、当Index = 100 时,Index被0替代,此时只有Base有效

2、当Base = 101 时,Base被0替代,此时只用Index有效

具体解析

0x89 2C 14

先看opcode 0x89

说明基本格式是MOV Ev, Gv : Gv与我当前的x32dedug决定了是32位的通用寄存器,具体是哪一个通用寄存器还要看ModR/M的3,4,5部分

ModR/M字段展开

00 101 100

5号寄存器

现在可以确定是 mov dword ptr ds:[xxxx],EBP

然后Mod R/M是00 100 决定了改指令有SIB字段

看SIB字段

00 010 100

对应的是S I B

用Base + Index*2**Scale这个公式

B:100   对应的是ESP

I:010 以及B:00  对应是EDX

整个下来是mov dword ptr ss:[ESP+EDX],EBP

这里为什么没有偏移呢,这个值还是由ModR/M字段说明,可以看到Mod为00,没有偏移,如果Mod为01或者10 ,后面依旧要更上1个字节的偏移或4个字节的偏移,这里不明白可以看上一节ModR/M的那张表

0x 89 AC 15

先看opcode 0x89

说明基本格式是MOV Ev, Gv : Gv与我当前的x32dedug决定了是32位的通用寄存器,具体是哪一个通用寄存器还要看ModR/M的3,4,5部分

ModR/M字段展开

10 101 100

5号寄存器

现在可以确定是 mov dword ptr ds:[xxxx],EBP

然后Mod R/M是10 100 决定了改指令有SIB字段

看SIB字段

00 010 101

对应的是S I B

用Base + Index*2**Scale这个公式

B:100   对应的是EBP

I:010 以及B:00  对应是EDX

整个下来是mov dword ptr ss:[EBP+EDX+一个dword偏移],EBP

这里为什么又有偏移:

最新文章

  1. window server 2008配置FTP服务器550 Access is denied. 问题解决办法
  2. 【JAVA】JMX简单使用方法
  3. 第一节Unity3D简介
  4. POJ 1042 Gone Fishing
  5. MySQL数据库中,使用游标循环遍历
  6. 基础 ADO.NET 访问MYSQL 与 MSSQL 数据库例子
  7. 第三篇——第二部分——第三文 配置SQL Server镜像——域环境
  8. 读书笔记--用Python写网络爬虫02--数据抓取
  9. alpha-咸鱼冲刺day1-紫仪
  10. MYCP作业
  11. oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
  12. 自动化测试-2.seleniumIDE
  13. ELK--filebeat详解
  14. Python中的一些小语法
  15. R及Rstudio 的使用建议
  16. hdu 5051 找规律?+大trick
  17. notepad++ 语法高亮
  18. Ansible Playbook Conditionals
  19. Oracle 函数 “判断数据表中不存在的数据,才允许通过”
  20. C# 通过反射获取方法/类上的自定义特性

热门文章

  1. flutter 混合开发
  2. js currying & js 科里化
  3. 源码分析:Exchanger之数据交换器
  4. C++算法代码——奖学金
  5. Java volatile 关键字底层实现原理解析
  6. Redis集群简介及部署
  7. 如何用Eggjs从零开始开发一个项目(3)
  8. herry菌插件(B站C站)下载与安装(更新中)>>
  9. 使用NATAPP内网穿透工具
  10. 微信小程序日期转时间戳