我进行一项需要逆向工程文件格式的研究,而我目前正在研究记录该工作的方法。

在网络上,您将找到使用箱形图和自由文本的资源。例如,尝试查看Microsoft Access:https://github.com/brianb/mdbtools/blob/master/HACKING

这与ISO规范中采用的格式相当一致。

这种类型的工作是我专业工作的一部分,但是我没有遇到任何帮助我以一致且有用的方式存储我的信息的方式,对其他人来说,这可能是几个月之后甚至对我有用。

是否有“社区”最佳实践(方法,工具,创作工具等)来帮助将文件研究成文件格式?

评论

我还没听说过类似的东西;没有文档文件格式的标准化方法,也没有专门的应用程序可以为您提供帮助。

#1 楼

同意V并仅抛出一些想法。

通常会说,(当然)必须清楚地将孔表示为
为黑色或灰色。就像在“没有主意”或“几种可能性”中一样。

除了公开分发的文件格式规范外,我发现RFC所使用的样式
是我经常采用的样式。一切都取决于上下文
,如此处所示,使用增强的Backus–Naur形式。

使用真值表和逻辑表达式断言明确性。例如3GPP之类的人也可以从中学习。

如果您想要好的ASCII样式,请使用
asciiflow之类的工具制作流程图等。 />通常可以帮助我编写更清晰的文档并将图表拆分成更易理解的形式。也许人们也可以从
破解中学到一些东西。包括。像在索引中一样容易遍历各个部分,而且在索引上看起来也很漂亮。 –当然,这也可以用简单的
文本来完成。

与任何方法(I)一样,总是使用Git并经常使用简短的简短注释进行提交。

评论


+1用于asciiflow,非常有用,并且增强了BNF

– 0xC0000022L♦
13年4月5日,下午2:58

asciiflow的一种离线替代方法是编辑器JavE jave.de(一个独立的Java应用程序)。

–喜剧
13年4月5日在7:30

@hlovdal:太好了。那回想起了:)。国王万岁;)

– Runium
13年4月5日在16:37

#2 楼

过去,我在文件格式(即010编辑器二进制模板)中记录了我对文件格式的反向工程工作。如果您知道C,这是很容易描述的内容,但是它有其局限性,有时在尝试表达某些更奇特的概念时可能会有些困惑。这种工具的另一个问题是较大文件上的较大脚本运行缓慢,并且缺乏脚本和二进制模板(例如插件)之外的扩展机制。

提到的一种广泛使用的替代方法增强的BNF是ASN.1(永久链接)。我更喜欢BER编码(请参阅Wikipedia文章的先前链接),但是您的里程可能会有所不同。

对于图形表示,我使用了LaTeX(带有bytefield,PDF)和Visio。

#3 楼

像@ 0xC0000022L一样,我倾向于首先在源代码中进行记录,或者在可以立即在工具中重新使用的内容中进行记录(不同于纯文本文档)。

通用方法是使用十六进制编辑器具有注释或描述具有着色功能的结构的功能

带有着色功能的




wxHexEditor很好,简单,很好

BinID2轻巧,简单直接

带模板




010编辑器有许多可用的模板,缺少容易的手动着色,但是推荐

hex Workshop的好竞争对手,脚本和可用性有限

Hex编辑器新有趣的功能(多种选择),但重量大

具有结构




IDA:将IDA用作十六进制编辑器听起来很奇怪,但是您可以创建结构(或从.H文件导入它们),然后应用它们,创建一个脚本来链接它们-最后您已经有一个现成的IDAPython脚本,并且已准备好用于下一个定时的结构。 e遇到这种格式:您逐步构建了将来的工具,并跳过了文档文本部分;)

甚至更好,它使您能够使用这些定义的结构从头开始重新创建文件,这很好以便以后进行实验/模糊处理。




评论


Neo看起来很有前途。

– 0xC0000022L♦
13年4月11日在12:52

谢谢(你的)信息。 IDA反汇编程序? hex-rays.com/products/ida/index.shtml

–罗斯·斯宾塞
13年4月15日在1:36

显然-添加了链接

–天使
13年4月15日在4:48

好的,也许那时还不那么明显-我现在很奇怪;)

–天使
13年4月15日在5:10

#4 楼

除了框图,伪代码实现以及可能的参考实现之外,我想不出更多的“标准”。

此处以FIPS标准或LUKS标准文档为例。它们提供了功能,伪代码的基本叙述,对于OGG / OGV,甚至提供了完整的参考实现。我认为,拆散的标准应该像记录设计的标准一样进行记录。有些字段可能是“未知的”或“似乎是魔术,只需离开它”。

我认为您找不到比这更标准的东西了。如果您不介意发布文档和解析器,则github / bitbucket / etc很棒。其他一些文件格式问题也指向Wotsit.org(我在那里查看),因此提交链接也可能是一件好事。