diff --git a/memory/virtual.c b/memory/virtual.c
index 7960f91..1ecbfb6 100644
--- a/memory/virtual.c
+++ b/memory/virtual.c
@@ -502,6 +502,7 @@
     IMAGE_DOS_HEADER *dos;
     IMAGE_NT_HEADERS *nt;
     IMAGE_SECTION_HEADER *sec;
+    IMAGE_DATA_DIRECTORY *imports;
     int i, pos;
     DWORD err = GetLastError();
     FILE_VIEW *view;
@@ -536,6 +537,9 @@
     sec = (IMAGE_SECTION_HEADER*)((char*)&nt->OptionalHeader+nt->FileHeader.SizeOfOptionalHeader);
     if ((char *)(sec + nt->FileHeader.NumberOfSections) > ptr + header_size) goto error;
 
+    imports = nt->OptionalHeader.DataDirectory + IMAGE_DIRECTORY_ENTRY_IMPORT;
+    if (!imports->Size || !imports->VirtualAddress) imports = NULL;
+
     /* check the architecture */
 
     if (nt->FileHeader.Machine != IMAGE_FILE_MACHINE_I386)
@@ -595,6 +599,19 @@
                 ERR_(module)( "Could not map shared section %.8s\n", sec->Name );
                 goto error;
             }
+
+            /* check if the import directory falls inside this section */
+            if (imports && imports->VirtualAddress >= sec->VirtualAddress &&
+                imports->VirtualAddress < sec->VirtualAddress + size)
+            {
+                DWORD base = imports->VirtualAddress & ~page_mask;
+                DWORD end = imports->VirtualAddress + ROUND_SIZE( imports->VirtualAddress,
+                                                                  imports->Size );
+                if (end > sec->VirtualAddress + size) end = sec->VirtualAddress + size;
+                if (end > base) VIRTUAL_mmap( shared_fd, ptr + base, end - base,
+                                              pos, 0, PROT_READ|PROT_WRITE|PROT_EXEC,
+                                              MAP_PRIVATE|MAP_FIXED, NULL );
+            }
             pos += size;
             continue;
         }
