gpt4 book ai didi

c - 编辑库存档中的字符串(filename.a)

转载 作者:行者123 更新时间:2023-11-30 20:15:54 25 4
gpt4 key购买 nike

我已经编译了C库,并且我有文件库示例filelib.a,并且我想编辑filelib.a中的字符串,因为我的源代码C已从我的PC中删除,我想在那里编辑字符串,在文件 filelib.a 有字符串“article saw”。如果我 grep:

$ grep -R "/etc/resolv.conf" *
Binary file filelib.a matches
Binary file filelib.so matches

所以文件filelib.a和filelib.so中有字符串“/etc/resolv.conf”。如何编辑和替换二进制文件filelib.a和filelib.so中的字符串,例如我想将字符串“/etc/resolv.conf”替换为“/system/etc/resolv.conf”

我使用十六进制编辑器 BLESS 进行编辑,但如果我使用此库,则会出现错误:

could not read symbols: Malformed archive
collect2: error: ld returned 1 exit status

我使用的是linux ubuntu。

谢谢。

最佳答案

如果您确实没有丝毫机会获取/恢复源代码,并且新字符串与原始字符串相同或更短,您可以使用十六进制编辑器,对字符串进行 binpatch,如果它比以前短,则用零填充(必须始终有至少一个终止零字节)。

如果您想将字符串更改为更长的字符串,这并不容易 - 您最好的机会可能是提取存档,反汇编要在其中进行更改的目标文件,更改程序集,然后重新组装并使用ar 更新库中修改后的目标文件。

关于c - 编辑库存档中的字符串(filename.a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15587010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com