Wirusy komputerowe

Page 18

tabela importów

Importowana funkcja to taka, której ciało zdefiniowane jest w innym pliku, najczęściej jest to plik DLL. Program wywołujący taką funkcję posiada informacje jedynie o jej nazwie (lub numerze) i nazwie pliku DLL, z którego jest importowana. Istnieją dwa typy/metody importowania funkcji: poprzez wartość/numer funkcji poprzez nazwę funkcji Wcześniej, podczas opisywania tablicy DataDirectory zaznaczyliśmy, że jej element numer 1 wskazuje na strukturę IMAGE_DATA_DIRECTORY, której pole VirtualAddress zawiera adres tablicy struktur IMAGE_IMPORT_DESCRIPTOR w sekcji .idata (import data). IMAGE_IMPORT_DESCRIPTOR union Characteristics OriginalFirstThunk ends TimeDateStamp ForwarderChain Name1 FirstThunk IMAGE_IMPORT_DESCRIPTOR ENDS

DWORD DWORD

? ?

DWORD DWORD DWORD DWORD

? ? ? ?

W pliku nie ma informacji o ilości elementów tej tablicy, dlatego jej ostatnia pozycja markowana jest wypełnieniem tej struktury samymi zerami, elementów będzie tak wiele jak różnych plików DLL z których program importuje funkcje (KERNEL32.DLL, MFC40.DLL, USER32DLL, itp. ) Characteristics/OriginalFirstThunk zawiera RVA kolejnej tablicy elementów DWORD. Każdy z tych elementów DWORD jest tak naprawdę unią zdefiniowaną w strukturze IMAGE_THUNK_DATA. IMAGE_THUNK_DATA EQU <IMAGE_THUNK_DATA32> IMAGE_THUNK_DATA32 STRUCT union u1 ForwarderString DWORD Function DWORD Ordinal DWORD AddressOfData DWORD ends IMAGE_THUNK_DATA32 ENDS

? ? ? ?

Dla tematu tabela importów w powyższej unii obowiązuje pole Function ( w przypadku importowania funkcji przez nazwę ), które zawiera wskaźnik na strukturę IMAGE_IMPORT_BY_NAME. Pole Ordinal jest stosowane w przypadku importowania funkcji przez wartość (opisane dalej). Mamy zatem dla jakiegoś programu kilka struktur IMAGE_IMPORT_BY_NAME, tablica taka kończy się wskaźnikiem w Function ustawionym na NULL. Adres takiej tablicy umieszczany jest w polu OriginalFirstThunk w IMAGE_IMPORT_DESCRIPTOR. IMAGE_IMPORT_BY_NAME STRUCT Hint WORD ? Name1 BYTE ? IMAGE_IMPORT_BY_NAME ENDS

18


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.