反汇编很棒,但是当尝试重新汇编为操作码时,每次都会给出不同的结果。例子:
C:\>rasm2 -a x86 -b 64 -d "48898D80FEFFFF"
mov qword [rbp - 0x180], rcx
C:\>rasm2 -a x86 -b 64 "mov qword [rbp - 0x180], rcx"
49898d80feffff
看到不同?第一个字节已更改,并且每次都保持相同的行为。另一个问题是,我无法让它用 8 个字节组装这条指令,它只给我 4 个字节:
C:\>rasm2 -a x86 -b 64 -d "C7458C0000803F"
mov dword [rbp - 0x74], 0x3f800000
C:\>rasm2 -a x86 -b 64 "mov dword [rbp - 0x74], 0x3f800000"
41c67400
但是当我删除位标志并将寄存器设置为 32 位时,它给了我正确的操作码!
C:\>rasm2 -a x86 "mov dword [ebp - 0x74], 0x3f800000"
c7458c0000803f
为什么要这样做,我做错了什么?
GitHub 问题链接以供将来参考。