首页
社区
课程
招聘
[旧帖] 请问怎么判断这三个语句中寄存器内存放的内容 0.00雪花
2011-8-13 08:30 3811

[旧帖] 请问怎么判断这三个语句中寄存器内存放的内容 0.00雪花

2011-8-13 08:30
3811
第一语句:
mov EAX,DWORD PTR DS:[ESI-4]
MOV EDX,DWORD PTR DS:[EDI-4]

第二语句:
mov EAX,DWORD PTR DS:[ESI]
MOV EDX,DWORD PTR DS:[EDI]
第三语句:
mov EAX,DWORD PTR ss:[EBP-4]

请问怎么判断ESI、EDI、EBP存寄的是输入数还是长度,这三句怎么解释,DWORD PTR DS:[ESI-4]、DWORD PTR DS:[ESI]、DWORD PTR ss:[EBP-4]各代表什么意思,DWORD DS:[ESI-4]、DWORD PTR DS:[ESI]有什么区别,[ESI-4]是什么意思,请高手指点,谢谢!

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

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
happymhx 2011-8-13 09:00
2
0
DWORD PTR 类型控制 DWORD表示输入的长度是4个字节 正好32Bit 跟寄存器的长度一样!
例如MOV AX,WORD PTR DS:[ESI-4]
DS SS 只是指出是数据段 还是堆栈段  DWORD DS:[ESI-4]、DWORD PTR DS:[ESI] 区别就是这个两个地址相差4字节 或者值大小相差4 好像漏掉PTR
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飞龙 2011-8-13 09:35
3
0
谢谢!DWORD PTR 类型控制 DWORD表示输入的长度是4个字节 正好32Bit 跟寄存器的长度最多是不是8位数
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
happymhx 2011-8-13 10:12
4
0
寄存器的长度取决你的CPU 有16Bit 32Bit 48Bit 64Bit 128Bit.....最多要查下资料
雪    币: 88
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
chinasuns 2011-8-13 10:57
5
0
dword 是双字的意思,1个二进制位称为1个bit,8个二进制位称为1个Byte,也就是1个字节(8位),2个字节就是1个Word(1个字,16位),则DWORD(DOUBLE WORD)就是双字的意思,两个字(32位)。
eax 是32位寄存器,ax是16位寄存器,ah/al是8位寄存器,mov EAX,DWORD PTR DS:[ESI-4]中eax是32位寄存器,那么后面要送入的也必须是32位。不能16位送32位,也就是说应该对应起来。

它们送入的长度上面已经解释,其它的说一例就明白了mov eax,DWORD PTR DS:[ESI-4]的意思是将地址为DWORD PTR DS:[ESI-4]下的内容送入eax,DWORD PTR DS:[ESI-4]代表的地址是这样计算的:ds的内容*10H+(esi的内容-4),而DWORD PTR DS:[ESI]代表的物理地址是:ds的内容*10H+(esi的内容,就是寄存器间接寻址)
游客
登录 | 注册 方可回帖
返回