亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? elf-file-format.txt

?? ELF文件格式分析,對于linux初學(xué)者來說還是挺不錯的
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
ELF文件格式一例分析
ELF文件格式一例分析:以nasm生成一盡量小的ELF文件,以二進制方式,以objdump方式,以readelf方式,分析加載入內(nèi)存及運行規(guī)律,得出結(jié)論。 編輯一個小的asm文件如下: 
crq@ $ cat new18.asm
global _start

_start:
        ud0
        ud1
        ud2很簡單,只有 ud0, ud1, ud2 三個指令,都是產(chǎn)生非法 Opcode 碼所用。編譯生成ELF如下: 
crq@ $ nasm -f elf new18.asm
crq@ $ ld new18.o這樣就生成了a.out是ELF格式文件,再使用objcopy除去無關(guān)緊要的節(jié): 
crq@ $ objcopy -S -R .comment -R .bss a.out運行:
crq@ $ ./a.out
Illegal instruction果如所料,程序接收到一個 SIGILL 信號默認動作是被 kill 掉了,再使用 objdump 反匯編一下: 
crq@ $ objdump -d a.out

a.out:     file format elf32-i386

Disassembly of section .text:

08048080 <.text>:
 8048080:       0f ff                   (bad)
 8048082:       0f b9                   ud2b
 8048084:       0f 0b                   ud2a正文段只有三行匯編語言指令。文件大小: 
crq@ $ ls -l a.out
-rwxr-xr-x    1 crq      users         272 Nov 22 09:22 a.out剩余 272 Bytes. 再使用 readelf 分析: 
crq@ $ readelf -a a.out
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x8048080
  Start of program headers:          52 (bytes into file)
  Start of section headers:          152 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         1
  Size of section headers:           40 (bytes)
  Number of section headers:         3
  Section header string table index: 2

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        08048080 000080 000006 00  AX  0   0 16
  [ 2] .shstrtab         STRTAB          00000000 000086 000011 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000000 0x08048000 0x08048000 0x00086 0x00086 R E 0x1000

 Section to Segment mapping:
  Segment Sections...
   00     .text

There is no dynamic segment in this file.

There are no relocations in this file.

There are no unwind sections in this file.

No version information found in this file.ELF Header部分正常,Section Headers中有三項,第一項按慣例為空的。 Program Headers只有一項。再印出二進制碼如下: 
crq@ $ hexdump -C a.out
00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  80 80 04 08 34 00 00 00  |............4...|
00000020  98 00 00 00 00 00 00 00  34 00 20 00 01 00 28 00  |........4. ...(.|
00000030  03 00 02 00 01 00 00 00  00 00 00 00 00 80 04 08  |................|
00000040  00 80 04 08 86 00 00 00  86 00 00 00 05 00 00 00  |................|
00000050  00 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080  0f ff 0f b9 0f 0b 00 2e  73 68 73 74 72 74 61 62  |........shstrtab|
00000090  00 2e 74 65 78 74 00 00  00 00 00 00 00 00 00 00  |..text..........|
000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000000c0  0b 00 00 00 01 00 00 00  06 00 00 00 80 80 04 08  |................|
000000d0  80 00 00 00 06 00 00 00  00 00 00 00 00 00 00 00  |................|
000000e0  10 00 00 00 00 00 00 00  01 00 00 00 03 00 00 00  |................|
000000f0  00 00 00 00 00 00 00 00  86 00 00 00 11 00 00 00  |................|
00000100  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
000001100x000~0x034 是 ELF Header; 0x034~0x054 是一項Program Headers; 0x054~0x080 是填充零字節(jié); 0x080~0x086 是 .text 段內(nèi)容; 0x086~0x098 是 .shstrtab 段內(nèi)容; 0x098~0x110 是三項Section Headers; 對照 elf.h 文件分析如下: 
00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  80 80 04 08 34 00 00 00  |............4...|
00000020  98 00 00 00 00 00 00 00  34 00 20 00 01 00 28 00  |........4. ...(.|
00000030  03 00 02 00                                       |....            |

typedef struct elf32_hdr {
  unsigned char e_ident[EI_NIDENT];
  Elf32_Half    e_type;
  Elf32_Half    e_machine;
  Elf32_Word    e_version;
  Elf32_Addr    e_entry;  /* Entry point */
  Elf32_Off     e_phoff;
  Elf32_Off     e_shoff;
  Elf32_Word    e_flags;
  Elf32_Half    e_ehsize;
  Elf32_Half    e_phentsize;
  Elf32_Half    e_phnum;
  Elf32_Half    e_shentsize;
  Elf32_Half    e_shnum;
  Elf32_Half    e_shstrndx;
} Elf32_Ehdr;其中 ELF32_Half 是16位,其余類型 ELF32_Word, ELF32_Addr, ELF32_Off 等都是32位。 宏 EI_NIDENT 定義為 16,即 ELF Header 頭部有16Bytes特征字節(jié)。 
00000030              01 00 00 00  00 00 00 00 00 80 04 08  |    ............|
00000040  00 80 04 08 86 00 00 00  86 00 00 00 05 00 00 00  |................|
00000050  00 10 00 00                                       |....            |

typedef struct elf32_phdr{
  Elf32_Word    p_type;
  Elf32_Off     p_offset;
  Elf32_Addr    p_vaddr;
  Elf32_Addr    p_paddr;
  Elf32_Word    p_filesz;
  Elf32_Word    p_memsz;
  Elf32_Word    p_flags;
  Elf32_Word    p_align;
} Elf32_Phdr;00000080  0f ff 0f b9 0f 0b                                 |......          |
00000080                    00 2e  73 68 73 74 72 74 61 62  |      ..shstrtab|
00000090  00 2e 74 65 78 74 00 00                           |..text..        |
00000090                           00 00 00 00 00 00 00 00  |        ........|
000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

000000c0  0b 00 00 00 01 00 00 00  06 00 00 00 80 80 04 08  |................|
000000d0  80 00 00 00 06 00 00 00  00 00 00 00 00 00 00 00  |................|
000000e0  10 00 00 00 00 00 00 00                           |........        |

000000e0                           01 00 00 00 03 00 00 00  |        ........|
000000f0  00 00 00 00 00 00 00 00  86 00 00 00 11 00 00 00  |................|
00000100  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|

typedef struct {
  Elf32_Word    sh_name;
  Elf32_Word    sh_type;
  Elf32_Word    sh_flags;
  Elf32_Addr    sh_addr;
  Elf32_Off     sh_offset;
  Elf32_Word    sh_size;
  Elf32_Word    sh_link;
  Elf32_Word    sh_info;
  Elf32_Word    sh_addralign;
  Elf32_Word    sh_entsize;
} Elf32_Shdr;又查閱 nasmdoc.txt 一文中對這三個 UD 指令的描述如下: 
B.4.320 `UD0', `UD1', `UD2': Undefined Instruction

       UD0                           ; 0F FF                [186,UNDOC] 
       UD1                           ; 0F B9                [186,UNDOC] 
       UD2                           ; 0F 0B                [186]

       `UDx' can be used to generate an invalid opcode exception, for
       testing purposes.

       `UD0' is specifically documented by AMD as being reserved for this
       purpose.

       `UD1' is documented by Intel as being available for this purpose.

       `UD2' is specifically documented by Intel as being reserved for this
       purpose. Intel document this as the preferred method of generating
       an invalid opcode exception.

       All these opcodes can be used to generate invalid opcode exceptions
       on all currently available processors.有趣的是,注意 objdump 的這一段輸出: 
 8048080:       0f ff                   (bad)
 8048082:       0f b9                   ud2b
 8048084:       0f 0b                   ud2a在 nasm 中的三條合法指令在 GNU as 中是只有兩條合法的,并且名稱也不相同,ud2a 和 ud2b,三條用途都是產(chǎn)生 opcode 異常。 

ELF文件格式分析之二:符號表
Symtab & Relocation info (符號表與重定位表)
寫了一個2.4內(nèi)核模塊,正是分析Relocation所需要的。 

readelf 先按次序讀 ELF header, Section Headers, Program Headers, Relocation entries, Symbol table entries, version information. 

crq@4 $ readelf -a dptest.o
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          312 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           40 (bytes)
  Number of section headers:         11
  Section header string table index: 8

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES *** Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00000000 000034 000049 00  AX  0   0  4
  [ 2] .rel.text         REL             00000000 0004a0 000028 08      9   1  4
  [ 3] .data             PROGBITS        00000000 000080 000018 00  WA  0   0  4
  [ 4] .rel.data         REL             00000000 0004c8 000008 08      9   3  4
  [ 5] .bss              NOBITS          00000000 000098 000000 00  WA  0   0  4
  [ 6] .modinfo          PROGBITS        00000000 000098 000025 00   A  0   0  1
  [ 7] .comment          PROGBITS        00000000 0000bd 000033 00      0   0  1
  [ 8] .shstrtab         STRTAB          00000000 0000f0 000046 00      0   0  1
  [ 9] .symtab           SYMTAB          00000000 0002f0 000120 10     10   d  4
  [10] .strtab           STRTAB          00000000 000410 000090 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

There are no program headers in this file.

Relocation section '.rel.text' at offset 0x4a0 contains 5 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
00000005  00000d01 R_386_32          00000000   print_drop
00000028  00000301 R_386_32          00000000   .data
0000002d  00000e02 R_386_PC32        00000000   nf_register_hook
0000003c  00000301 R_386_32          00000000   .data
00000041  00000f02 R_386_PC32        00000000   nf_unregister_hook

Relocation section '.rel.data' at offset 0x4c8 contains 1 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
00000008  00000201 R_386_32          00000000   .text

There are no unwind sections in this file.

Symbol table '.symtab' contains 18 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FILE    LOCAL  DEFAULT  ABS dptest.c
     2: 00000000     0 SECTION LOCAL  DEFAULT    1
     3: 00000000     0 SECTION LOCAL  DEFAULT    3
     4: 00000000     0 SECTION LOCAL  DEFAULT    5
     5: 00000000     0 SECTION LOCAL  DEFAULT    6
     6: 00000000    25 OBJECT  LOCAL  DEFAULT    6 __module_kernel_version
     7: 00000000    36 FUNC    LOCAL  DEFAULT    1 hook
     8: 00000000    24 OBJECT  LOCAL  DEFAULT    3 op
     9: 00000024    17 FUNC    LOCAL  DEFAULT    1 init
    10: 00000038    17 FUNC    LOCAL  DEFAULT    1 clean
    11: 00000019    12 OBJECT  LOCAL  DEFAULT    6 __module_license
    12: 00000000     0 SECTION LOCAL  DEFAULT    7
    13: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND print_drop
    14: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND nf_register_hook
    15: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND nf_unregister_hook
    16: 00000024    17 FUNC    GLOBAL DEFAULT    1 init_module
    17: 00000038    17 FUNC    GLOBAL DEFAULT    1 cleanup_module

No version information found in this file.其中就有Relocation Section有.rel.text和.rel.data, 

.rel.text section
000004a0  05 00 00 00 01 0d 00 00  28 00 00 00 01 03 00 00  |........(.......|
000004b0  2d 00 00 00 02 0e 00 00  3c 00 00 00 01 03 00 00  |-.......<.......|
000004c0  41 00 00 00 02 0f 00 00                           |A.......        |

.rel.data section
000004c0                           08 00 00 00 01 02 00 00  |        ........|
000004d0

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av电影天堂一区二区在线观看| 自拍偷拍国产精品| 麻豆精品久久久| 日韩欧美国产一二三区| 久久99久久99| 欧美激情在线看| 一本一道久久a久久精品 | 久久精品一二三| 国产一区二区视频在线播放| 国产精品污污网站在线观看| 色综合久久66| 免费在线观看视频一区| 欧美激情资源网| 91久久一区二区| 蜜臀99久久精品久久久久久软件 | 久久久久久久久久看片| 成人午夜视频网站| 亚洲国产日韩精品| 精品国产乱码久久久久久免费| 国产不卡在线视频| 亚洲大片在线观看| 久久精品视频一区| 欧美综合一区二区三区| 久久国产福利国产秒拍| 中文字幕制服丝袜成人av| 欧美图片一区二区三区| 国产在线一区观看| 亚洲色欲色欲www在线观看| 精品视频123区在线观看| 国产一区二区三区视频在线播放| 亚洲精品视频在线| 精品成人一区二区三区四区| 99精品视频一区二区三区| 免费精品视频最新在线| 国产精品电影一区二区| 8x8x8国产精品| 99精品久久99久久久久| 免费精品视频在线| 亚洲黄色小说网站| 2023国产精品视频| 欧美午夜一区二区三区| 粉嫩aⅴ一区二区三区四区| 日本午夜精品一区二区三区电影| 亚洲欧洲日产国产综合网| 91精品久久久久久蜜臀| 91在线看国产| 高清不卡在线观看av| 日韩高清欧美激情| 亚洲免费在线观看| 国产午夜精品一区二区三区四区| 欧美高清性hdvideosex| 97精品久久久午夜一区二区三区| 久久精品久久综合| 亚洲第一搞黄网站| 亚洲乱码国产乱码精品精98午夜| 国产天堂亚洲国产碰碰| 欧美高清www午色夜在线视频| 91在线视频在线| 不卡视频一二三四| 国产精品一线二线三线精华| 久久精品国产亚洲一区二区三区| 亚洲va欧美va天堂v国产综合| 日韩码欧中文字| 国产精品你懂的| 欧美激情一区三区| 国产午夜亚洲精品羞羞网站| 欧美成人精品福利| 91精品国产欧美一区二区| 在线一区二区三区四区| 色综合久久综合中文综合网| aa级大片欧美| 99久久精品国产一区| 成人国产亚洲欧美成人综合网| 国产伦精品一区二区三区视频青涩 | 色婷婷国产精品久久包臀| 成人av免费在线| 国产成人一区在线| 国产成人精品免费看| 国产在线一区观看| 国产成人一级电影| 成人99免费视频| 懂色av一区二区夜夜嗨| 国产91清纯白嫩初高中在线观看| 国产精品资源网站| 成人精品gif动图一区| 懂色av中文字幕一区二区三区| 成人免费看片app下载| av电影在线观看完整版一区二区| 99久久综合国产精品| 一本大道久久精品懂色aⅴ| 91麻豆国产精品久久| 欧美日韩精品一二三区| 欧美一二三区在线| 久久精品人人做人人爽人人| 欧美激情一区二区三区不卡 | 色综合久久久久网| 欧美精品在线观看一区二区| 日韩欧美在线综合网| 久久嫩草精品久久久精品| 久久精品一区二区| 亚洲欧美经典视频| 日韩综合在线视频| 国产精品一区专区| 91麻豆精品在线观看| 欧美久久久久久蜜桃| 久久精品男人天堂av| 亚洲免费观看高清完整版在线观看熊| 亚洲一区二区视频在线观看| 日本不卡一区二区三区高清视频| 国产精品伊人色| 在线观看日韩一区| 日韩欧美高清在线| 亚洲三级在线播放| 美女免费视频一区| jvid福利写真一区二区三区| 欧美另类久久久品| 国产精品日产欧美久久久久| 亚洲va国产天堂va久久en| 国产麻豆精品theporn| 91成人看片片| 国产网站一区二区| 日韩在线观看一区二区| 色婷婷精品久久二区二区蜜臂av | 欧美精选一区二区| 国产农村妇女精品| 日韩成人午夜精品| 99视频精品在线| 久久综合狠狠综合| 夜夜操天天操亚洲| 国产 日韩 欧美大片| 日韩一区二区视频| 亚洲另类色综合网站| 国产传媒日韩欧美成人| 欧美日韩久久不卡| 国产精品午夜春色av| 蜜乳av一区二区| 欧美日韩中字一区| 国产精品久久久久婷婷二区次| 免费在线观看一区| 色婷婷综合久久久中文一区二区| 国产亚洲精久久久久久| 蜜臀av亚洲一区中文字幕| 一本色道久久综合亚洲精品按摩| 久久久精品国产免大香伊| 日日摸夜夜添夜夜添亚洲女人| 色诱视频网站一区| 国产欧美日韩三区| 国产在线精品一区二区不卡了| 欧美日韩激情一区二区| 亚洲精品大片www| 97精品久久久午夜一区二区三区| 国产日韩精品一区| 免费久久99精品国产| 6080国产精品一区二区| 亚洲高清在线精品| 91在线免费播放| 1区2区3区欧美| 北条麻妃一区二区三区| 国产欧美精品一区aⅴ影院 | 成人精品国产免费网站| 久久嫩草精品久久久精品| 精品午夜一区二区三区在线观看| 制服丝袜国产精品| 日韩综合小视频| 欧美精品乱码久久久久久| 亚洲一区欧美一区| 欧美午夜精品一区二区三区| 亚洲午夜免费视频| 欧美视频日韩视频| 婷婷久久综合九色综合绿巨人| 欧美这里有精品| 五月婷婷激情综合| 欧美精品一二三| 蜜乳av一区二区| 亚洲精品在线免费观看视频| 九九视频精品免费| 久久久国产精品麻豆| 懂色av一区二区在线播放| 国产精品情趣视频| 色天使久久综合网天天| 国产成人亚洲精品狼色在线 | 亚洲国产日韩av| 亚洲欧洲一区二区三区| 高清成人免费视频| 中文字幕日韩精品一区| 色www精品视频在线观看| 亚洲国产综合在线| 欧美电影免费观看高清完整版 | 欧美大片一区二区三区| 亚洲免费三区一区二区| 视频精品一区二区| 成人综合在线视频| 日本一区二区三区视频视频| 成人综合日日夜夜| 樱花草国产18久久久久| 91精品免费在线观看| 国产一区二区视频在线| 亚洲视频资源在线| 丁香激情综合国产| 成人午夜电影网站|