-2

我希望能够将一些配置信息存储在可执行文件(C 程序)内的 char 数组中。而且我需要在运行时修改该数组的内容。但我无法从进程中打开文件。所以...有可能吗?如果是的话——有什么诀窍?提前谢谢了。

[1] 问题是如何做而不是一个好主意吗?

[2] 我想在运行时写入 PROCESS' OWN EXEC 只是因为我很好奇如何做到这一点。让我们把它想象成有点 o hacking。

4

3 回答 3

1

解决了。使用 fork() + execl() 组合我制作了可执行文件的副本,修改它没有任何问题,然后使用 fork + execl mv 我将原始可执行文件替换为修改后的可执行文件。

于 2013-02-06T19:35:05.843 回答
0

既然你已经知道这是个坏主意,我就不再费心说了。

您最好阅读一些有关可执行文件格式的信息。该文件可能是 ELF 格式,但您可以使用file命令检查它。

一般来说,一个文件是分节构建的,每个变量在节内都有一个偏移量。
nm命令可以告诉您给定符号的部分和偏移量。
每个部分都从文件中的给定偏移量开始。我认为该objdump命令可以找到这些偏移量。

它不适用于 BSS 部分中的符号(未初始化的静态变量) - 这些值不存储在文件中 - 只是它们应该在加载时分配的事实。

一旦你有了这些偏移量,一切都很简单——添加它们、打开、查找、写入、关闭。

于 2013-02-06T11:46:15.333 回答
0

写入可执行文件几乎肯定是错误的做法。这里最简单的方法是使用配置文件,然后将其读取到您的 char 数组中。

于 2013-02-06T11:17:30.600 回答