2013-06-11 35 views
7

Tôi tìm thấy ".dynsym" trong Bảng chuỗi, đã nhận chỉ mục. Sau đó, tôi tìm thấy phần có sh_name = index & & sh_type = SHT_DYNSYM. Vì vậy, tôi nhận sh_offset = 464 và sh_size = 64. Nhưng bạn có thể thấy trong hình đính kèm, rằng trên offset 464 chỉ có 0.Nhập Bảng trong tệp ELF ở đâu?

Tôi giả sử rằng Biểu thuế nhập khẩu bắt đầu từ ngày bù đắp 528. Câu hỏi là: làm thế nào tính toán nó%)

enter image description here

Trả lời

6

Nhưng bạn có thể nhìn thấy trong hình đính kèm, mà trên bù đắp 464 chỉ có số không.

sai: 01, 20, 29, 12 vv là không "chỉ số không" Lần cuối cùng tôi đã kiểm tra.

Tôi giả sử rằng Biểu thuế nhập khẩu bắt đầu từ ngày bù đắp 528

Không, nó không. Vì lý do nào đó, bạn đang mong đợi tìm một bảng nhập khẩu kiểu Microsoft PE trong tệp ELF. Nó không có ở đó.

An tương đương của bảng nhập trong ELF được chứa trong hai bảng. Một chứa Elf{32,64}_Sym bản ghi kích thước cố định:

typedef struct 
{ 
    Elf32_Word st_name;    /* Symbol name (string tbl index) */ 
    Elf32_Addr st_value;    /* Symbol value */ 
    Elf32_Word st_size;    /* Symbol size */ 
    unsigned char st_info;    /* Symbol type and binding */ 
    unsigned char st_other;    /* Symbol visibility */ 
    Elf32_Section st_shndx;    /* Section index */ 
} Elf32_Sym; 

và được chứa trong phần .dynsym.

Bảng khác được chứa trong phần .dynstr (trong đó, trong tệp của bạn bắt đầu ở độ lệch 528) và chỉ có các chuỗi (biến kích thước) được phân tách bằng ký tự NUL.

.st_name trong bảng đầu tiên đề cập đến độ lệch trong .dynstr.

+0

спасибо за ответ. Nhưng trên offset 464 không có bản ghi Elf32_Sym. sh_offset = 464 Tôi nhận được từ tiêu đề của phần .dynsym. Thật kỳ lạ mà sh_size = 64 và trong cùng một thời gian sizeof (Elf32_Sym) = 16. – Qwerty

+0

Tôi vừa mới bắt được một suy nghĩ. Có thể là những 64 byte là 4 hồ sơ (Elf32_Sym)? – Qwerty