• 什么是文件格式的幻数




    一、幻数简介

    幻数是一些文件格式规范所要求的特殊标签值,它表示文件符合这种规范。有时候,人们在选择幻数的时候添加了一些风趣的元素。例如,MS-DOS的可执行文件头中的MZ标签是MS-DOS架构师Mark Zbikowski姓名的首字母缩写。Java的.class文件的幻数为十六进制数0xcafebabe,以此为幻数,仅仅是为了好记。

    二、如何查看文件的幻数

    在遇到不熟悉的文件时,绝不要根据文件的拓展名来确定文件的类型。因为文件拓展名并无实际意义,文件的拓展名可进行更改,从而掩盖它真实的文件类型。那么该如何查看文件的幻数,从而知道该文件的格式。
    这里推荐两个工具:

    第一个工具是:WinHex

    直接用WinHex打开文件即可看到文件的十六进制格式。
    Windows PEfexecutable file

    图1:MS-DOS的可执行文件的幻数(开头是MZ)

    Jpeg image file

    图2:Jpeg 文件的幻数


    在这里插入图片描述

    图3:Java .class文件的幻数

    第二个工具是: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

  • 相关阅读:
    Docker Swarm 快速入门
    spark-sql sql on yarn --deploy-mode cluster 改造
    R语言绘制圆形树状图
    使用css结合js实现html文件中的双行混排
    基于SqlNode的血缘解析
    zabbix
    【5G PHY】5G SS/PBCH块介绍(三)
    对象的比较(下)
    Codeforces-1689 C: Infected Tree 【树形动态规划】
    记录一次Powerjob踩的坑(Failed to deserialize message)
  • 原文地址:https://blog.csdn.net/just_h/article/details/126789044