【问题标题】:How to reverse engineer a database file format?如何对数据库文件格式进行逆向工程?
【发布时间】:2015-12-20 20:56:52
【问题描述】:

它是一个会计数据库,其数据库文件格式是专有数据。但问题是数据库非常不可靠,损坏多年后被忽视,之后恢复数据变得难以忍受,我们维护了很多公司的帐户,因此反转格式将非常有用。此外,该软件是 odbc 兼容的,这可能对逆转它非常有帮助。该软件是部分开源的,即除了数据库引擎之外,所有内容都是开源的(并且完全可定制),尽管它们有自己不同的语言。
我没有倒车的经验。我们希望以这样一种方式反转它,以便我们可以直接以该格式写入数据。所以我想知道我在哪里可以获得工具以及我应该如何处理这个问题,任何文章或视频都会很棒。

【问题讨论】:

  • 是哪个 DBMS 数据库?
  • 在手册中它声明它是分层的,但是当与 odbc 一起使用时,我发现它是关系的。
  • 是 Oracle DB、SQL Server DB 还是 MySQL 还是什么......?
  • 这是一种专有的数据库格式。
  • 对非常常用的 DBMS 的数据库进行改造工程非常困难。虽然对这家特定公司的数据库进行重新设计可能更容易,但您永远无法真正确定自己做对了。因此,您最好将数据导出为 .txt 文件并压缩并存储它们。

标签: database reverse file-format


【解决方案1】:

通常它不是那么“难”。例如,我喜欢混合解决方案:

  1. 基本目标文件分析:熵、签名等。用一些十六进制编辑器查看可能的块是个好主意(准备好长时间使用十六进制编辑器),我建议you 010 Editor 里面有模板/脚本。基本目标应用程序分析:您需要了解它是如何编写的(语言、框架、库等),这对后续步骤非常有用。

  2. 可以打开此文件格式的应用程序的经典修订工程。使用 IDA Pro + Hex-Rays 之类的东西(但要准备好花很多钱)生成类 C 源的最佳方法。您可以中断目标文件(更改/窃取一些字节)并中断目标应用程序中的异常,例如,开始探索。

  3. 尝试使用 FileMon(现在它是 ProcMon 的一部分)来了解目标应用程序如何读取目标文件。有时这是可能的(某些应用程序根本不使用读取缓冲区,因此,您会看到小读数 + 调用堆栈进行探索!)。

  4. 在某些情况下可以为您提供帮助的不同工具。

最重要的是,上传一些数据库和应用程序示例并提供链接。我们可以尝试一起做,为别人写一个小教程。

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2022-01-20
    • 2014-02-22
    • 2010-10-04
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多