C 使用十六进制编辑器在库中修改环境变量名?

C 使用十六进制编辑器在库中修改环境变量名?,c,linux,binary,shared-libraries,hex,C,Linux,Binary,Shared Libraries,Hex,是否可以使用某种编辑器在库中修改环境变量的名称。我在想也许是个十六进制编辑器 我希望修改名称,但不改变其长度: envfoobar(9个字符) 黄条(9个字符) 显然,重新编译是完美的,但我不知道编译这个库时使用了哪些确切的标志。什么阻止了您?您甚至可以使用文本编辑器(只要它是一个像样的编辑器,并且知道如何处理二进制数据,就像vim一样)。如果库通过字符串引用环境变量的名称,并且该字符串位于数据段的库中(即,它不是在运行时生成的字符串),那么以这种方式编辑库是很简单的。只是不要删除或引入新字符。

是否可以使用某种编辑器在库中修改环境变量的名称。我在想也许是个十六进制编辑器

我希望修改名称,但不改变其长度: envfoobar(9个字符) 黄条(9个字符)


显然,重新编译是完美的,但我不知道编译这个库时使用了哪些确切的标志。

什么阻止了您?您甚至可以使用文本编辑器(只要它是一个像样的编辑器,并且知道如何处理二进制数据,就像vim一样)。如果库通过字符串引用环境变量的名称,并且该字符串位于数据段的库中(即,它不是在运行时生成的字符串),那么以这种方式编辑库是很简单的。只是不要删除或引入新字符。我在Linux下做过这件事。其他一些操作系统可能会对二进制文件进行数字签名,并阻止其工作。有些操作系统使用标准校验和或哈希,在这种情况下,您必须重新计算它。

什么阻止了您?您甚至可以使用文本编辑器(只要它是一个像样的编辑器,并且知道如何处理二进制数据,就像vim一样)。如果库通过字符串引用环境变量的名称,并且该字符串位于数据段的库中(即,它不是在运行时生成的字符串),那么以这种方式编辑库是很简单的。只是不要删除或引入新字符。我在Linux下做过这件事。其他一些操作系统可能会对二进制文件进行数字签名,并阻止其工作。有些操作系统使用标准校验和或散列,在这种情况下,您必须重新计算它。

如果您可以使用库中的strings命令找到名称,它可能会工作。您可以在您最喜欢的十六进制编辑器中加载库,更改字符串并对其进行尝试


这是一件令人讨厌的事情,但它可以奏效。让我们知道。

如果您可以在库中使用strings命令找到名称,它可能会起作用。您可以在您最喜欢的十六进制编辑器中加载库,更改字符串并对其进行尝试


这是一件令人讨厌的事情,但它可以奏效。让我们知道。

你抢先了我一步,我在为我的日常工作做实际工作。他为linux添加了标签,所以vim应该可以正常工作。我使用了GHex,测试了它,它可以正常工作。一个简单的搜索和替换完成了任务。谢谢你。你比我早了一步,我在为我的日常工作做实际的工作。他为linux添加了标签,所以vim应该可以正常工作。我使用了GHex,测试了它,它可以正常工作。一个简单的搜索和替换完成了任务。谢谢。您是指环境变量(通过
getenv
或类似方式访问)还是库中的全局变量(如标准库中的
errno
)?您是指环境变量(通过
getenv
或类似方式访问)还是库中的全局变量(如标准库中的
errno
)?