【问题标题】:How to extract bits from binary executable [closed]如何从二进制可执行文件中提取位[关闭]
【发布时间】:2013-03-29 02:02:41
【问题描述】:

对于一个研究项目,我需要对应用程序的“可执行足迹”进行哈希处理。我没有关于这个特定领域的广泛知识库。 例如,我尝试过cat bash,stdout 打印 gobbledygook。 如何将可执行文件读取为正常的 1 和 0?

【问题讨论】:

  • 可执行文件不包含“正常的一和零”(称为binary,顺便说一句)。您必须读取单个字节(现代操作系统上为 8 位)并将它们转换为人眼的二进制表示。可执行文件不像书籍或文本文件那样“可读”。
  • 看看uuencode,它可能会为您的二进制文件提供更易于管理的表示(即纯文本)。当然,这是否有用取决于您所说的“可执行足迹”。

标签: binary executable cat


【解决方案1】:

如果您想从文件中获取二进制表示形式,可以使用以下 python 脚本调用它,使用 python to_binary.py name_of_file

import sys

def bin(x):
    return "".join(x & (1 << i) and "1" or "0" for i in range(7,-1,-1)) 

file = open(sys.argv[1], "rb")
contents = file.read()
file.close()

for byte in contents:
    sys.stdout.write(bin(ord(byte)))
sys.stdout.write("\n")

【讨论】:

  • 我试过你的代码,它似乎工作正常,当然我不能确定。假设这个脚本每次在同一个文件上运行时都会返回相同的二进制序列并且每个可执行文件都会返回不同的,我是否正确?
  • 是的,代码为文件生成比特流。对于不同的文件内容,会生成不同的流。
  • 谢谢。这是完美的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
相关资源
最近更新 更多