首页
社区
课程
招聘
[求助]在学习IA-32指令:8D 75 E4指令解析碰到的问题
发表于: 2022-4-18 10:34 5023

[求助]在学习IA-32指令:8D 75 E4指令解析碰到的问题

2022-4-18 10:34
5023

EIP = 0x0040101E,读取Opcode 8D

对应指令为

1
LEA    Gv,M

Gv描述的是32位寄存器,M的描述:

 

 

更进一步的操作数描述需要结合ModR/M,CPU在读取操作码8D需要往后读取1byte内容,读取后的ModR/M = 75 = 01 110 101

读取出来的Gv = ESI,因此指令解析为:LEA ESI,M
OD解析当前指令的指令码为:8D 75 E4。第二个操作数由M描述,并且对第二个操作数的描述需要借助往后的1字节内容(E4)但具体应该是什么呢?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-4-18 10:36 被CrashInto编辑 ,原因: 补充说明
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
2

8d代表lea
75代表esi,[ebp+disp8]
e4代表disp8

最后于 2022-4-18 10:53 被はつゆき编辑 ,原因:
2022-4-18 10:49
0
雪    币: 12
活跃值: (282)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
はつゆき 8d代表lea75代表esi,[ebp+disp8]e4代表disp8

首先感谢回答,我也尝试照着ModR/M的查询结果进行第二个操作数的解读,但结果是错误的。对于第二个操作数,我的解读思路:读取指令执行的EBP的值再加上往后读取处的1字节内容(E4),但结果和我在OD看到的指令运行后ESI的值不一致。

2022-4-18 11:08
0
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
4
e4是机器码,没有符号这个概念,disp8有符号,所以+变-
2022-4-18 11:34
0
雪    币: 12
活跃值: (282)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
はつゆき e4是机器码,没有符号这个概念,disp8有符号,所以+变-
请问能提供下计算公式吗?上边的图中有EBP的值。
2022-4-18 14:08
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
0xE4最高位是1,为负数,0xE4 = -(not(0xE4) + 1)=-0x1c.
2022-4-19 18:00
0
雪    币: 12
活跃值: (282)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
blindtiger 0xE4最高位是1,为负数,0xE4 = -(not(0xE4) + 1)=-0x1c.
哦~懂了懂了,真是太感谢了!忘记了需要转换一下。
2022-4-20 14:34
0
游客
登录 | 注册 方可回帖
返回
//