我有一些重要的数据是几十年前由一个古老的16位DOS应用程序编写的。没有文档,没有来源,也没有关于作者的信息。只有16位的exe。我想是时候学习如何反编译东西了,因为这似乎是恢复文件格式的唯一方法。我试过OllyDbg,它看起来真的很棒,但它不能16位。
那么,有没有一个反汇编程序/调试器能够处理这样的可执行文件?谢谢
UPD:我知道DOSbox,应用程序在里面运行很好。问题是,我不需要运行它,我需要了解它写入数据的文件格式。或者我对DOSbox不了解,它也可以作为调试器/反编译器运行?或者你的意思是在DOSbox中启动一些旧的16位DOS调试器/反编译器?后者听起来像是一个想法,但你能说出一个像样的DOS调试器吗?
拆卸工具:
使用IDA免费软件https://www.hex-rays.com/products/ida/support/download_freeware.shtml你不会找到任何更好的逆转工具,即使是旧的dos程序:)
大多数其他工具只能对32位进行拆卸,而不能以任何方式分析IDA的特性,IDA是逆向工程的黄金标准工具
调试器:dosbox有自己的内置调试器(可以通过命令行上的"debug"命令访问)但您需要使用激活的调试器构建自己版本的dosbox(或者更好的重度调试),请参阅:http://www.vogons.org/viewtopic.php?t=3944
或者,如果您获得了sdk的ida许可证,则有一个dosbox<->ida调试器插件可用目前仅限linuxhttps://github.com/wjp/idados
文件格式:你知道这个文件包含什么吗(你想从文件中得到什么)非常复杂的信息还是"只是"一些值列表?
也许从这里开始使用十六进制编辑器更好(http://mh-nexus.de/de/hxd/)和已知的结果值来比较
哪个程序当前使用数据(或者仅使用程序本身)?也许可以理解这个程序是如何读取数据的?
程序本身:exe有多大?控制台程序还是一个大型的超级gfx电源应用程序?真正的16位还是32位的dos扩展器?单个exe或覆盖(dos dlls)?
你能允许访问可执行文件吗?
轮到你了
您正在寻找IDA。它实际上是任何东西的反汇编程序。
你可以在上获得更多帮助https://reverseengineering.stackexchange.com/
您不一定需要为了确定程序写入数据的格式而反汇编程序。
也许你可以对它进行差分分析。更改程序的一些输入,让它写入数据,并观察文件的变化。
我这里有一些老式的硬件设备,它们可以通过MIDI以二进制格式转储NVRAM设置(在一种情况下,是一条带有二进制blob的SysEx消息)。如果我想知道格式是什么,我会对设置进行小的、系统的更改,并执行转储,然后查看二进制数据中的哪些位正在更改。
你可能真的最好攻击数据,而不是程序。
Dosbox可能是一种尝试。
你也可以看看http://hte.sourceforge.net/。