Ale widać na załączonym obrazku, to na przesunięcie 464 są tylko zera.
Źle: 01
, 20
, 29
, 12
itp są nie tylko "Zera" ostatni raz sprawdzałem.
Przypuszczam, że import Tabela rozpoczyna się przesunięcie 528
Nie, tak nie jest. Z jakiegoś powodu spodziewasz się znaleźć tabelę importu stylu Microsoft PE
w pliku ELF. Nie ma go.
Odpowiedniktabeli importu w ELF zawarty jest w tabelach dwóch. Jedna zawiera Elf{32,64}_Sym
rekordy stałym-size:
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;
i jest zawarty w sekcji .dynsym
.
Druga tabela znajduje się w sekcji .dynstr
(która w pliku zaczyna się od przesunięcia 528) i zawiera tylko ciągi (zmienne) oddzielone znakiem NUL
.
Numer .st_name
w pierwszej tabeli odnosi się do przesunięcia w .dynstr
.
спасибо за ответ. Ale na offsecie 464 nie ma rekordu Elf32_Sym. sh_offset = 464 Dostałem z nagłówka sekcji .dynsym. Dziwnie, że sh_size = 64 i w tym samym czasie sizeof (Elf32_Sym) = 16. – Qwerty
Po prostu przyłapałem myśli. Może to być 64 bajty to 4 rekordy (Elf32_Sym)? – Qwerty