为什么只清除堆栈金丝雀的一半?

0x00

我反汇编了一个简单的C程序(由gcc编译),负责放置堆栈金丝雀的说明如下:

mov    %fs:0x28,%rax
mov    %rax,-0x8(%rbp)
xor    %eax,%eax

请注意,金丝雀为8个字节(rax),但是只有4个字节(xor eax eax)被清除。

这是故意的吗?看起来代码只是泄漏了堆栈金丝雀的一半。

ne

使用amd64修改寄存器的低32位时,会将高32位清除。这与修改寄存器的任何下部时不同:例如,xor al, al仅清除的8个低位rax

由于xor eax, eax比短1个字节xor rax, rax,因此编译器通常会选择第一个字节

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么只清除堆栈金丝雀的一半?

来自分类Dev

堆栈金丝雀的安全内存区域

来自分类Dev

是什么设置fs:[0x28](堆栈金丝雀)?

来自分类Dev

为什么scrollTop只向下滚动一半?

来自分类Dev

泄漏金丝雀,Recyclerview泄漏mAdapter

来自分类Dev

在RTL中镜像金丝雀部署?

来自分类Dev

如何记录烟囱的金丝雀污染?

来自分类Dev

CSS 中的目标边缘金丝雀

来自分类Dev

为什么我的noUiSlider只尊重滑块一半的“步长”值?

来自分类Dev

为什么Live Server只加载一半的HTML代码?

来自分类Dev

为什么我的noUiSlider只尊重滑块一半的“步长”值?

来自分类Dev

为什么我的应用程序只呈现页面的一半?

来自分类Dev

属性反射到属性在金丝雀上断开?

来自分类Dev

方漏金丝雀找不到符号

来自分类Dev

LeakActivity泄漏显示在泄漏金丝雀上

来自分类Dev

Android泄漏金丝雀-泄漏空活动

来自分类Dev

修复泄漏金丝雀发现的活动内存泄漏

来自分类Dev

在金丝雀上损坏的属性的属性反射?

来自分类Dev

Kubernetes 基于地理位置的金丝雀部署路由

来自分类Dev

用于金丝雀部署和编排的 Chef Provisioning

来自分类Dev

Ajax 只发布了一半的数据

来自分类Dev

为什么我的char数组的一半是空白?

来自分类Dev

为什么printf(Unix)使用一半舍入?

来自分类Dev

为什么输出是应有的一半?

来自分类Dev

为什么我的char数组的一半是空白?

来自分类Dev

为什么svchost总是占用一半的CPU?

来自分类Dev

为什么一半的逻辑分区不可用?

来自分类Dev

为什么printf(Unix)使用一半舍入?

来自分类Dev

缓冲区溢出-使用金丝雀防御无法成功

Related 相关文章

热门标签

归档