我在重新组装拆卸时发现了一个问题。
我希望重新组装二进制文件的字节模式与原始二进制文件相同。
然而,事实并非如此。我给你举个例子。
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 00和55)。
如何强制汇编器发出我想要的确切机器代码?
特别是,我想subl $0x55,(%edi)组装成81 2f 55 00 00 00.
有没有办法做到这一点?