逆向工程师通常如何检测二进制数据的格式?

逆向工程 工具 二进制格式
2021-06-24 19:18:33

假设我有字节数组c1 83 2a 9e f9 ff ff ff(只是一个例子),但我不知道格式是什么。它可以是 ASCII、UTF-8 中的字符,可以是 Little 或 Big Endian 中的 WORD/DWORD 整数,可以是 2 个浮点数或 1 个双精度数或其他任何内容。我觉得这将是每个逆向工程师都经常发生的情况。

所以我的问题是:对于这种问题,有没有一种常用的方法?最有可能的是一个命令行工具,它获取数组并以所有不同的可能表示形式显示它?还是人们仅仅依赖于他们当前使用的程序的给定表示(ollydbg、作弊引擎、十六进制编辑器或他们碰巧使用的任何东西)?

1个回答

这里要解决的问题通常称为语义差距

如果您偶然发现任何二进制代码片段,例如您发布的代码片段,几乎不可能推断出该值的解释方式,除非您找到以任何方式解释该值的代码(例如,文件加载器使用该值作为偏移量, ……)。

主要的问题是你可以想出无数的方法来解释这个值。也许这些只是旗帜。也许它是为了 PowerPC 拆卸的。也许这是吃豆子游戏中的分数变量。您可以尝试通过以多种方式解释它来推断其含义,但这通常不会削减它。

在此处输入图片说明