【发布时间】:2017-04-13 09:41:48
【问题描述】:
我想覆盖二进制文件中特定offset 的单个字节。 cval 的值是一个整数。
为此,我编写了以下代码:
f = open(program, "wb")
f.seek(offset, 0) # absolute
#print(f.read(1))
f.write(bytes([cval]))
f.close()
代码在读取offset 处的字节时运行良好,但写入该位置会导致objdump 无法识别ELF 二进制文件。
mfo@mfo-Ubuntu:~/llvm-ir-obfuscation/checker$ objdump -dF fac_c
objdump: fac_c: File format not recognized
我看不出我做错了什么?
【问题讨论】:
-
你确定你没有写在一些标题?
-
当我执行
f.read(1)时,我在.text部分正确读取了该位。然而,写操作不知何故把事情搞砸了。 -
你真的应该因为在发布这个问题之前没有检查你的“无法识别”的文件大小而被否决。
标签: python linux python-3.x