我希望你会发现你在 RE.SE 中的经历是愉快的和有教育意义的 :) 逆向工程通常是作为一种爱好来研究的,所以你们相处得很好!
IDA pro 是一个反汇编器,专注于逆向工程/读取汇编/机器代码。即 - CPU 实际执行的代码。由于看起来您只获得了一个格式文件,而没有任何用于操作/处理文件的可执行代码,因此 IDA 将被证明不太有用。
相反,假设格式确实是专有的,执行此类任务所需的唯一工具是十六进制编辑器/阅读器。010 Editor是一个很棒的编辑器,它有一个试用版。
为了消除已知格式的可能性,尝试运行了几个文件识别工具,如Linux的file命令,论坛报,binwalk等,这些会尝试识别常见的文件格式(binwalk是专门针对压缩格式),而如果提供任何洞察力应该为您指明正确的方向。
要仅基于单个文件内容对文件格式进行逆向工程,您需要绘制文件的表观结构,而且您没有太多可参考的内容。排除文本和非常简单的文件格式,如果没有任何额外的资源(更多文件,以任何方式处理格式的程序等),这应该有点困难。
以下是一些提示/提示列表,但您可能会在网上找到更多信息:
- 由于大多数文件以标头开头,因此您应该首先映射标头结构的不同成员。
- 魔术值、字符串、偏移量和大小的东西很容易识别。大多数体面的十六进制编辑器会显示每隔几个字节的不同表示,因此很容易识别。
- 在尝试理解它们的含义之前,首先将字节划分为不同的成员。例如,给定以下十六进制流:
00 05 00 00 00 01 BE F1 CA D7很容易注意到成员是一个字(2 个字节)、一个双字(4 个字节)和另一个双字。也有可能前两个是整数,而第三个是魔术值或 CRC。
- 如果文件有任何重复的分隔符值,这些值也应该很容易识别(尽管不太可能出现在活动文件格式中)。
- 如果您设法识别任何其他文件头(可能使用它们自己的魔法值),那么这些是确定实际文件内容放置位置的好方法。这也意味着存档文件不会压缩包含的文件,例如 linux 的 tar 可以做到这一点。或者,如果您遇到长流的平滑或随机的二进制流,它们可能是实际的压缩数据。我倾向于相信你的老师没有发明他自己的压缩算法,所以你需要找到与其他压缩算法的相似之处,也许在 TrID 和文件下再次运行这些流会有所帮助。
- 例如,常见的外观模式可能是发现重复结构的一种有用方法(您将有多个参考点,是的!)。例如,如果您识别出每个文件名字符串后跟具有相似结构的字节序列,则它们可能是同一结构的两个实例。