科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道UNIX系统 目标文件初探

UNIX系统 目标文件初探

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

UNIX(R) 系统中运行的程序遵守一种称为目标文件格式的精心设计。了解更多关于目标文件格式的内容,以及可以用来研究系统中目标文件的工具。

来源:chinaitlab 2007年12月27日

关键字: unix 系统安全

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共8页)

正如从该输出中看到的,简单的 a.out Hello World 文件中包含了大量有价值的细节信息,包括版本信息、柱状图、各种符号类型的表格,等等。通过使用本文中介绍的这几种工具分析目标文件,您可以慢慢地对可执行程序进行研究。

    除了所有这些段之外,编译器可以将调试信息放入到目标文件中,并且还可以显示这些信息。输入下面的命令,仔细分析编译器的输出(假设您扮演了调试程序的角色):

readelf --debug-dump a.out | less

    这个命令生成的输出如清单 5 所示。调试工具,如 GDB,可以读取这些调试信息,并且当程序在调试器中运行的同时,您可以使用该工具显示更具描述性的标记,而不是对代码进行反汇编时的原始地址值。


清单 5. 该程序中的调试信息
	
The section .debug_aranges contains:

  Length:                   28
  Version:                  2
  Offset into .debug_info:  0
  Pointer Size:             4
  Segment Size:             0

    Address  Length
    080482c0 34
  Length:                   52
  Version:                  2
  Offset into .debug_info:  10b
  Pointer Size:             4
  Segment Size:             0

    Address  Length
    08048308 4
    08048458 18
    08048278 11
    080482e4 36
  Length:                   44
  Version:                  2
  Offset into .debug_info:  19b
  Pointer Size:             4
  Segment Size:             0

    Address  Length
    08048308 4
    0804846f 6
    0804828d 2

Contents of the .debug_pubnames section:

  Length:                              33
  Version:                             2
  Offset into .debug_info section:     122
  Size of area in .debug_info section: 145

    Offset      Name
    121                 _IO_stdin_used

The section .debug_info contains:

  Compilation Unit @ offset 0x0:
   Length:        118
   Version:       2
   Abbrev Offset: 0
   Pointer Size:  4
 <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
     DW_AT_stmt_list   : 0
     DW_AT_low_pc      : 0x80482c0
     DW_AT_high_pc     : 0x80482e2
     DW_AT_name        : ../sysdeps/i386/elf/start.S
     DW_AT_comp_dir    : /build/buildd/glibc-2.3.6/build-tree/glibc-2.3.6/csu
     DW_AT_producer    : GNU AS 2.16.91
     DW_AT_language    : 32769  (MIPS assembler)
  Compilation Unit @ offset 0x7a:
   Length:        141
   Version:       2
   Abbrev Offset: 20
   Pointer Size:  4
 <0><85>: Abbrev Number: 1 (DW_TAG_compile_unit)
     DW_AT_stmt_list   : 0x5b
     DW_AT_high_pc     : 0x80482e4
     DW_AT_low_pc      : 0x80482e4
     DW_AT_producer    : (indirect string, offset: 0x62): GNU C 3.4.6
     DW_AT_language    : 1      (ANSI C)
     DW_AT_name        : (indirect string, offset: 0x0): init.c
     DW_AT_comp_dir    : (indirect string, offset: 0x11): /build/buildd/...
 <1><9f>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x90): unsigned int
     DW_AT_byte_size   : 4
     DW_AT_encoding    : 7      (unsigned)
 <1><a6>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x54): unsigned char
     DW_AT_byte_size   : 1
     DW_AT_encoding    : 8      (unsigned char)
 <1><ad>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x9d): short unsigned int
     DW_AT_byte_size   : 2
     DW_AT_encoding    : 7      (unsigned)
 <1><b4>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x8b): long unsigned int
     DW_AT_byte_size   : 4
     DW_AT_encoding    : 7      (unsigned)
 <1><bb>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x56): signed char
     DW_AT_byte_size   : 1
     DW_AT_encoding    : 6      (signed char)
 <1><c2>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x7): short int
     DW_AT_byte_size   : 2
     DW_AT_encoding    : 5      (signed)
 <1><c9>: Abbrev Number: 3 (DW_TAG_base_type)
     DW_AT_name        : int
     DW_AT_byte_size   : 4
     DW_AT_encoding    : 5      (signed)
 <1><d0>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x46): long long int
     DW_AT_byte_size   : 8
     DW_AT_encoding    : 5      (signed)
 <1><d7>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x86): long long unsigned int
     DW_AT_byte_size   : 8
     DW_AT_encoding    : 7      (unsigned)
 <1><de>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x4b): long int
     DW_AT_byte_size   : 4
     DW_AT_encoding    : 5      (signed)
 <1><e5>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x90): unsigned int
     DW_AT_byte_size   : 4
     DW_AT_encoding    : 7      (unsigned)
 <1><ec>: Abbrev Number: 2 (DW_TAG_base_type)
     DW_AT_name        : (indirect string, offset: 0x5d): char
     DW_AT_byte_size   : 1
     DW_AT_encoding    : 6      (signed char)
 <1><f3>: Abbrev Number: 4 (DW_TAG_variable)
     DW_AT_name        : (indirect string, offset: 0xb0): _IO_stdin_used
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 25
     DW_AT_type        : <105>
     DW_AT_external    : 1
     DW_AT_location    : 5 byte block: 3 7c 84 4 8      (DW_OP_addr: 804847c)
 <1><105>: Abbrev Number: 5 (DW_TAG_const_type)
     DW_AT_type        : <c9>
  Compilation Unit @ offset 0x10b:
   Length:        140
   Version:       2
   Abbrev Offset: 86
   Pointer Size:  4
 <0><116>: Abbrev Number: 1 (DW_TAG_compile_unit)
     DW_AT_stmt_list   : 0x82
     DW_AT_name        : /build/buildd/glibc-2.3.6/build-tree/i386-libc/csu/crti.S
     DW_AT_comp_dir    : /build/buildd/glibc-2.3.6/build-tree/glibc-2.3.6/csu
     DW_AT_producer    : GNU AS 2.16.91
     DW_AT_language    : 32769  (MIPS assembler)
  Compilation Unit @ offset 0x19b:
   Length:        140
   Version:       2
   Abbrev Offset: 102
   Pointer Size:  4
 <0><1a6>: Abbrev Number: 1 (DW_TAG_compile_unit)
     DW_AT_stmt_list   : 0x12f
     DW_AT_name        : /build/buildd/glibc-2.3.6/build-tree/i386-libc/csu/crtn.S
     DW_AT_comp_dir    : /build/buildd/glibc-2.3.6/build-tree/glibc-2.3.6/csu
     DW_AT_producer    : GNU AS 2.16.91
     DW_AT_language    : 32769  (MIPS assembler)
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章