首页
社区
课程
招聘
[原创]VS2005与windbg反汇编的BUG
发表于: 2009-2-28 11:27 9111

[原创]VS2005与windbg反汇编的BUG

2009-2-28 11:27
9111
最近在写X64反汇编,由于X64没有普及没有多少成熟的反汇编引擎。相信微软就用它的VS2005和最新的Windbg
于是发现:
opcode:636362
经查Intel手册它应被反汇编为:movsxd rsp, qword ptr [rbx + 62h]



而VC与Windbg的反汇编结果为:movsxd esp dword ptr [rbx + 62h]





没有可靠的对照了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
看注释。
相信MS没有错的
2009-2-28 18:11
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
3
LZ搞错了,应该是

movsxd esp, dword ptr [rbx + 62h]
2009-2-28 18:34
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
4
我顶楼上的,读了手册,理解为
此指令默认op1为32bit,如果要rsp,加前缀.
所以ms正确,
movsxd esp, dword ptr [rbx + 62h]
2009-2-28 18:46
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
哈,光看描述了.....以为源操作数就一定是64位的。明白了....多谢谢楼上三位.

今天又找了disorm的反汇编和源代码看了一下:
0000000000000000 (03) 6363 62                  MOVZXD RSP, [RBX+0x62]
0000000000000003 (04) 48 6363 62               MOVSXD RSP, [RBX+0x62]
他的想法是对的,不过操作数大小方面好像也有问题。

相信微软没错的
2009-2-28 22:10
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
6
LS还是打错了

0000000000000000 (03) 6363 62                  MOVZXD ESP, [RBX+0x62]
2009-3-1 21:02
0
雪    币: 263
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
有钱人玩64位
穷人玩8位
2009-3-1 22:56
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=海风月影;585618]LS还是打错了

0000000000000000 (03) 6363 62                  MOVZXD ESP, [RBX+0x62][/QUOTE]

那是distorm的输出结果..
2009-3-2 10:02
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
64位的CPU一抓一大把,8位的反而不好买了
楼上说反喽....
2009-3-2 10:09
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
10
原来64位反汇编引擎差异这么大啊

下面出自udis86

00401000 636362           movsxd esp, dword [rbx+0x62]
00401003 48636362         movsxd rsp, dword [rbx+0x62]
2009-3-2 10:24
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
多谢我也下一个去
2009-3-2 15:24
0
游客
登录 | 注册 方可回帖
返回
//