如何对专有数据文件格式(例如 Smartboard Notebook)进行逆向工程?

逆向工程 文件格式
2021-06-10 01:41:46

我应该如何开始尝试对这种文件格式进行逆向工程?我唯一能想到的就是保存一个简单的文件,然后使用十六进制编辑器进行挖掘。但由于文件格式可能是某种存档,这似乎是错误的方法。我一直对逆向工程文件格式的想法有点兴趣,但我从未真正尝试过。我应该如何开始?

特别是,我对Smart Notebook感兴趣,它可以将数据加载和保存到 .notebook 文件中。这是一种未公开的专有文件格式。SMART 是白板的领先制造商,因此他们的笔记本软件是最流行的教育(演示)内容格式之一。白板文件和Open Sankore有一个开放标准是一个可以打开和保存它们的开源程序。但是,Smart Notebook 并不完全兼容开放式白板格式,所以我真的很想了解 .notebook 文件格式,以便我可以编写利用它的软件。开放式展台(.iwb 文件)是包含图像和 SVG 数据的 zip 档案。我突然想到 .notebook 文件也可能被压缩或至少在其中包含许多子文件(如图像和 swf 文件)。

2个回答

abc chant.notebook从网站 cb88下载链接到:

$ file "abc chant.notebook"
abc chant.notebook: Zip archive data, at least v2.0 to extract
$ unzip -t "abc chant.notebook" 
Archive:  abc chant.notebook
    testing: images/temp(1).png       OK
    ... about 200 similar lines ...
    testing: attachments/Zachary.JPG   OK
No errors detected in compressed data of abc chant.notebook.
$

它是一个有效的 zip 文件,主要包含 XML 和图像文件。.notebook您所指文件与此文件不同吗?如果是这样,你能上传一个样本吗?

我知道这并没有真正进入反转专有文件格式背后的过程,对此我深表歉意。希望其他人可以在这方面提供更有趣的答案。

嗯,显然这些细节在很大程度上取决于文件格式的细节以及您希望实现的总体目标。但是,某些步骤在很大程度上是相同的。你可以做的一件事是:

  1. 努力寻找有关格式的各种线索。这可以是某个公告板中的一个小注释,也可以是某个已消失的旧网站的缓存副本。当您正在寻找足够具体的内容时,这些宝石通常不会作为热门搜索结果弹出。清除搜索结果页面是有意义的也请确保使用诸如file寻找魔术字节之类的工具,并且能够识别肉眼不明显的东西。
  2. 找到一个使用该格式并能够读/写它的专有程序(您似乎拥有该格式)
    1. 使用试错技术,例如对文档进行不同的更改,保存它们并观察并记下差异,AFAIK 这就是最初为 StarSuite(现在是 OOo 和 LibreOffice)解码 MS Office 文件格式的方式
    2. 对程序本身进行逆向工程以找到读取和写入数据格式的核心例程
  3. 用同样的方法找到一个开源程序 -> 阅读它的源代码

如果您了解编写选项 3 中的程序所用的语言,则完全没有问题。如果你没有那个,或者如果你面临其他挑战,那么你必须求助于第 2 点中概述的旧技术,用你用方法 1 收集的碎片修补差距。

第 2.1 点应该是显而易见的:您想了解递归文本是如何编码的吗?输入一些文本,格式化,保存,观察变化。冲洗,起泡,重复。

第 2.2 点将需要更多的努力,并且应该很少使用,以确保您从 2.1 中获得正确的细节。