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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? elf-file-format.txt

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

_start:
        ud0
        ud1
        ud2很簡單,只有 ud0, ud1, ud2 三個指令,都是產生非法 Opcode 碼所用。編譯生成ELF如下: 
crq@ $ nasm -f elf new18.asm
crq@ $ ld new18.o這樣就生成了a.out是ELF格式文件,再使用objcopy除去無關緊要的節: 
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 是填充零字節; 0x080~0x086 是 .text 段內容; 0x086~0x098 是 .shstrtab 段內容; 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特征字節。 
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,三條用途都是產生 opcode 異常。 

ELF文件格式分析之二:符號表
Symtab & Relocation info (符號表與重定位表)
寫了一個2.4內核模塊,正是分析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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久老虎 | 久久久久久久久久久黄色| 国产成人精品免费网站| 国产在线视频一区二区三区| 国模娜娜一区二区三区| 成年人午夜久久久| 99re热这里只有精品视频| 波多野结衣中文字幕一区| 91在线观看美女| 欧美久久婷婷综合色| 欧美v日韩v国产v| 中文字幕一区二区视频| 爽爽淫人综合网网站| 国模少妇一区二区三区| 欧美亚洲精品一区| 精品成人一区二区| 91精品一区二区三区在线观看| 色噜噜狠狠成人网p站| 911精品产国品一二三产区| 国产精品三级在线观看| 日韩1区2区日韩1区2区| 91视频免费观看| 欧美高清在线精品一区| 韩国女主播成人在线| 91精品国产综合久久蜜臀| 亚洲久本草在线中文字幕| 激情五月婷婷综合| 精品久久久久久久久久久久久久久久久 | 麻豆精品国产传媒mv男同 | 这里只有精品电影| 国产日韩精品一区二区三区在线| 2021久久国产精品不只是精品| 欧美国产精品一区二区三区| 亚洲女与黑人做爰| 麻豆精品一区二区三区| 欧美日本不卡视频| 一区二区三区四区av| 不卡影院免费观看| 这里是久久伊人| 欧美一区二区三区小说| 蜜桃久久久久久| 欧美精品日日鲁夜夜添| 国产aⅴ精品一区二区三区色成熟| 亚洲另类在线视频| 国产亚洲欧美日韩在线一区| 欧美精品在线视频| 欧美吞精做爰啪啪高潮| 国产福利精品导航| 久久国产精品99精品国产| 日韩制服丝袜先锋影音| 亚洲卡通动漫在线| 日韩伦理电影网| 欧美性色欧美a在线播放| 国产91在线看| 极品尤物av久久免费看| 欧美aaaaa成人免费观看视频| 亚洲精品日日夜夜| 亚洲欧美日韩中文播放| 亚洲欧洲国产日本综合| 国产精品久久久久久福利一牛影视| 精品久久久久av影院| 欧美刺激午夜性久久久久久久| 在线不卡的av| 欧美mv日韩mv| 亚洲人成亚洲人成在线观看图片| 中文字幕一区在线观看视频| 亚洲视频在线一区| 一区二区在线观看视频在线观看| 亚洲综合区在线| 免费高清成人在线| 国产成人精品午夜视频免费| 91浏览器打开| 26uuu色噜噜精品一区二区| 欧美国产视频在线| 亚洲已满18点击进入久久| 午夜在线电影亚洲一区| 国产一区二区在线影院| 3d动漫精品啪啪| 亚洲裸体xxx| 国产成人综合网站| 日韩三级av在线播放| 亚洲欧美视频在线观看视频| 久久99国产乱子伦精品免费| 91色视频在线| 国产视频亚洲色图| 蜜桃精品在线观看| 99久久免费视频.com| 91精选在线观看| 亚洲人精品午夜| 蜜桃av噜噜一区二区三区小说| 91伊人久久大香线蕉| 日韩欧美在线一区二区三区| 一区二区日韩电影| 成人午夜免费视频| 国产欧美一区二区精品忘忧草| 午夜成人免费电影| 91视频你懂的| 国产精品欧美综合在线| 久久99久国产精品黄毛片色诱| 欧美在线一区二区| 一区二区三区中文在线观看| 成人国产精品免费观看| 日韩一级二级三级| 美女www一区二区| 欧美伦理电影网| 奇米在线7777在线精品| 337p亚洲精品色噜噜狠狠| 亚洲超丰满肉感bbw| 欧美久久一二区| 久久99日本精品| 国产午夜精品一区二区三区视频| 国产麻豆成人精品| 中日韩免费视频中文字幕| 粉嫩av一区二区三区粉嫩| 国产亚洲人成网站| eeuss鲁片一区二区三区在线看| 亚洲欧美激情一区二区| 欧美日韩mp4| 国产福利91精品一区| 一区二区三区高清| 久久嫩草精品久久久精品一| www.欧美亚洲| 蜜臀久久99精品久久久久久9| 国产亚洲一区二区三区| 欧美日韩一区三区| 丰满少妇久久久久久久| 亚洲午夜视频在线观看| 中文在线资源观看网站视频免费不卡 | 国产精品久久一卡二卡| 制服丝袜成人动漫| 91麻豆123| 国产精品系列在线播放| 一区二区三区视频在线看| 精品久久久久久久久久久院品网| 97久久精品人人澡人人爽| 日韩av在线发布| 亚洲精品免费一二三区| 久久婷婷国产综合国色天香| 欧美日韩一区二区三区四区五区| 国产成人在线观看| 天天av天天翘天天综合网| 亚洲欧美日韩一区二区| 欧美国产精品中文字幕| www激情久久| 亚洲精品国产无天堂网2021| 亚洲国产精品精华液2区45| 精品嫩草影院久久| 欧美精品一区二区三区很污很色的| 91麻豆精品国产无毒不卡在线观看| www.欧美日韩国产在线| 9色porny自拍视频一区二区| 久久爱另类一区二区小说| 亚洲午夜影视影院在线观看| 中文字幕日韩精品一区| 国产日产亚洲精品系列| 久久综合狠狠综合久久激情| 日韩精品一区国产麻豆| 精品三级av在线| 精品国产乱码久久久久久久| 日韩精品一区二区三区视频播放 | 国产亚洲欧美中文| 国产精品区一区二区三区| 国产精品电影一区二区三区| 国产精品久久久久久久久搜平片 | 亚洲一区二区三区四区中文字幕| 一区二区三区色| 日韩黄色在线观看| 久草精品在线观看| eeuss鲁片一区二区三区在线观看| av在线不卡电影| 在线亚洲人成电影网站色www| 4438x成人网最大色成网站| 欧美精品一区二区三区蜜桃| 国产精品久久久久久久第一福利| 亚洲国产精品一区二区www在线| 国内精品伊人久久久久av一坑| 99在线精品观看| 91精品国产一区二区三区| 亚洲另类在线制服丝袜| 免费人成在线不卡| 99精品久久99久久久久| 制服丝袜成人动漫| 国产精品久久毛片a| 亚洲国产日产av| 国产美女在线精品| 欧美日本不卡视频| 亚洲欧美激情在线| 国产一区二区三区久久悠悠色av | 国产一区二区免费看| 3d动漫精品啪啪一区二区竹菊| 亚洲精品中文字幕在线观看| 成人美女视频在线观看| 日韩片之四级片| 亚洲成年人网站在线观看| 色综合久久综合| 亚洲色图在线播放| 在线观看av不卡| 一级特黄大欧美久久久| 色视频一区二区| 亚洲综合在线视频|