请教如何使用 Python 直接对二进制文件进行修改

2020-10-29 09:08:16 +08:00
 v2410117

刚接触 python 不久,想用 python 直接修改二进制文件中的某段字符串内容,在网上查询使用fopen然后用seek定位,write写入.我测试过确实能达到效果。

但是如果替换的长度不一样,比如本来的字符串为test,我用上面的方法想替换成mytest,因为长度比原来的长,就替换不成功,本来我想的是,在内存里找一块空的地址,写入mytest,然后将地址替换到test里面,虽然想的很美好,但是实在不会操作,特来请教一下这种替换长度不一致的,该如何操作,提前致谢

4251 次点击
所在节点    Python
22 条回复
xcai007
2020-10-29 18:05:02 +08:00
用 mmap

import mmap
with open('file', 'rb) as f:
with mmap.mmap(f.fileno(), length=0, access=mmap.ACCESS_READ) as contents:
start = contents.find('test')
print(contents[:start]+'mytest'+contents[start+len('test'):]
Owenjia
2020-10-29 23:11:51 +08:00
修改 elf 文件的话可以看下 lief 这个库?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/719647

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX