gpt4 book ai didi

c - 了解 mpreferred-stack-boundary=number

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:00 25 4
gpt4 key购买 nike

我正在尝试想象并理解如何利用 mpreferred-stack-boundary(更像是构建代码以在学校利用它)。从阅读 gcc 手册中,它指出它根据 mpreferred-stack-boundary=number 对齐堆栈,其中 number 是以 2 为底的指数。默认情况下,number=4,因此堆栈的对齐方式为 2^4=16字节。我不知道是不是咖啡因弄乱了我的大脑,但我在类里面看到的所有 shell 代码注入(inject)都要求我们在编译时使用 mpreferred-stack-boundary=2,这会将堆栈对齐 4 个字节。那么这是否意味着我让放置在堆栈上的变量默认尝试一次填充堆栈 16 个字节?另外,为什么我放在缓冲区中的 shellcode 在边界设置为 2 时工作,但在默认模式下运行时却不起作用?

最佳答案

整个堆栈帧的大小将向上取整为 16 个字节,而不是每个单独的局部变量。 Shellcode 可以以任何一种方式工作,但是代码是为一种特定的布局编写的,因此您需要为不同的布局使用不同的 shellcode。 – clown

关于c - 了解 mpreferred-stack-boundary=number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27371820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com