1

我在重新组装拆卸时发现了一个问题。
我希望重新组装二进制文件的字节模式与原始二进制文件相同。
然而,事实并非如此。我给你举个例子。

displacement(我知道可以使用Here处理有关的编码问题。
但这个问题是关于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.

有没有办法做到这一点?

4

0 回答 0