我正在做一个来自pwnable.kr的二进制挑战,我正在检查一个ROP小工具。
到目前为止,我一直使用以ret或syscall/int 0x80结尾的小工具,但现在ROPgadget给了我一个以ret 0结尾的小工具。
wrt ret有什么区别?
发布于 2022-05-24 22:57:26
这不是一个严格意义上的安全问题,但简单的回答是,ret和ret 0之间没有功能上的区别。事实上,由于一些奇怪的原因,这种表示法通常是独立于编译器的.
之所以显示符号是因为ret 0很可能是ret imm16=0指令造成的。例如,MSVC将ret作为ret 0发出。然而,在操作方面,这些都是完全相同的指示。如果您想形象化这种差异,请编译一个简单的:
xor eax, eax
ret 0在MASM中,然后在NASM中编译相同的程序。NASM可能会优化上面的内容
xor eax, eax
ret而MASM将显示为前者与ret 0。
https://security.stackexchange.com/questions/262227
复制相似问题