如何强制汇编程序以特定方式编码“立即值”?

时间:2018-07-29 18:05:30

标签: assembly x86 binary intel disassembly

我在重新组装反汇编时遇到了问题。
我希望 重组二进制 的字节模式与 原始二进制 相同。
但是,事实并非如此。我给你看一个例子。

(我知道可以使用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 0055)。

如何强制汇编程序发出我想要的确切机器代码?
特别是,我希望将subl $0x55,(%edi)组装成81 2f 55 00 00 00

有什么办法吗?

0 个答案:

没有答案