PE Import Directory Parsing

0: kd> !process 0 0 msedge.exe
PROCESS ffff81822cc0a080
    SessionId: 1  Cid: 0f08    Peb: dbc4685000  ParentCid: 1b48
    DirBase: 3f0ae002  ObjectTable: ffffcc89acaf8e40  HandleCount: 175.
    Image: msedge.exe

0: kd> .process /p /r ffff81822cc0a080
Implicit process is now ffff8182`2cc0a080
.cache forcedecodeuser done
Loading User Symbols
.......................
0: kd> lm v m HTTP
Browse full module list
start             end                 module name
fffff800`15e50000 fffff800`15fd8000   HTTP       (no symbols)           
    Loaded symbol image file: HTTP.sys
    Mapped memory image file: c:\programdata\dbg\sym\HTTP.sys\43E8008A188000\HTTP.sys
    Image path: \SystemRoot\system32\drivers\HTTP.sys
    Image name: HTTP.sys
    Browse all global symbols  functions  data  Symbol Reload
    Image was built with /Brepro flag.
    Timestamp:        43E8008A (This is a reproducible build file hash, not a timestamp)
    CheckSum:         00188BE7
    ImageSize:        00188000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables: 

ImageName : HTTP.sys

ImageBaseAddress : fffff80015e5000

/Brepo flag : In the context of building C/C++ application, it is related to incremental linking and dependency tracking.

Parsing it Manually

_IMAGE_DOS_HEADER
0: kd> db fffff800`15e50000
fffff800`15e50000  4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00  MZ..............
fffff800`15e50010  b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00  ........@.......
fffff800`15e50020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
fffff800`15e50030  00 00 00 00 00 00 00 00-00 00 00 00 d8 00 00 00  ................

0: kd> dt combase!_IMAGE_DOS_HEADER  fffff800`15e50000 
   +0x000 e_magic          : 0x5a4d
   +0x002 e_cblp           : 0x90
   +0x004 e_cp             : 3
   +0x006 e_crlc           : 0
   +0x008 e_cparhdr        : 4
   +0x00a e_minalloc       : 0
   +0x00c e_maxalloc       : 0xffff
   +0x00e e_ss             : 0
   +0x010 e_sp             : 0xb8
   +0x012 e_csum           : 0
   +0x014 e_ip             : 0
   +0x016 e_cs             : 0
   +0x018 e_lfarlc         : 0x40
   +0x01a e_ovno           : 0
   +0x01c e_res            : [4] 0
   +0x024 e_oemid          : 0
   +0x026 e_oeminfo        : 0
   +0x028 e_res2           : [10] 0
   +0x03c e_lfanew         : 0n216

0: kd> ? 0n216
Evaluate expression: 216 = 00000000`000000d8
DOS STUB & RICH HEADER
fffff807`2a4a0040  0e 1f ba 0e 00 b4 09 cd-21 b8 01 4c cd 21 54 68  ........!..L.!Th
fffff807`2a4a0050  69 73 20 70 72 6f 67 72-61 6d 20 63 61 6e 6e 6f  is program canno
fffff807`2a4a0060  74 20 62 65 20 72 75 6e-20 69 6e 20 44 4f 53 20  t be run in DOS 
fffff807`2a4a0070  6d 6f 64 65 2e 0d 0d 0a-24 00 00 00 00 00 00 00  mode....$.......
fffff807`2a4a0080  bd 0a c4 77 f9 6b aa 24-f9 6b aa 24 f9 6b aa 24  ...w.k.$.k.$.k.$
fffff807`2a4a0090  f9 6b ab 24 53 6a aa 24-ed 00 ab 25 f6 6b aa 24  .k.$Sj.$...%.k.$
fffff807`2a4a00a0  ed 00 ae 25 f0 6b aa 24-ed 00 a9 25 fc 6b aa 24  ...%.k.$...%.k.$
fffff807`2a4a00b0  ed 00 a7 25 96 6b aa 24-ed 00 55 24 f8 6b aa 24  ...%.k.$..U$.k.$
fffff807`2a4a00c0  ed 00 a8 25 f8 6b aa 24-52 69 63 68 f9 6b aa 24  ...%.k.$Rich.k.$
fffff807`2a4a00d0  00 00 00 00 00 00 00 00                          ........
_IMAGE_NT_HEADERS64
0: kd> dt combase!_IMAGE_NT_HEADERS64 (fffff800`15e50000 + 0xd8)
   +0x000 Signature        : 0x4550
   +0x004 FileHeader       : _IMAGE_FILE_HEADER
   +0x018 OptionalHeader   : _IMAGE_OPTIONAL_HEADER64
_IMAGE_FILE_HEADER
0: kd> dt combase!_IMAGE_FILE_HEADER (fffff800`15e50000 + 0xd8 + 0x4)
   +0x000 Machine          : 0x8664
   +0x002 NumberOfSections : 0xe
   +0x004 TimeDateStamp    : 0x43e8008a
   +0x008 PointerToSymbolTable : 0
   +0x00c NumberOfSymbols  : 0
   +0x010 SizeOfOptionalHeader : 0xf0
   +0x012 Characteristics  : 0x22
DLL Characteristics
0: kd> .formats 0x22
Evaluate expression:
  Hex:     00000000`00000022
  Decimal: 34
  Decimal (unsigned) : 34
  Octal:   0000000000000000000042
  Binary:  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00100010
  Chars:   ......."
  Time:    Thu Jan  1 05:30:34 1970
  Float:   low 4.76441e-044 high 0
  Double:  1.67982e-322
0: kd> ? (0x22 & 0x00f) == 0x40
Evaluate expression: 0 = 00000000`00000000
  • IMAGE_DYNAMIC_BASE : Disabled
0: kd> ? (0x22 & 0x0f00) == 0x01
Evaluate expression: 0 = 00000000`00000000
  • DATA_EXECUTION_PREVENTION(DEP) : Disabled
0: kd> ? (0x22 & 0x0f00) == 0x04
Evaluate expression: 0 = 00000000`00000000
  • STRUCTURED_EXCEPTION_HANDLER: Disabled
_IMAGE_OPTIONAL_HEADER64
0: kd> dt combase!_IMAGE_OPTIONAL_HEADER64 (fffff800`15e50000 + 0xd8 + 0x18)
   +0x000 Magic            : 0x20b
   +0x002 MajorLinkerVersion : 0xe ''
   +0x003 MinorLinkerVersion : 0x14 ''
   +0x004 SizeOfCode       : 0x126c00
   +0x008 SizeOfInitializedData : 0x5b400
   +0x00c SizeOfUninitializedData : 0
   +0x010 AddressOfEntryPoint : 0x15f010
   +0x014 BaseOfCode       : 0x1000
   +0x018 ImageBase        : 0xfffff800`15e50000
   +0x020 SectionAlignment : 0x1000
   +0x024 FileAlignment    : 0x200
   +0x028 MajorOperatingSystemVersion : 0xa
   +0x02a MinorOperatingSystemVersion : 0
   +0x02c MajorImageVersion : 0xa
   +0x02e MinorImageVersion : 0
   +0x030 MajorSubsystemVersion : 0xa
   +0x032 MinorSubsystemVersion : 0
   +0x034 Win32VersionValue : 0
   +0x038 SizeOfImage      : 0x188000
   +0x03c SizeOfHeaders    : 0x600
   +0x040 CheckSum         : 0x188be7
   +0x044 Subsystem        : 1
   +0x046 DllCharacteristics : 0x4160
   +0x048 SizeOfStackReserve : 0x40000
   +0x050 SizeOfStackCommit : 0x1000
   +0x058 SizeOfHeapReserve : 0x100000
   +0x060 SizeOfHeapCommit : 0x1000
   +0x068 LoaderFlags      : 0
   +0x06c NumberOfRvaAndSizes : 0x10
   +0x070 DataDirectory    : [16] _IMAGE_DATA_DIRECTORY
Export Directory
0: kd> dt combase!_IMAGE_DATA_DIRECTORY (fffff800`15e50000 + 0xd8 + 0x18 + 0x70)
   +0x000 VirtualAddress   : 0
   +0x004 Size             : 0
Import Directory
0: kd> ?? sizeof(combase!_IMAGE_DATA_DIRECTORY)
unsigned int64 8

0: kd> dt combase!_IMAGE_DATA_DIRECTORY (fffff800`15e50000 + 0xd8 + 0x18 + 0x70 + 0x08)
   +0x000 VirtualAddress   : 0x87d90
   +0x004 Size             : 0xa0
_IMAGE_IMPORT_DESCRIPTOR
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
    union {
        DWORD Characteristics;    // 0 for terminating null import descriptor
        DWORD OriginalFirstThunk; // Import Address Name Table (INT)
    } DUMMYUNIONNAME;
    DWORD TimeDateStamp;          // Timestamp when the DLL was bound
    DWORD ForwarderChain;         // Index of the first forwarder chain, or -1
    DWORD Name;                   // ASCII string containing the DLL name
    DWORD FirstThunk;             // Import Address Table (IAT)
} IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR;
0: kd> dt combase!_IMAGE_IMPORT_DESCRIPTOR (fffff800`15e50000 + 0x87d90)
   +0x000 Characteristics  :  0x880d0  
   +0x000 OriginalFirstThunk : 0x880d0 // Points to Import Name Table
   +0x004 TimeDateStamp    : 0
   +0x008 ForwarderChain   : 0
   +0x00c Name             : 0x8aa38 // DLL Name
   +0x010 FirstThunk       : 0x872a0 //Points to Import Address Table
0: kd> da (fffff800`15e50000 + 0x8aa38)
fffff800`15edaa38  "ntoskrnl.exe"
NTOSKRNL.EXE
0: kd> dqs (fffff800`15e50000 + 0x880d0) L15C
fffff800`15ed80d0  00000000`000893ec
fffff800`15ed80d8  00000000`0008940a
fffff800`15ed80e0  00000000`00089426
fffff800`15ed80e8  00000000`00089446
fffff800`15ed80f0  00000000`0008945a
fffff800`15ed80f8  00000000`00089472
fffff800`15ed8100  00000000`00089480
.....
fffff800`15ed8b88  00000000`0008b438
fffff800`15ed8b90  00000000`0008b460
fffff800`15ed8b98  00000000`0008b488
fffff800`15ed8ba0  00000000`0008b4dc
fffff800`15ed8ba8  00000000`00000000
_IMAGE_IMPORT_BY_NAME
// Entry 0x00
0: kd> dt combase!_IMAGE_IMPORT_BY_NAME (fffff800`15e50000 + 00000000`000893ec)
   +0x000 Hint             : 0x815
   +0x002 Name             : [1]  "R"

0: kd> da (fffff800`15e50000 + 00000000`000893ec)
fffff800`15ed93ec  "..RtlEnumerateGenericTableAvl"

// Entry 0x1
0: kd> dt combase!_IMAGE_IMPORT_BY_NAME (fffff800`15e50000 + 00000000`0008940a)
   +0x000 Hint             : 0x4c4
   +0x002 Name             : [1]  "K"

0: kd> da (fffff800`15e50000 + 00000000`0008940a)
fffff800`15ed940a  "..KeQueryHighestNodeNumber"

//Entry 0x02 
0: kd> dt combase!_IMAGE_IMPORT_BY_NAME (fffff800`15e50000 + 00000000`00089426)
   +0x000 Hint             : 0x88f
   +0x002 Name             : [1]  "R"

0: kd> da (fffff800`15e50000 + 00000000`00089426)
fffff800`15ed9426  "..RtlInitializeGenericTableAvl"

// Entry 0x15a
0: kd> dt combase!_IMAGE_IMPORT_BY_NAME (fffff800`15e50000 + 00000000`0008b4dc)
   +0x000 Hint             : 0xc8
   +0x002 Name             : [1]  "E"

0: kd> da (fffff800`15e50000 + 00000000`0008b4dc)
fffff800`15edb4dc  "."

0: kd> da (fffff800`15e50000 + 00000000`0008b4dc+0x02)
fffff800`15edb4de  "ExFreeCacheAwareRundownProtectio"
fffff800`15edb4fe  "n"
FirstThunk Parsing
// ImageBaseAddress + FirstThunk

: kd> db (fffff800`15e50000 +0x872a0)
fffff800`15ed72a0  50 f1 96 10 00 f8 ff ff-50 b1 8e 10 00 f8 ff ff  P.......P.......
fffff800`15ed72b0  30 bd 90 10 00 f8 ff ff-80 40 87 10 00 f8 ff ff  0........@......
fffff800`15ed72c0  70 74 86 10 00 f8 ff ff-90 51 86 10 00 f8 ff ff  pt.......Q......
fffff800`15ed72d0  30 74 9e 10 00 f8 ff ff-30 1a 8f 10 00 f8 ff ff  0t......0.......
fffff800`15ed72e0  60 6c bf 10 00 f8 ff ff-40 ca c8 10 00 f8 ff ff  `l......@.......
fffff800`15ed72f0  30 a4 f9 10 00 f8 ff ff-f0 a3 93 10 00 f8 ff ff  0...............
fffff800`15ed7300  10 52 94 10 00 f8 ff ff-60 1e 8d 10 00 f8 ff ff  .R......`.......
fffff800`15ed7310  60 5e 84 10 00 f8 ff ff-90 45 9e 10 00 f8 ff ff  `^.......E......

0: kd> dq (fffff800`15e50000 +0x872a0)
fffff800`15ed72a0  fffff800`1096f150 fffff800`108eb150
fffff800`15ed72b0  fffff800`1090bd30 fffff800`10874080
fffff800`15ed72c0  fffff800`10867470 fffff800`10865190
fffff800`15ed72d0  fffff800`109e7430 fffff800`108f1a30
fffff800`15ed72e0  fffff800`10bf6c60 fffff800`10c8ca40
fffff800`15ed72f0  fffff800`10f9a430 fffff800`1093a3f0
fffff800`15ed7300  fffff800`10945210 fffff800`108d1e60
fffff800`15ed7310  fffff800`10845e60 fffff800`109e4590

nt!RtlEnumerateGenericTableAvl:
fffff800`1096f150 4883ec28        sub     rsp,28h
fffff800`1096f154 84d2            test    dl,dl
fffff800`1096f156 7405            je      nt!RtlEnumerateGenericTableAvl+0xd (fffff800`1096f15d)
fffff800`1096f158 4883613800      and     qword ptr [rcx+38h],0
fffff800`1096f15d 488d5138        lea     rdx,[rcx+38h]
fffff800`1096f161 e8cac1f9ff      call    nt!RtlEnumerateGenericTableWithoutSplayingAvl (fffff800`1090b330)
fffff800`1096f166 4883c428        add     rsp,28h
fffff800`1096f16a c3              ret

.....
.....

0: kd> dq (fffff800`15e50000 +0x872a0 + 0x08 * (0x15a)) L1
fffff800`15ed7d70  fffff800`108162e0

0: kd> u fffff800`108162e0
nt!ExFreeCacheAwareRundownProtection:
fffff800`108162e0 4053            push    rbx
fffff800`108162e2 4883ec20        sub     rsp,20h
fffff800`108162e6 488bd9          mov     rbx,rcx
fffff800`108162e9 488b4908        mov     rcx,qword ptr [rcx+8]
fffff800`108162ed e8fed20400      call    nt!ExFreeHeapPool (fffff800`108635f0)
fffff800`108162f2 488bcb          mov     rcx,rbx
fffff800`108162f5 e8f6d20400      call    nt!ExFreeHeapPool (fffff800`108635f0)
fffff800`108162fa 4883c420        add     rsp,20h

dqs : display a sequence of quadwords along with symbols.

// ImageBaseAddress + FirstThunk
0: kd> dqs (fffff800`15e50000 + 0x872a0) L20
fffff800`15ed72a0  fffff800`1096f150 nt!RtlEnumerateGenericTableAvl
fffff800`15ed72a8  fffff800`108eb150 nt!KeQueryHighestNodeNumber
fffff800`15ed72b0  fffff800`1090bd30 nt!RtlInitializeGenericTableAvl
fffff800`15ed72b8  fffff800`10874080 nt!KeInitializeEvent
fffff800`15ed72c0  fffff800`10867470 nt!KeWaitForSingleObject
fffff800`15ed72c8  fffff800`10865190 nt!KeSetEvent
fffff800`15ed72d0  fffff800`109e7430 nt!wcschr
fffff800`15ed72d8  fffff800`108f1a30 nt!MmIsThisAnNtAsSystem
fffff800`15ed72e0  fffff800`10bf6c60 nt!RtlUpcaseUnicodeString
fffff800`15ed72e8  fffff800`10c8ca40 nt!RtlUpcaseUnicodeChar
fffff800`15ed72f0  fffff800`10f9a430 nt!NlsLeadByteInfo
fffff800`15ed72f8  fffff800`1093a3f0 nt!MmSizeOfMdl
fffff800`15ed7300  fffff800`10945210 nt!IoGetRequestorProcess
fffff800`15ed7308  fffff800`108d1e60 nt!KeStackAttachProcess
fffff800`15ed7310  fffff800`10845e60 nt!KeUnstackDetachProcess
fffff800`15ed7318  fffff800`109e4590 nt!vsnwprintf
fffff800`15ed7320  fffff800`10d321b0 nt!RtlUnicodeToUTF8N
fffff800`15ed7328  fffff800`109e4a60 nt!strncmp
fffff800`15ed7330  fffff800`10880060 nt!MmMapLockedPagesSpecifyCache
fffff800`15ed7338  fffff800`1085bfc0 nt!IoAllocateMdl
fffff800`15ed7340  fffff800`10932820 nt!MmBuildMdlForNonPagedPool
fffff800`15ed7348  fffff800`10ba29b0 nt!RtlQueryFeatureConfigurationChangeStamp
fffff800`15ed7350  fffff800`1099fae0 nt!RtlQueryFeatureConfiguration
fffff800`15ed7358  fffff800`10ba29c0 nt!RtlRegisterFeatureConfigurationChangeNotification
fffff800`15ed7360  fffff800`10f2fd90 nt!RtlUnregisterFeatureConfigurationChangeNotification
fffff800`15ed7368  fffff800`10a10a20 nt!ZwQueryWnfStateData
fffff800`15ed7370  fffff800`10fcb010 nt!ExAllocatePoolWithTag
fffff800`15ed7378  fffff800`10ba2990 nt!RtlNotifyFeatureUsage
fffff800`15ed7380  fffff800`1093ca40 nt!KeQueryMaximumProcessorCountEx
fffff800`15ed7388  fffff800`10d25dd0 nt!RtlGetVersion
fffff800`15ed7390  fffff800`10a0dfe0 nt!ZwOpenKey
fffff800`15ed7398  fffff800`10d31230 nt!RtlIsStateSeparationEnabled

Parsing HTTP.sys using PEInsight

        ntoskrnl.exe
        ----------------
          Hint         Name                                                             |
        +-------------------------------------------------------------------------------+
        | 2069       | RtlEnumerateGenericTableAvl                                      |
        | 1220       | KeQueryHighestNodeNumber                                         |
        | 2191       | RtlInitializeGenericTableAvl                                     |
        | 1162       | KeInitializeEvent                                                |
        | 1335       | KeWaitForSingleObject                                            |
        | 1292       | KeSetEvent                                                       |
        | 3047       | wcschr                                                           |
        | 1431       | MmIsThisAnNtAsSystem                                             |
        | 2421       | RtlUpcaseUnicodeString                                           |
        | 2420       | RtlUpcaseUnicodeChar                                             |
        | 1496       | NlsLeadByteInfo                                                  |
        | 1479       | MmSizeOfMdl                                                      |
        | 849        | IoGetRequestorProcess                                            |
        | 1315       | KeStackAttachProcess                                             |
        | 1330       | KeUnstackDetachProcess                                           |
        | 2967       | _vsnwprintf                                                      |
        | 2414       | RtlUnicodeToUTF8N                                                |
        | 3025       | strncmp                                                          |
        | 1441       | MmMapLockedPagesSpecifyCache                                     |
        | 710        | IoAllocateMdl                                                    |
        ..........
        ..........
        ..........
        | 1258       | KeReleaseMutex                                                   |
        | 145        | ExAcquireRundownProtectionCacheAware                             |
        | 157        | ExAllocateCacheAwareRundownProtection                            |
        | 285        | ExReleaseRundownProtectionCacheAware                             |
        | 200        | ExFreeCacheAwareRundownProtection                                |
        +-------------------------------------------------------------------------------+
0: kd> ?? sizeof(_IMAGE_IMPORT_DESCRIPTOR)
unsigned int64 0x14
_IMAGE_IMPORT_DESCRIPTOR
0: kd> dt combase!_IMAGE_IMPORT_DESCRIPTOR  (fffff800`15e50000 + 0x87d90 + 0x14)
   +0x000 Characteristics  : 0x87e30
   +0x000 OriginalFirstThunk : 0x87e30 // Import Name Table
   +0x004 TimeDateStamp    : 0
   +0x008 ForwarderChain   : 0
   +0x00c Name             : 0x8aa62 // DLL Name
   +0x010 FirstThunk       : 0x87000 // Import Address Table
HAL.dll
0: kd> da  (fffff800`15e50000 + 0x8aa62)
fffff800`15edaa62  "HAL.dll"
0: kd> dqs  (fffff800`15e50000 + 0x87e30)
fffff800`15ed7e30  00000000`0008aa46 
fffff800`15ed7e38  00000000`00000000 // Ends Entry for HAL.dll 
fffff800`15ed7e40  00000000`0008b1d6
fffff800`15ed7e48  00000000`0008b1b2

0: kd> db  (fffff800`15e50000 + 00000000`0008aa46)
fffff800`15edaa46  54 00 4b 65 51 75 65 72-79 50 65 72 66 6f 72 6d  T.KeQueryPerform
fffff800`15edaa56  61 6e 63 65 43 6f 75 6e-74 65 72 00 48 41 4c 2e  anceCounter.HAL.
fffff800`15edaa66  64 6c 6c 00 2c 00 46 72-65 65 43 6f 6e 74 65 78  dll.,.FreeContex
fffff800`15edaa76  74 42 75 66 66 65 72 00-4c 00 53 73 6c 47 65 74  tBuffer.L.SslGet
_IMAGE_IMPORT_BY_NAME
0: kd> dt combase!_IMAGE_IMPORT_BY_NAME (fffff800`15e50000 + 00000000`0008aa46)
   +0x000 Hint             : 0x54
   +0x002 Name             : [1]  "K"

// HINT
0: kd> da  (fffff800`15e50000 + 00000000`0008aa46)
fffff800`15edaa46  "T"

// NAME 
0: kd> da  (fffff800`15e50000 + 00000000`0008aa46 + 0x2)
fffff800`15edaa48  "KeQueryPerformanceCounter"
FirstThunk Parsing
// ImageBaseAddress + FirstThunk
0: kd> dqs  (fffff800`15e50000 + 0x87000)
fffff800`15ed7000  fffff800`1083c380 nt!KeQueryPerformanceCounter
fffff800`15ed7008  00000000`00000000
fffff800`15ed7010  fffff800`128e1450 ndis!NdisGetJobObjectCompartmentId
fffff800`15ed7018  fffff800`12837a20 ndis!NdisGetThreadObjectCompartmentId
fffff800`15ed7020  00000000`00000000

Parsing HTTP.sys using PEInsight

       HAL.dll
        ----------------
          Hint         Name                                                             |
        +-------------------------------------------------------------------------------+
        | 84         | KeQueryPerformanceCounter                                        |
        +-------------------------------------------------------------------------------+

Parsing it with Extension command

0: kd> !dh -f HTTP

File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
    8664 machine (X64)
       E number of sections
43E8008A time date stamp Tue Feb  7 07:36:02 2006

       0 file pointer to symbol table
       0 number of symbols
      F0 size of optional header
      22 characteristics
            Executable
            App can handle >2gb addresses

OPTIONAL HEADER VALUES
     20B magic #
   14.20 linker version
  126C00 size of code
   5B400 size of initialized data
       0 size of uninitialized data
  15F010 address of entry point
    1000 base of code
         ----- new -----
fffff80015e50000 image base
    1000 section alignment
     200 file alignment
       1 subsystem (Native)
   10.00 operating system version
   10.00 image version
   10.00 subsystem version
  188000 size of image
     600 size of headers
  188BE7 checksum
0000000000040000 size of stack reserve
0000000000001000 size of stack commit
0000000000100000 size of heap reserve
0000000000001000 size of heap commit
    4160  DLL characteristics
            High entropy VA supported
            Dynamic base
            NX compatible
            Guard
       0 [       0] address [size] of Export Directory
   87D90 [      A0] address [size] of Import Directory
  162000 [   1D810] address [size] of Resource Directory
   7A000 [    C834] address [size] of Exception Directory
  180800 [    25F0] address [size] of Security Directory
  180000 [     97C] address [size] of Base Relocation Directory
   61590 [      54] address [size] of Debug Directory
       0 [       0] address [size] of Description Directory
       0 [       0] address [size] of Special Directory
       0 [       0] address [size] of Thread Storage Directory
   5C8A0 [     118] address [size] of Load Configuration Directory
       0 [       0] address [size] of Bound Import Directory
   87000 [     D80] address [size] of Import Address Table Directory
       0 [       0] address [size] of Delay Import Directory
       0 [       0] address [size] of COR20 Header Directory
       0 [       0] address [size] of Reserved Directory
0: kd> dps HTTP+87000
fffff800`15ed7000  fffff800`1083c380 nt!KeQueryPerformanceCounter
fffff800`15ed7008  00000000`00000000
fffff800`15ed7010  fffff800`128e1450 ndis!NdisGetJobObjectCompartmentId
fffff800`15ed7018  fffff800`12837a20 ndis!NdisGetThreadObjectCompartmentId
fffff800`15ed7020  00000000`00000000
fffff800`15ed7028  fffff800`129d8610 NETIO!NsiRegisterChangeNotification
fffff800`15ed7030  fffff800`129f00b0 NETIO!CancelMibChangeNotify2
fffff800`15ed7038  fffff800`129fab00 NETIO!NsiDeregisterChangeNotification
fffff800`15ed7040  fffff800`129d8420 NETIO!NotifyUnicastIpAddressChange
fffff800`15ed7048  fffff800`129f9530 NETIO!NmrClientDetachProviderComplete
fffff800`15ed7050  fffff800`129d16e0 NETIO!NmrClientAttachProvider
fffff800`15ed7058  fffff800`129f95f0 NETIO!NmrWaitForClientDeregisterComplete
fffff800`15ed7060  fffff800`129f9590 NETIO!NmrDeregisterClient
fffff800`15ed7068  fffff800`129d0bf0 NETIO!NmrRegisterClient
fffff800`15ed7070  fffff800`129d9890 NETIO!KfdFreeEnumHandle
fffff800`15ed7078  fffff800`129cc500 NETIO!KfdDerefFilterContext
.....

To dump the everything from executable

!dh -a fffff800`15e50000