我在重新组装反汇编时遇到了问题。
我希望 重组二进制 的字节模式与 原始二进制 相同。
但是,事实并非如此。我给你看一个例子。
(我知道可以使用Here处理有关displacement
的编码问题。
但是这个问题是关于immediate value
,而不是displacement
)
1.binary_A的反汇编为:
83 2f 55 subl $0x55,(%edi)
81 2f 55 00 00 00 subl $0x55,(%edi)
2。解析1
并制作A.s
文件:
subl $0x55,(%edi)
subl $0x55,(%edi)
3.重新组装A.s
。
83 2f 55 subl $0x55,(%edi)
83 2f 55 subl $0x55,(%edi)
如您所见, 重新组合的二进制 和 原始二进制 的字节模式是不同的!
实际上,我认为step 1
中的反汇编代码不应该是相同的。
因为立即数(0x55
)的编码彼此不同!(55 00 00 00
和55
)。
如何强制汇编程序发出我想要的确切机器代码?
特别是,我希望将subl $0x55,(%edi)
组装成81 2f 55 00 00 00
。
有什么办法吗?