0

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

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

原谅任何悬而未决的冗长和/或修订。

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

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

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

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

通过将某些分类文件输入系统,我对它期望的文件类型有了一些了解:

  1. 我“导入”一个零字节文件。什么都没有发生(与打印没有数据的报告相同)
  2. 我“导入”了一个我猜可能看起来像系统期望的 XML 文件。它以异常对话框和堆栈跟踪响应。显然字符串<?xml包含非法字符或东西
  3. 我“导入”了一个 jpeg 图像——结果与 #2 类似。

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

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

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

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

提前致谢。


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

4

1 回答 1

2

如果您有示例文件,您可以尝试使用 hexdump 实用程序并尝试查看是否有您可以识别的内容。您拥有的任何其他信息(文件中应该包含的内容)都会对此有所帮助。更好的是,如果您知道可以编辑文件的程序,您可以使用编辑器进行最小的更改,然后比较前后的文件。

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

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

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

于 2013-10-09T11:17:21.683 回答