经典变长指令-SIB
一、回顾Mod/M结构
Intel 64 and IA-32 Architectures Instruction Format
SIB由ModR/M来决定,同时Displacement(偏移)和Immediate(立即数)也是由ModR/M来决定
二、SIB的组成部分(结构图)
三、示例
88 84 48
1、88-->是Opcode,查Table A-2表-->得出操作指令是MOV
2、88的具体含义为-->MOV Eb,Gb
3、见到 Eb,Gb明白84为ModR/M字段
4、接下来来拆分ModR/M-->10 000 100 (按照ModR/M结构图来进行查询(可看上一篇文章)
5、接下来查表Table2-2
6、发现得到的与之前有所不同,当遇到[--][--]这种情况仅依靠ModR/M无法来确定,需要继续查询SIB
7、此时为通过ModR/M确定成-->[--][--]+disp32,接下来通过中间的000位确定Gb,因为此时的宽度为b所以是8个字节,所以为AL
8、通过以上确定了48为SIB的结构(组成部分和格式可看第二部分) 将48拆分-->01 001 000,然后查表Table 2-3-->Base为EAX,Index为ECX*2
9、最后补全-->MOV BYTE PTR DS:[EAX + ECX*2 +disp32],AL disp32是偏移的值而且宽度为32,就说明,在使用的时候后面会被吃进去4个字节
__EOF__

本文作者:Mkd1R
本文链接:https://www.cnblogs.com/Mkd1R/p/15772802.html
关于博主:安全小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Mkd1R/p/15772802.html
关于博主:安全小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通