Import Section (th ng c bi t d i tên .idata) bao g m thông tin v t t c các hàm c imported b i file th c thi t các file Dlls. Thông tin này c l u tr trong m t vài c u trúc d li u. Ph n quan trong
nh t c a section này là ImportDirectory và ImportAddressTable mà chúng ta s nói n ti p theo ây.
Trong m t s file th c thi có th c ng có các directories là Bound_Import và Delay_Import.
Delay_Import directory , v i chúng ta nó không quan tr ng l m nh ng chúng ta s c p t i
Bound_Import directory ph n ti p sau.
Trình Windows loader ch u trách nhi m v vi c n p t t c các file Dll mà ng d ng s d ng và ánh x chúng vào trong không gian a ch process. Nó ph i tìm a ch c a t t c các imported functions trong các file Dlls khác nhau c a chúng và s p t chúng s n sàng s d ng cho các file th c thi c n p.
a ch c a các hàm bên trong m t file Dll không ph i là nh ng a ch t nh mà thay i khi các phiên b n c c p nh t hóa c a file Dll c released , vì v y các ng d ng không th c xây d ng s d ng các a ch hàm hardcoded. B i vì ó là m t c ch c phát tri n cho phép nh ng thay i mà không c n ph i t o ra nhi u s thay i, ch nh s a i v i o n mã c a file th c thi vào lúc chay. i u này ã c hoàn thành thông qua vi c s d ng m t Import Address Table (IAT). ây là m t b ng c a nh ng con tr t i các a ch hàm mà ã c i n vào b i trình Windows loader khi các file Dll c n p.
B ng vi c s d ng m t b ng con tr , trình loader không c n ph i thay i nh ng a ch c a các imported functions trong o n mã l nh mà chúng c g i. T t c nh ng th mà nó ph i làm là thêm a ch chính xác vào m t n i riêng l trong b ng import và công vi c c a nó c hoàn t t.
The Import Directory :
Import Directory th c s là m t m ng c a các c u trúc IMAGE_IMPORT_DESCRIPTOR. M i c u
trúc là 20 bytes và ch a thông tin v m t DLL mà PE file c a chúng ta import các hàm vào. L y ví d ,
n u PE file c a chúng ta import các hàm t 10 file DLL khác nhau, thì s có 10 c u trúc
IMAGE_IMPORT_DESCRIPTOR trong m ng này. Không có tr ng nào ch cho ta bi t s l ng c a các c u trúc trong m ng này. thay th , c u trúc cu i cùng s có các tr ng c i n y các giá tr 0 (zeros).
Cùng v i Export Directory, b n có th tìm th y Import Directory âu b ng vi c quan sát t i Data
Directory (80 bytes t ch b t u c a PE Header). Trong ó thì thành ph n u tiên và cu i cùng là quan tr ng nh t :
Thành ph n u tiên OriginalFirstThunk , là m t DWORD union, có th t i m t th i i m là m t t p
h p c a các c . Tuy nhiên, Microsoft ã thay i ý ngh a c a nó và không bao gi lo l ng c p nh t file
WINNT.H. Tr ng này th c s ch a RVA c a m t m ng các c u trúc IMAGE_THUNK_DATA. [Ti n
ây c ng nói luôn, t union c c p trên ch ng qua ch là m t s nh ngh a l i c a cùng m t n i