什么是 PIE 保护呢?这是官方的解释:
PIE 全称是 position-independent executable,中文解释为地址无关可执行文件,该技术是一个针对代码段(. text)、数据段(. data)、未初始化全局变量段(. bss)等固定地址的一个防护技术,如果程序开启了 PIE 保护的话,在每次加载程序时都变换加载地址,从而不能通过 ROPgadget 等一些工具来帮助解题。
下面我们来看一个未开启 pie 保护的文件,常规操作,下载下来后首先 checksec 检查一下文件保护,没有开启 PIE 保护,这时我们注意到 NO PIE 后面还有一个地址 0x400000,这个地址是程序的加载基址