更改linux二进制elf文件中的strcpy参数

时间:2017-10-19 17:41:29

标签: c binary elf

我面临以下问题:我有一个已编译的c程序。我需要更改二进制可执行文件中的一个参数。我知道如何在linux中为普通变量执行此操作,编辑十六进制代码。我的问题是,是否有修改strcpy参数内容的解决方案:

strcpy(outSig, "test.examples.out");

所以我需要用elf二进制文件中的另一个字符串(相同的长度)替换test.examples.out。这可能吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果你能识别二进制文件中的位置" test.examples.out"如果新字符串比当前字符串长,则可以用新字符串替换它。

如果新字符串与旧字符串的长度相同,则只需替换相关字符即可。如果它更短,则使用值0填充额外的字节。这样,字符串仍然正确地以空值终止,并且在其上运行的任何字符串函数都不应该读取超过第一个空字节。

请务必使用正确的十六进制编辑器,以便正确保留所有字节,而不是像文本编辑器那样重新解释。