首页 > 解决方案 > 是否可以将 no-pie 可执行文件转换为没有源代码的 pie 可执行文件?

问题描述

我想使用lief将可执行文件转换为共享库,我注意到它只支持pie可执行文件。所以我想知道是否有一种方法可以将 no-pie 可执行文件转换为 pie 可执行文件。

标签: c

解决方案


不,没有,除非-q在链接时使用了模糊选项。ET_EXECELF 文件针对特定的加载地址进行链接,并在其指令流中将地址引用解析并最终确定为立即数,并在其数据部分中以纯数字形式存在。这些数字指的是对象或函数的地址,而不仅仅是普通的常量数字的信息已经丢失并且从根本上无法恢复。另一方面,PIE 可执行文件在所有地址引用上都有动态重定位记录,因此可以在加载时对其进行修补,并且通常在数据段(GOT 或静态数据)中包含所有此类引用,因此文本段是纯粹的只读和可共享。

所以不,没有办法做你想做的事。


推荐阅读