C 在不导致分段错误的情况下修改二进制文件

C 在不导致分段错误的情况下修改二进制文件,c,binary,segmentation-fault,glibmm,C,Binary,Segmentation Fault,Glibmm,我是修补二进制文件的新手,但我真的很想在我的系统上安装一个软件包。我试图修改一个二进制软件包来修复一个旧的链接。二进制文件正在尝试查找符号\u ZN4Glib23spawn\u命令行\u syncerksspss2\u Pi,但是glibmm库已更改,因此尝试运行此程序失败,出现符号查找错误。通过查看glibmm库,我找到了新的符号\u ZN4Glib23spawn\u命令行\u syncERKNSt7\u cx1112基本\u stringIcSt11char\u traitssiceeep5

我是修补二进制文件的新手,但我真的很想在我的系统上安装一个软件包。我试图修改一个二进制软件包来修复一个旧的链接。二进制文件正在尝试查找符号
\u ZN4Glib23spawn\u命令行\u syncerksspss2\u Pi
,但是
glibmm
库已更改,因此尝试运行此程序失败,出现符号查找错误。通过查看
glibmm
库,我找到了新的符号
\u ZN4Glib23spawn\u命令行\u syncERKNSt7\u cx1112基本\u stringIcSt11char\u traitssiceeep5\u S8\u Pi
。然后我尝试用新的符号字符串替换旧的符号字符串来修改二进制文件(使用
vim
——这可能是个问题);但是,这会导致分段错误。我发现,只要保持符号的大小不变,就不会发生这种情况

如何在不引起分段错误的情况下更改二进制文件中的此符号


我也不知道这是否会解决问题或导致更多的问题,因此我们非常感谢您的帮助。

即使您成功更改了符号的名称,也不太可能真正起作用。最好的办法是重新编译整个程序或查找较旧的库(如果需要,可以使用源代码)。此外,符号解析实际上是使用哈希完成的:@flex重新编译是不可能的,因为我没有源代码。看起来唯一的方法就是降低库的级别…见鬼