为什么.bss段没有可执行的属性?

问题描述 投票:0回答:1
。在我的Ubuntu18.04中,可以执行.bss段:


但在我的Ubuntu20和Ida Pro中,.bss段没有可执行的属性,为什么?
enter image description here

enter image description here enter image description here 为什么.bss段没有可执行的属性?

linux ubuntu elf ctf pwntools
1个回答
1
投票
在a
normal

中可执行

orw
应该执行权限,所以是ubuntu 18.04的结果很奇怪,而不是相反。

以下都是相关的:

输出来自
.bss Kernel版本

输出来自

readelf -Wl orw
  • Emulator细节(如果使用某种模拟器)。
    
    我怀疑您使用仿真器,并设置为模拟pre-
  • nx-bit
  • 处理器(在其中也
  • cat /proc/cpuinfo
  • Implied
    bit)。
  • 越来越多地,可执行文件缺乏
  • W
  • 段,在这种情况下,这个答案可能是正确的 - 内核默认值已更改为此类二进制文件。

X是非初始化的全局变量的段,因此它通常不可执行(不需要)。 如果您希望它可执行(因为您要测试要测试的计算机代码),则可能需要选择一个特殊段或创建两个段(一个可执行文件和其他读/写)重叠以允许写入代码虽然您也可以执行它。 可以在您用于链接可执行文件的标准脚本中指定这一点(当然可以使用其他名称),或者如果没有为您完成,则可以指定允许创建这些脚本的链接脚本。 阅读Linker文档(完全,很抱歉),以了解链接器如何处理处理器体系结构的(和其他)特质。 我不知道您正在使用什么体系结构,但是例如,英特尔处理器在片段中具有执行位权限,因为它们已经读写,这意味着可执行的段的内存访问必须是OpCode Fetch访问而不是读取加载数据寄存器的数据访问。 如果要访问文本段以进行数据读数,则需要添加读取对文本段的访问,以便能够查看您正在执行的代码。


Ubuntu On 18.04;默认情况下,NX位必须是符合编译器的; BSS将是可执行的。现代系统具有NX默认值,因此BSS无法执行
    
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.