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

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

2022-4-18 10:34
4365

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)但具体应该是什么呢?


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2022-4-18 10:36 被CrashInto编辑 ,原因: 补充说明
收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
はつゆき 2022-4-18 10:49
2
0

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

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

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

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