32位gcc编译器“伪造”64位指令

145 阅读1分钟

我用GNU编译器尝试了如下代码,结果成功的发现,他们是一样的,从机器指令层面讲

` .code32

.byte 0x48

xorl %eax, %eax `

等同于64位代码

`.code64

xorq %rax, %rax`

利用这个特性,你可以轻松伪造出64位的代码

32bit code64bit code
.code32 .byte 0x48 xorl %eax, %eax.code64 xorq %rax, %rax
.code32 pushl%eax.code64 pushq %rax
.code32 .byte 0x48 iretl.code64 iretq