如何对数据库文件格式进行逆向工程?

逆向工程 二元分析 工具 文件格式
2021-06-17 03:52:41

它是一个会计数据库,其数据库文件格式为专有数据。但问题是数据库非常不可靠,损坏被忽视多年之后恢复数据变得难以忍受,我们维护着许多公司的帐户,因此反转格式将非常有用。此外,该软件是 odbc 兼容的,这可能非常有助于逆转它。该软件是部分开源的,即除了数据库引擎之外,一切都是开源的(并且完全可定制),尽管它们有自己的不同语言。
我没有倒车经验。我们希望以这样的方式反转它,以便我们可以直接以该格式写入数据。

1个回答

如果没有文档,如果不对数据库引擎进行逆向工程,几乎没有机会反转文件格式。尤其是写文件将是一场噩梦。

例如,(非常旧的)dBase II 文件格式很容易阅读,因为数据本身是以一种非常基本的格式存储的,对于读取数据库,您可以忽略所有索引内容,您只需读取数据记录. 索引文件的格式要复杂得多,因为它们(可能)是二叉 b 树,如果你想写东西,你也需要得到正确的索引。

现在,在您的情况下,如果“数据库非常不可靠,多年来都没有注意到损坏”,那么似乎即使是软件和文件格式的原始设计者也没有把事情做好,至少在某些极端情况下是这样。这意味着您无法在不投入大量精力和金钱的情况下解决此问题- 我们可能已经讨论了多个开发人员几年了。

如果您的软件与 ODBC 兼容,那么通过将不同的 ODBC 后端插入您的软件前端,您可能会有更大的成功机会。如果您的软件使用特定数据库的高级功能(祝您在 MS SQL 服务器上运行 oracle 存储过程时好运),这将失败,但如果您的软件不使用基本的 sql 语句,这至少可能有效。