2012-07-02 23 views
7
  1. Tôi nhận được một số biểu tượng và tôi nhận được tệp hexedit của tệp elf. Làm cách nào để biết phần nào biểu tượng này xuất hiện?Bảng chuỗi trong ELF

  2. Sự khác nhau giữa strtabshstrtab là gì? cũng có một chuỗi các chuỗi ký hiệu?

Khi tôi lấy chỉ mục trong bảng tên, có phải chỉ mục trong strtab hoặc shstrtab?

Trả lời

8

Đối với câu hỏi đầu tiên, chúng tôi sẽ cần hexedit của tệp elf để hiểu đúng.

Đối với câu hỏi thứ hai - strtab là viết tắt của String Table shstrtab là viết tắt của phần Header String table.

Khi đọc tiêu đề ELF, chúng ta thấy rằng mọi cấu trúc ElfHeader đều chứa một thành viên có tên là e_shstrndx. Đây là một chỉ số cho shstrtab. Nếu bạn sử dụng chỉ mục này và sau đó đọc từ shstrtab bạn có thể tìm thấy tên của phần đó.

strtab, là bảng chuỗi cho tất cả các tham chiếu khác. Khi bạn đọc các ký hiệu từ một đối tượng ELF, mỗi cấu trúc SYmbol (Elf32_Sym) có một thành viên được gọi là st_name. Đây là một chỉ mục vào strtab để lấy tên chuỗi của biểu tượng đó.

Bạn có thể giải thích thêm về mảng chuỗi ký hiệu không? Ngoài ra, những gì bạn có ý nghĩa của bảng tên?

Bạn có thể tham khảo các link sau - Reading ELF String Table on Linux from C

Hy vọng điều này trả lời câu hỏi của bạn.

+0

cảm ơn. bạn có thể vui lòng cho ví dụ về "các tham chiếu khác" là gì không? Còn tên phần thì sao? chúng cũng xuất hiện trong strtab? – user1479376

+0

SOrry đã biến mất trong một vài ngày. Tên của phần được lưu trữ trong .shstrtab. Bởi tất cả các tài liệu tham khảo khác tôi có nghĩa là các biểu tượng được lưu trữ trong DIE Blocks –

+0

điều này sẽ đánh dấu là câu trả lời. – Jichao

Các vấn đề liên quan