使用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\ncmdump\main.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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章