首页
社区
课程
招聘
[讨论]同样的二进制代码可能对应多条汇编指令吗?
发表于: 2008-2-20 13:37 5176

[讨论]同样的二进制代码可能对应多条汇编指令吗?

2008-2-20 13:37
5176
我知道同一条汇编代码翻译后可能对应多个二进制代码

但是同样一段二进制代码会不会也对应多个汇编指令呢?

另外还有个问题,不知道汇编指令中翻译成二进制代码后最长的是哪一条?
我看了OD网站上提供的反汇编引擎源代码,他定义了最长的是16,会不会最长的就是16?

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

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
一条汇编码只对应一个二进制串

一个二进制串可以对应多个汇编代码,你从汇编代码的参考可以看到,有的代码是等效的,在编译成OPCODE时是一样的

不算PREFIXS,最多13个字节,算上PREFIXS貌似多长都可以,不过OD会将无效的PREFIX截断,单独显示
2008-2-20 13:48
0
雪    币: 203
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
一条汇编代码是可以对应2条以上的二进制串的
比如
mov eax, 0

可能对应的二进制代码有:
1) C7 C0 00 00 00 00
2) B8 00 00 00 00

但一个二进制串如果能对应多个汇编代码的话,那么系统怎么区分?怎么知道该执行的是哪一条代码?
2008-2-20 14:17
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
我错了,,,反省ING,,,

等效指令,,,不需要区分,,,

mov edi, edi  = nop
2008-2-20 14:25
0
雪    币: 203
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
百度过后,找到一些参考文章:
http://www.asmedu.net/blog/user/mypost.jsp?neighborId=4321&kindLevel=1&kindId=8675

对于add ax,bx这样的双操作汇编指令,汇编编译器(或者其他什么器)会根据编译器的开发者的意愿,将其编译为不尽相同的两组机器码(二进制信息),但是在由同一个编译器编译的指令只能采取其中一种机器码,也就是说由同一个编译器在不同时刻编译的此汇编指令或同一编译器编译程序不同位置的相同指令过程中不可能出现两个结果。换句话说,就是对于编译过程而言,任何一条指令都有唯一个机器码与之对应。

而对于反编译工作(或者说CPU的角度),任何一个有效的机器码,都有唯一一条汇编指令与之对应。
2008-2-20 14:28
0
雪    币: 203
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
但我却还是有个疑问:如果5楼引用的那个人的说法正确,当初为什么要设计成这样?
为什么不设计成一一对应?这样不是多了麻烦?
所以我还是不敢完全同意他的说法。
2008-2-20 14:33
0
雪    币: 203
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
其实我也不知道究竟是我们将这些东西想问题的时候想的太简单了,还是说那些负责设计指令系统得的天才想的太复杂了
可能是因为我水平有限,以为简单的事情,其实不是那么简单的
2008-2-20 14:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个不清楚
但见过2进制代码一样
汇编代码不一样的
2008-2-20 17:33
0
雪    币: 203
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
还记得你见过的那些二进制代码是什么吗?
2008-2-20 18:51
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
10
位移操作,有几条是一样的

CPU的OPCODE是从小到多的,先有1字节,然后再有2字节、3字节的表,也就是说,有的指令的存在可能是为了向前兼容

另外由于EAX使用的频率很高,所以有的指令是针对EAX的使用作优化的
2008-2-20 19:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好像是CALL 指令 或者 JMP指令来着
记不清楚哪个了
你找本 卡巴斯基的 黑客反汇编解密  上面有
2008-2-20 19:19
0
游客
登录 | 注册 方可回帖
返回
//