现代操作系统具有内存保护功能,如数据执行保护,数据无执行位,文本/代码段为只读位等。 br />当代码页被标记为“只读”并且数据页被标记为“不执行”时,打包程序在哪里解压缩/加密的二进制文件?

#1 楼

解压缩程序将向操作系统请求标记为“写入”的内存页面,并将代码解压缩到其中。解压缩完成后,它将在Windows上使用VirtualProtect或在posix兼容系统上使用mprotect将保护位更改为只读并执行(或首先将页面分配为可读写+执行,然后跳过使其变为读写+执行-only)。

换句话说,应用程序对保护位获得了足够的控制权,可以执行运行时代码。

评论


或者(对于Windows),将其解压缩到现有的PE部分中,其特征标记为RWX,从而让PE加载程序执行页面保护工作。

–詹森·格夫纳(Jason Geffner)
16年1月7日在14:33