理解堆栈

逆向工程 艾达 部件 x86
2021-07-04 09:42:53

我已经反汇编了一个使用 ida 的 x86 应用程序,它生成了以下代码

.text:1084FF10                 push    ebp
.text:1084FF11                 mov     ebp, esp
.text:1084FF13                 and     esp, 0FFFFFFF8h
.text:1084FF16                 sub     esp, 0D4h
.text:1084FF1C                 mov     eax, ___security_cookie
.text:1084FF21                 xor     eax, esp

指令“and esp, 0FFFFFFF8h”在这里做什么?

1个回答

这将堆栈指针与 8 字节边界对齐。这是由编译器完成以提高性能,因为从非对齐地址读取会导致性能下降。