识别文件的性质和内容

逆向工程 二元分析 文件格式
2021-07-09 19:52:14

作为前言,我没有任何逆向工程经验我是一名应用程序开发人员,所以这个领域超出了我的专业领域。我的最终目标是根据这些信息创建一个网页,但这是我面临的第一个障碍:首先获取所需的数据。

我目前正在尝试确定我怀疑可能被加密和/或压缩的文件的性质(我仍在尝试了解文件被加密/压缩的迹象)。由于这远远超出了我目前所能做的范围,如果有人可以提供帮助或至少提供一些指导,那就太好了。

这是一个示例文件(如果您需要更多示例,请告诉我):

https://drive.google.com/file/d/1vwt4G55E-TaGvuWM86L6S-7Sbd2o0gOp/view?usp=sharing

到目前为止,这是我所知道和尝试的:

  • 文件很可能是 JSON 或 CSV(不是 100% 确定,但所有其他未加密的元数据文件都是 JSON/CSV 格式)
  • File 有很多重复的 binary 集,ef bf bd我假设它们只是填充或试图混淆?
  • 大多数相应的十六进制并没有真正转换为一组可读的标准编码,例如 UTF-8

任何帮助/指导将不胜感激。

1个回答

当给定一个未知文件时,您可以做几件事:

  1. 确定文件是二进制格式(原始字节)还是文本格式。为此目的,任何十六进制/文本编辑器都应该足够了。

  2. 如果文件是二进制文件 - 它里面可能有文本字符串,这可以帮助理解文件的性质。在您的情况下,文件中没有出现文本字符串。

  3. 一些二进制文件具有“魔法值”——有助于了解它是哪种文件格式的标识符。例如 -ELF文件格式的前 4 个字节将始终为.ELF. 在您的情况下,文件开头与CE A3 EF BF任何已知格式都不对应。

  4. 下一步将是使用二进制工具(如binwalk)来识别任何压缩/内部文件/对象。在这种情况下,它不会产生任何结果。

  5. 下一步将是计算文件的熵。可以通过binwalk -E <file>. 在这种情况下,它产生 0.52 - 它的熵越高,文件被加密/混淆的机会就越大。在这里,看起来熵不高,这意味着文件没有被加密/混淆。

所以总的来说,它看起来只是一种自定义的二进制文件格式。为了继续调查,您需要了解哪个程序正在使用该文件 - 以及用于什么目的,并继续逆向工程过程,通常基于静态反汇编程序IDA PRO或免费的Ghidra.