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

标签 c binary elf

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

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

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

感谢您的帮助

最佳答案

如果您可以识别二进制文件中“test.examples.out”所在的位置,则可以将其替换为新字符串,假设新字符串长于当前字符串。

如果新字符串与旧字符串长度相同,只需替换相关字符即可。如果它更短,则用值 0 填充额外的字节。这样,字符串仍然正确地以 null 结尾,并且对其进行操作的任何字符串函数都不应读取超过第一个 null 字节的内容。

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

关于更改linux二进制elf文件中的strcpy参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46835841/

相关文章:

c - 使用 openMP 进行 Boyer moore 字符串搜索

c - 在函数中设置字符串值不起作用

c# - ascii byte[] 和 int 之间直接转换

java - 如何在java中以反向字节顺序读取BDC时间?

c++ - 有没有一种聪明的方法可以将整数中的 "double up"位?

arm - 从 linux 交叉编译到 ARM-ELF (armv5tejl )

c - 随机猜谜游戏 - bug

c - 将循环计数器字符串化以引用 C 结构体的成员

gdb - 在 gdb 中为文件添加自己的符号

linux - 我可以在汇编源代码和 ld 脚本中声明自己的部分吗?