9

文字列テーブルに「.dynsym」が見つかり、インデックスを取得しました。次に、sh_name = index && sh_type = SHT_DYNSYM のセクションを見つけました。したがって、sh_offset = 464 および sh_size = 64 を取得しました。しかし、添付の図でわかるように、オフセット 464 にはゼロしかありません。

Import Table はオフセット 528 から始まると思います。問題は、どのように計算するか (%)

ここに画像の説明を入力

4

1 に答える 1

8

しかし、添付の図を見るとわかるように、オフセット 464 にはゼロしかありません。

間違い: 0120、などは29、最後に確認したときに「ゼロのみ」ではありません。12

Import Table はオフセット 528 から始まると思います

いいえ、違います。何らかの理由PEで、ELF ファイル内に Microsoft スタイルのインポート テーブルがあることを期待しています。そこにはありません。

ELF のインポート テーブルに相当するものは、 2 つのテーブルに含まれています。1 つはElf{32,64}_Sym固定サイズのレコードを含みます。

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;

セクションに含まれてい.dynsymます。

もう 1 つのテーブルは.dynstrセクション (ファイルではオフセット 528 から始まる) に含まれており、文字で区切られた (可変サイズの) 文字列だけが含まれていますNUL

最初の表の.st_nameは、 のオフセットを指します.dynstr

于 2013-06-12T14:12:13.563 に答える