什么是文件格式的幻数
文章目录
- 一、幻数简介
- 二、如何查看文件的幻数
- 第一个工具是:==WinHex==
- 第二个工具是:==file 命令==
- 三、总结
- 参考文献
一、幻数简介
幻数是一些文件格式规范所要求的特殊标签值,它表示文件符合这种规范。有时候,人们在选择幻数的时候添加了一些风趣的元素。例如,MS-DOS的可执行文件头中的MZ标签是MS-DOS架构师Mark Zbikowski姓名的首字母缩写。Java的.class文件的幻数为十六进制数0xcafebabe,以此为幻数,仅仅是为了好记。
二、如何查看文件的幻数
在遇到不熟悉的文件时,绝不要根据文件的拓展名来确定文件的类型。因为文件拓展名并无实际意义,文件的拓展名可进行更改,从而掩盖它真实的文件类型。那么该如何查看文件的幻数,从而知道该文件的格式。
这里推荐两个工具:
第一个工具是:WinHex
直接用WinHex打开文件即可看到文件的十六进制格式。
第二个工具是:file 命令
file命令能够识别大量的文件格式,包括书中ASCII文本文件、各种可执行文件和数据文件。
file命令语法格式为:
file [选项] <参数>
参数:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
选项 | 说明 |
---|---|
-b, --brief | 不输出文件名 |
-v, --version | 打印版本信息 |
-c | 常与 -m 使用,详细显示指令执行过程,便于排错或分析程序执行的情形 |
-z | 试图查看压缩文件内部信息 |
-help | 打印帮助信息 |
三、总结
file即类似的实用工具同样也会出错。如果一个文件碰巧包含了其他的文件格式的标记,file等工具很可能会错误地识别这个文件。大家可以尝试一下,使用Winhex工具去篡改某个文件的前4个字节,把它修改为CA FE BA BE,那么file会将这个新修改的文件错误地识别为已编译的Java类数据(.class文件)。在使用工程中,绝不要完全相信工具提供的结果,应该多个工具一起验证和手动分析。
参考文献
【1】Chris Eagle, 石华耀, 段桂菊. IDA Pro权威指南[M]. 人民邮电出版社.
【2】https://blog.csdn.net/liaowenxiong/article/details/115752543