0

我在 Visual Studio、MFC 等方面的编码经验几乎为零。但是我有几个数据文件是在一个现已失效的 MFC 应用程序中创建的,我需要将它们迁移到另一种格式。

不幸的是,在应用程序本身中确实没有好的方法来提取数据(缺少单独复制粘贴数百甚至数千条记录)。事实证明,在十六进制编辑器中查看文件本身是徒劳的;即使应用程序存储的原始数据是基于文本的,数据库文件也以某种神秘的二进制格式编码。

到目前为止,我已经能够确定该应用程序是使用 MFC 编写的,并且它使用 CDocument 类(或其简单派生类)来存储文件。我知道基于 CDocument 的数据文件与序列化数据有关,但我不确定如何理解编码。

  1. 有没有人足够了解 MFC 来向我解释 CDocument 的实际工作原理?

  2. 有人对我如何能够解码这些文件以提取文本有任何想法吗?

4

1 回答 1

1

我曾经遇到过几乎相同的情况。我最终制定了反序列化数据的代码,但这并不容易。

编写一个小型 MFC 应用程序来完成这项工作,这样您就可以利用原始应用程序使用的相同序列化代码。逆向工程数据格式的主题太复杂了,无法在这里回答。它可能没有加密;更有可能被压缩。

如果您是一位经验丰富的程序员,您应该能够阅读 MFC 源代码,然后将这些知识应用于原始数据。不是所有的事情都可以通过观察原始数据来启发式地确定,但如果你有一种独立的方式来确定实际内容,那么通过足够的工作肯定是可能的。

于 2013-02-01T05:33:16.380 回答