装配 - 修改堆栈内容

AK_*_*AK_ 0 memory x86 assembly stack i386

如何修改汇编中的堆栈内存块?

我想到了一种方法,那就是:

POP EAX
ADD EAX, 5
PUSH EAX
Run Code Online (Sandbox Code Playgroud)

是否有更短的更有效的方法来做到这一点?

Mat*_*lia 5

您可以使用内存操作数直接在堆栈上寻址值,如

add dword [esp], 5
Run Code Online (Sandbox Code Playgroud)

要么

add qword [rsp], 5
Run Code Online (Sandbox Code Playgroud)

如果你的目标是64位; 相反,在16位模式下,sp基于寻址的寻址不可用.