我希望能够在可执行文件(C程序)中的char数组中存储一些配置信息。我需要在运行时修改该数组的内容。 但我无法从该过程中打开该文件。 那么......是否有可能,如果是 - 这是什么诀窍? 非常感谢提前。
[1]问题是如何做到不这是一个好主意吗?
[2]我想在运行时写入'自己的EXEC',因为我很好奇如何做到这一点。让我们把它想象成一个黑客攻击。
答案 0 :(得分:0)
写入可执行文件几乎肯定是错误的。这里最简单的方法是使用配置文件,并从中读取到您的char数组中。
答案 1 :(得分:0)
既然你已经知道这是一个坏主意,我再也不会再说了。
您最好阅读有关可执行文件格式的内容。该文件可能是ELF格式,但您可以使用file
命令进行检查。
通常,文件是按部分构建的,每个变量在部分中都有一个偏移量
nm
命令可以告诉您给定符号的部分和偏移量
每个部分都从文件中的给定偏移量开始。我认为objdump
命令可以找到这些偏移量。
它不适用于BSS部分中的符号(未初始化的静态变量) - 这些符号的值不存储在文件中 - 只是在加载时应该分配它们。
一旦你有了这些偏移,一切都很简单 - 添加它们,打开,寻找,写入,关闭。
答案 2 :(得分:0)
解决。 使用fork()+ execl()组合我制作一个可执行文件的副本,修改它没有任何问题,然后使用fork + execl mv我用修改后的可执行文件替换原始可执行文件。