如何对废弃的 pascal 应用程序的"import file"功能进行逆向工程?



我问过的第一个问题,我不知道如何清楚地问出来,或者是否会有一个我想听到的答案;)

tl;dr:"我想在工作中将文件导入到我的应用程序中,但我不知道输入格式。我怎么能发现它呢?

原谅任何未决的冗长和/或编辑。

在我的工作中,我依赖于用Pascal编写的不受支持的(和专有的(应用程序。我没有使用pascal的经验(还...(,自然也无法访问源代码。这是一个优秀的(我认为是非常秘密的/NDA类型的交易(应用程序,使我们能够处理雇主组织中的库存和财务问题。它的功能非常全面,相当稳定和健壮,并且有点像更高的力量对我们施加了(单词?

它具有的一个出色功能是能够将"时间表"加载到我们的公司系统中。此功能应该为我们节省数百小时的数据输入时间。但事实并非如此。问题是,我们收到的时间表是以人眼的传统格式编写的。"新"系统无法解释它们。

我们当前的信息(我必须阅读,然后手动重新输入数据库(以一种富文本平面文件格式发送,这很容易用可能任何主流语言的字符串库进行解析。

所以我想写一个转换器,将我们的数据转换为新软件可以解释的格式。

通过将某些分类文件输入系统,我已经了解了一些它需要什么样的文件:

  1. 我"导入"了一个零字节文件。没有任何反应(与打印没有数据的报表相同(
  2. 我"导入"了一个XML文件,我想它可能看起来像系统期望的那样。它使用异常对话框和堆栈跟踪进行响应。显然字符串<?xml包含非法字符或其他内容
  3. 我"导入"了一个 jpeg 图像——与 #2 的结果类似。

所以我认为我的目标本身想要一个平面文件。该文件需要包含"文档编号"以及 {带有"事件 ID"、描述和数值的条目}。但我不确定这一点。

没有人能够确切地告诉我这些文件应该是什么样子。知情人士说他们已经看到了演示的功能 - 在某个地方有一个实用程序可以创建我的可导入时间表。但就目前而言,效用已经丢失,我只能靠自己了。

我可以使用哪些方法来确定输入文件格式?我对调试 pascal 一无所知,但我认为这可能是我最好的选择。还是我必须继续使用蛮力,直到我买得起一百万台猴子操作的打字机?我是否必须反编译目标应用程序?我不知道我是否可以侥幸逃脱,更不用说阅读反编译的源代码了。

我的谷歌福让我失望了。以前有没有人做过这样的事情,或者他们可以指出我正确的方向吗?有关于这个主题的指南吗?

提前谢谢。


PS:我确信我在这一点上没有违反任何法律,尽管我必须检查一下反编译是否会给我带来麻烦,这可能超出了我的技术能力。

如果你有一个示例文件,你可以尝试使用十六进制转储实用程序,并尝试看看是否有你可以识别的东西。您拥有的任何其他信息(文件中应该包含的内容(对此有所帮助。更好的是,如果您知道可以编辑文件的程序,则可以使用编辑器进行最小的更改,然后比较前后的文件。

二进制文件格式逆向工程的IOW标准技巧。

。如果您没有任何现有文件,那么对二进制文件进行逆向工程是您唯一的选择,这并不漂亮。原生二进制文件的反编译是一门需要大量时间和技能的黑艺术。阅读网络上的各种反编译常见问题解答。

首先,我会尝试联系该程序的作者。源代码是选项 1,2,3,只有在真的、真的、真的没有任何希望获得源代码或获得正常支持的情况下,你才会选择其他选项。

最新更新