c/c++语言开发共享了解mpreferred-stack-boundary = number

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

    整个堆栈帧的大小将四舍五入到16个字节,而不是每个单独的局部变量。 Shellcode可以以任何方式工作,但代码是针对一个特定的布局编写的,因此您需要为不同的布局使用不同的shellcode。 – 杰斯特

      以上就是c/c++开发分享了解mpreferred-stack-boundary = number相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/550048.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐