最近我一直致力于为计算器程序编写compressor,其中空间很小,如果将指令指针设置为任意地址,计算器操作系统并不在意。
我实现了基本的DEFLATE,然后尝试使用谷歌来获取可能在可执行代码上更好的压缩算法。
但是我的问题是:任何带DEP的现代操作系统都不允许程序执行提取的代码(至少不是直接)。那么所有“打包的可执行文件”仅限于解压缩数据,还是让未压缩的解释器运行提取的代码,或介于两者之间?
答案 0 :(得分:2)
任何具有DEP的现代操作系统都不允许程序执行提取的代码(至少不能直接执行)
不那么直接,当然没有问题。即使使用W ^ X,解包器也可以简单地将代码写入可写内存,只有然后将其转换为可执行内存。
虽然在许多操作系统上,即使支持DEP,程序也可以分配可写和可执行的内存。 DEP不会阻止你做你有权做的事情。