zoukankan      html  css  js  c++  java
  • 使用Visual Studio自带工具dumpbin解析PE文件


    如果想查看PE文件或库包含了哪些函数以及相关的信息(符号清单),可以通过VS自带的dumpbin工具来完成。

    介绍

    dumpbin.exe为Microsoft COFF二进制文件转换器,它显示有关通用对象文件格式(COFF)二进制文件的信息。可以使用dumpbin检查COFF对象文件、标准COFF对象库、可执行文件和动态链接库等。

    使用方法

    在“开始”中找到“Visual Studio 2019”文件夹,打开后找到“x86 Native Tools Command Prompt for VS 2019”,双击打开

    打开后,直接输入dumpbin,然后回车,即可得到帮助信息

    翻译如下:

       /ALL    显示除代码反汇编外的所有可用信息
       /ARCHIVEMEMBERS  显示有关库成员对象的最少信息
       /CLRHEADER  显示有关在任何托管程序中使用的 .NET 头的信息
       /DEPENDENTS    转储映像从中导入函数的 DLL 的名称
       /DIRECTIVES  转储映像中由编译器生成的 .directive 节
       /DISASM[:{BYTES|NOBYTES}]      显示代码段的反汇编,如果出现在文件中则使用符号
       /ERRORREPORT:{NONE|PROMPT|QUEUE|SEND}
       /EXPORTS  显示从可执行文件或 DLL 导出的所有定义
       /FPO  显示框架指针优化 (FPO) 记录
       /HEADERS  显示文件头和每节的头。当用于库时,显示每个成员对象的头
       /IMPORTS[:文件名]  显示导入到可执行文件或 DLL 的 DLL 列表(静态链接的和延迟加载 )和上述每个 DLL 的各个导入
       /LINENUMBERS  显示 COFF 行号
       /LINKERMEMBER[:{1|2}] 显示库中定义的公共符号。指定参数 1 将按对象顺序显示符号及其偏移量。指定参数 2 将显示
       对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引
       /LOADCONFIG 转储 IMAGE_LOAD_CONFIG_DIRECTORY 结构,此结构是由 Windows NT 加载程序使用并在 WINNT.H 中定义的可选结构。
       /NOLOGO
       /OUT:filename
       /PDATA  仅用于 RISC 处理器。此选项从映像或对象转储异常表 (.pdata)
       /PDBPATH[:VERBOSE]  将沿调试器搜索 .pdb 文件的同一路径搜索计算机,并将报告哪些 .pdb 文件(若有)和 filename 中指定的文件相对应
       /RANGE:vaMin[,vaMax]
       /RAWDATA[:{NONE|1|2|4|8}[,#]]   此选项显示文件中每节的原始内容
       /RELOCATIONS  此选项显示对象或映像中的任何重定位
    

    使用格式为:dumpbin 选项 文件名
    格式说明:
    多个选项间用空格分开,多个文件名间也用空格分开,文件名可以为后缀为.obj、.lib、.dll、.exe,如 dumpbin /ALL/RAWDATA:NONE /OUT:1.txt text.obj (dmpbin /ALL /RAWDATA:NONE test.obj >1.txt)。如果没有给dumpbin指定任何选项,它将等同于使用了/SUMMARY参数。如果没有指定任何输入文件,它将列出所有的选项。
    选项说明:参数的使用可以用”-”或者”/”(如-ALL等于/ALL)后面跟选项名。有些选项可以在选项名后接”:”。使用空格或制表符(Tab)分割命令选项。选项名,关键字和文件名是不区分大小写的。大多数的参数可以应用于所有的二进制文件,有少部分参数只能用于特定的文件。

    示例

    比如,我当前有个名为“main.exe”的可执行文件,想查看文件头的信息
    命令如下:
    dumpbin /HEADERS E:娱乐网易云音乐crack cmdumpmain.exe
    运行结果为:

    PE signature found
    
    File Type: EXECUTABLE IMAGE
    
    FILE HEADER VALUES
                8664 machine (x64)
                   4 number of sections
                   0 time date stamp
              216C00 file pointer to symbol table
                   0 number of symbols
                  F0 size of optional header
                 223 characteristics
                       Relocations stripped
                       Executable
                       Application can handle large (>2GB) addresses
                       Debug information stripped
    
    OPTIONAL HEADER VALUES
                 20B magic # (PE32+)
                3.00 linker version
              1E8600 size of code
               2DC00 size of initialized data
                   0 size of uninitialized data
               51360 entry point (0000000000451360)
                1000 base of code
              400000 image base (0000000000400000 to 0000000000638FFF)
                1000 section alignment
                 200 file alignment
                4.00 operating system version
                1.00 image version
                4.00 subsystem version
                   0 Win32 version
              239000 size of image
                 600 size of headers
                   0 checksum
                   3 subsystem (Windows CUI)
                   0 DLL characteristics
              200000 size of stack reserve
                1000 size of stack commit
              100000 size of heap reserve
                1000 size of heap commit
                   0 loader flags
                  10 number of directories
                   0 [       0] RVA [size] of Export Directory
              237000 [     3FE] RVA [size] of Import Directory
                   0 [       0] RVA [size] of Resource Directory
                   0 [       0] RVA [size] of Exception Directory
                   0 [       0] RVA [size] of Certificates Directory
                   0 [       0] RVA [size] of Base Relocation Directory
                   0 [       0] RVA [size] of Debug Directory
                   0 [       0] RVA [size] of Architecture Directory
                   0 [       0] RVA [size] of Global Pointer Directory
                   0 [       0] RVA [size] of Thread Storage Directory
                   0 [       0] RVA [size] of Load Configuration Directory
                   0 [       0] RVA [size] of Bound Import Directory
              1EA000 [     118] RVA [size] of Import Address Table Directory
                   0 [       0] RVA [size] of Delay Import Directory
                   0 [       0] RVA [size] of COM Descriptor Directory
                   0 [       0] RVA [size] of Reserved Directory
    
    
    SECTION HEADER #1
       .text name
      1E8482 virtual size
        1000 virtual address (0000000000401000 to 00000000005E9481)
      1E8600 size of raw data
         600 file pointer to raw data (00000600 to 001E8BFF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    60000060 flags
             Code
             Initialized Data
             Execute Read
    
    SECTION HEADER #2
       .data name
       4C0D8 virtual size
      1EA000 virtual address (00000000005EA000 to 00000000006360D7)
       2DC00 size of raw data
      1E8C00 file pointer to raw data (001E8C00 to 002167FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    C0000040 flags
             Initialized Data
             Read Write
    
    SECTION HEADER #3
      .idata name
         3FE virtual size
      237000 virtual address (0000000000637000 to 00000000006373FD)
         400 size of raw data
      216800 file pointer to raw data (00216800 to 00216BFF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    C0000040 flags
             Initialized Data
             Read Write
    
    SECTION HEADER #4
     .symtab name
           4 virtual size
      238000 virtual address (0000000000638000 to 0000000000638003)
         200 size of raw data
      216C00 file pointer to raw data (00216C00 to 00216DFF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    42000000 flags
             Discardable
             Read Only
    
      Summary
    
           4D000 .data
            1000 .idata
            1000 .symtab
          1E9000 .text
    
  • 相关阅读:
    UE4物理笔记
    lambda+mutable配合move实现单函数多程序域
    UE导航系统详
    cpp智能指针
    [转载]新手应该如何学习网站分析
    webpack 单独打包指定JS文件
    vue-cli axios ie9 问题
    [分享] 通过修改CSS自定义chrome滚动条样式
    日期格式化转换方法
    vue 路劲
  • 原文地址:https://www.cnblogs.com/cyx-b/p/13488380.html
Copyright © 2011-2022 走看看