最近我一直在为图形计算器程序编写压缩器,其中空间很小,计算器操作系统不在乎您是否将指令指针设置为任意地址。
我实现了基本的 DEFLATE,然后尝试在谷歌上搜索压缩算法,这些算法可能在可执行代码上效果更好。
但这是我的问题:任何带有 DEP 的现代操作系统都不允许程序执行提取的代码(至少不是直接执行)。那么,所有"打包的可执行文件"是否仅限于解压缩数据,或者让未压缩的解释器运行提取的代码,或者介于两者之间?
任何带有 DEP 的现代操作系统都不会禁止程序执行提取的代码(至少不是直接执行)
不那么直接当然没有问题。即使使用 W^X,解包器也可以简单地将代码写入可写内存,然后才将其转换为可执行内存。
尽管在许多操作系统上,即使有 DEP 支持,也允许程序分配可写和可执行的内存。DEP 不会阻止您做您有权做的事情。