我继承目前正使用传统文件格式来存储数据的一个项目,我有机会获得数据进入该文件格式,生成的文件,但我没有访问模板,我需要重新创建它。二进制模板文件
请告诉我去逆向工程二进制文件的最佳方式是什么?我如何弄清楚使用什么语言/加密,或者我甚至需要?一旦我做了,什么是最好的程序(免费,首选)来获取信息?这是在Windows系统上,但我运行了一个OpenSUSE linux框,我不反对使用这个问题的帮助。
我继承目前正使用传统文件格式来存储数据的一个项目,我有机会获得数据进入该文件格式,生成的文件,但我没有访问模板,我需要重新创建它。二进制模板文件
请告诉我去逆向工程二进制文件的最佳方式是什么?我如何弄清楚使用什么语言/加密,或者我甚至需要?一旦我做了,什么是最好的程序(免费,首选)来获取信息?这是在Windows系统上,但我运行了一个OpenSUSE linux框,我不反对使用这个问题的帮助。
从大约一年前是什么,我会做的核心,这是扭转行为上的工程师格式注释。将传统计划视为黑匣子。我假设你仍然可以以某种方式运行遗留系统。首先是将整个传统程序变成一个可以以某种方式调用的子程序。这可能意味着脚本,在虚拟机内运行它,模拟和/或模拟设备等。无论工作。如果您不知道如何执行此操作,请针对您的特定情况另外提出问题。但是,目标是自动化使用旧版软件,以便您可以针对它运行探针和测试套件。
您提到的加密可以使用。先处理这个问题。分支密码具有所谓的雪崩属性:改变输入的一位改变了输出位的50%,这相当于伪随机位翻转。您想使用雪崩属性来(1)测试加密的存在性,以及(2)找出加密结构。例如,如果一个数据库一次一行地加密,那么在任何地方更改存储行的一位会改变加密行的平均一半位数。显然,如果改变一个位改变了整个文件,你有一种不同的问题比如果只有少数位改变(例如校验,等)。如果你有任何形式的加密,你可能需要在调试器下运行遗留下来的算法,并找出算法;这可能不值得。
正如你所看到的,这一切都意味着大量的遗留探讨其行为的调用。你不想亲手做这件事;见第一段。为了解决另一个问题,您不太可能找到现成的代码来提取数据;这是一个自定义代码作业。所以,现在你的自动化工作正常,你想要设置单元测试,调用遗留代码来看看应该预期的。
这不是一个快速的过程,也不容易。始终将预计的成功成本与以其他方式获取数据的成本进行比较,包括支付手动数据输入。
如果您没有访问该项目的来源,我会尝试具有样品输入设置,并通过一点一点地改变它,做文件格式的二进制差异破译发生的事情当中。 –
对不起,我不明白,你能解释一下吗?什么是二进制文件?什么是“模板”,它的用途是什么?你能说明文件格式和一部分结果文件吗?顺便说一句,头是什么(二进制文件的第一个字符)? – Skrol29
有很多反向工程文件格式的文章。例如,http://en.wikibooks.org/wiki/Reverse_Engineering/File_Formats – Alex