拆卸很不错,但是当尝试重新组装以进行操作码时,每次都会得到不同的结果。示例:

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个字节:

将寄存器设置为32位,它将为我提供正确的操作码!

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


为什么这样做,我做错了什么? GitHub问题链接以供将来参考。

评论

rasm2 -v给什么?您使用的是最新版本吗?

@PawełŁukasikrasm2 2.6.0-git 1 @ Windows-x86-64 git。我很确定这是最新版本。

我正在运行前两个命令,并具有相同的输出(尽管在Ubuntu上)。我待会再检查窗户

我问过核心开发人员-这是已知问题。可能很快就会解决。

@IgorSkochinsky完成。

#1 楼

这是一个错误,OP提出的问题现已在radare2 Master和最新版本中修复。

$ rasm2 -a x86 -b 64 -d "48898D80FEFFFF"
mov qword [rbp - 0x180], rcx
$ rasm2 -a x86 -b 64 "mov qword [rbp - 0x180], rcx"
48898d80feffff

$ rasm2 -a x86 -b 64 -d "C7458C0000803F"
mov dword [rbp - 0x74], 0x3f800000
$ rasm2 -a x86 -b 64 "mov dword [rbp - 0x74], 0x3f800000"
c7458c0000803f


可以在此链接中找到此修复程序。