Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Assembler
Tabulka importů - první část
21. srpna 2001, 00.00 | Další díl pomocného seriálu k Cracker proof. Tentokrát informace o tabulce importů v PE souboru - první část.
Hned na začátku bych vás rád upozornil, že tyto díly našeho seriálu jsou poněkud obtížnější na pochopení. Možná si je budete muset přečíst několikrát. Pokud to nebude stačit, doporučoval bych vám tabulku importů pečlivě prozkoumat v hexadecimálním editoru (což vám ovšem doporučuji stejně).Jen pro pořádek se sluší vysvětlit, co to je vlastně ten "import". Importovaná funkce je funkce, která je modulem volána, ale modul sám ji neobsahuje. Většinou jsou tyto funkce uloženy v jedné nebo více DLL knihovnách. V modulu jsou pak uloženy informace potřebné pro jejich používání (jméno funkce, DLL knihovny…).
A kde v souboru se tabulka importů nachází?
Určitě (no možná ne:-)) si ještě pamatujete na strukturu IMAGE_OPTIONAL_HEADER32 (uložena v IMAGE_NT_HEADERS). Jejím posledním prvkem je pole 16 struktur IMAGE_DATA_DIRECTORY nazývané DataDirectory. Každá tato struktura nese informace o důležitých informacích v souboru. V následující tabulce jsou uvedeny nejdůležitější struktury z DataDirectory, jejich umístění a informace o datech, na které ukazují:
Struktura
|
Info |
---|---|
0
|
Export symbols |
1
|
Import symbols |
2
|
Resources |
3
|
Exception |
5
|
Base relocation |
6
|
Debug |
7
|
Copyright |
9
|
Thread local storage (TLS) |
10
|
Load configuration |
11
|
Bound Import |
Jak již bylo řečeno, jedná se o IMAGE_DATA_DIRECTORY struktury. Jejich stavba je následující:
|
VirtualAddress je vlastně RVA dané datové struktury a Size je její velikost.
Z tabulky je patrné, že v pořadí druhá struktura v DataDirectory nese informace o tabulce importů. VirtualAddress této struktury tedy ukazuje na její začátek.
Tím jsme zjistili umístění tabulky importů. Teď se podíváme na její složení:
Samotná tabulka importů je tvořena polem struktur IMAGE_IMPORT_DESCRIPTOR:
|
Pole je ukončeno jednou strukturou vyplněnou nulami.
Každá tato struktura nese informace o DLL knihovně, z které jsou funkce importovány. Pokud tedy soubor importuje např. z 5-ti DLL knihoven, bude tabulka importů tvořena polem 5(+1 nulová ukončovací)-ti struktur.
To je pro dnešek všechno.
Tento díl berte jako zahřívací kolo, v příštím díle totiž objasním zbytek popisu tabulky importů…těšte se:-))
Obsah seriálu (více o seriálu):
- Obecná struktura PE souboru
- Jak ověřit platnost PE souboru??
- PE hlavička
- Tabulka sekcí
- Tabulka importů - první část
- Tabulka importů - druhá část
- Tabulka exportů
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007