erbi_lucifer吧 关注:407贴子:3,326
  • 6回复贴,共1

【专题】win32 ASM File format parsing (文件格式解析)

只看楼主收藏回复



一楼


1楼2013-05-02 23:12回复

    写在前面:
    文件格式(或文件类型)是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。
    每一种文件格式通常会有一种或多种扩展名可以用来识别,但也可能没有扩展名。扩展名可以帮助应用程序识别的文件格式。
    很多文件都有自己独特的结构,我们只需要根据文件的结构来构建对应的结构体即可读取文件的信息。
    解析文件格式一般用于格式转换,文件信息的读写,文件的构建等方面,本文是对8种常见文件格式的解析(不使用外部包),只读取结构信息(如文件头等信息),不读取文件的具体内容。
    本文从最简单的MP3格式的文件头信息读取开始,到复杂的EXE,ZIP格式。越到后面结构越复杂,解析过程或许有些难理解的地方,可以尝试着自己去写一个程序以加深理解(如果有必要的话),你会发现其实这都很简单。另外解析过程有些枯燥,估计看了很有助于睡眠。
    本人初学WIN32汇编,这也算是我的一些练手写程序的不错机会,如果文中有什么不足或错误,请见谅。也可以和本人联系。


    本楼含有高级字体2楼2013-05-02 23:13
    回复

      本文每一种格式的解析过程包括:
      1. 文件组成:介绍该文件的格式,结构组成。是读取文件信息的基础。
      2. 构建结构体:根据文件结构来构建结构体(汇编语言)
      3. 读取文件信息:以一个对应类型的文件作为例子,使用UE打开,独字节分析所属结构,内容与含义。附程序的读取结果。
      4. 汇编代码:根据结构体读取内容,有了前面的格式分析,这里是最简单的。只截取读取文件部分,详细的代码见附件。


      3楼2013-05-02 23:13
      回复

        需要工具:
        UltraEdit(也称UE):可以以16进制的方式显示文件的内容。
        MASMPlus:编译汇编代码,(对应工程为Win32application)
        在线进制转换工具:http://app.baidu.com/app/enter?appid=188622


        4楼2013-05-02 23:14
        回复

          【文件格式解析(五)】TIFF文件格式
          http://tieba.baidu.com/p/2297181815
          【文件格式解析(六)】ICO/CUR文件格式
          http://tieba.baidu.com/p/2302405584
          【文件格式解析(七)】ZIP文件格式
          http://tieba.baidu.com/p/2302649266
          【文件格式解析(八)】EXE文件格式
          http://tieba.baidu.com/p/2302939052


          6楼2013-05-02 23:17
          回复

            本文的PDF文档+相关程序(附asm代码)+例子中使用的文件 已经上传115网盘,网盘传送门、用户名与密码见:
            http://tieba.baidu.com/p/1839536765
            目录:
            /【win32 asm】【文件格式解析】/WIN32 ASM -- File format parsing v1.1.pdf :全文
            /【win32 asm】【文件格式解析】/WIN32 ASM -- File format parsing 附件.zip :源代码+程序+例子的文件(小,428K)
            /【win32 asm】【文件格式解析】/WIN32 ASM -- File format parsing 大文件(例子中使用的文件).zip :例子中的文件(较大 40.8M),可以不用下载。


            7楼2013-05-02 23:18
            回复

                  / \./ \/\_   I Hand You
                __{^\_ _}_  ) }/^\    A Rose...
               / /\_/^\._}_/ // /
              ( (__{(@)}\__}.//_/__A___A______A_______A______A____
               \__/{/(_)\_} )\\ \\---v----V-----V--Y----v---Y-----
                (  (__)_)_/ )\ \>
              \__/   \__/\/\/ 光影
                  \__,--'
              以上


              8楼2013-05-02 23:19
              回复