我正在为大学任务实施原型堆栈保护机制。 我试图“强化”的测试二进制文件是一个静态链接的elf二进制文件,它有多个堆栈,硬编码为精灵部分。不同的堆栈由保护页(4096字节部分)分隔。 防护页面应该是不可接受的,类似于mprotect的PROT_NONE所做的。我尝试在readonly上使用带有--set-section-flags的objcopy但是溢出其中一个堆栈仍会导致数据被写入保护页面,这意味着它显然仍然是可写的。
如何仅使用精灵部分标记(或类似的精灵属性)使这样的部分变得无法接受?
答案 0 :(得分:0)
我能找到的最接近的是使用ELF LOAD程序标题,并将FLAGS设置为0。
参见"保留" Chromium NACL链接描述文件中的PHDR:https://src.chromium.org/native_client/trunk/src/native_client/src/trusted/service_runtime/linux/nacl_bootstrap.x