EZ LearnEZ Learn
Courses
EZ Board
Dashboard
All articles
Educationiatimportsapi

Import Address Table (IAT) Analysis

Reading the IAT to infer malware behaviour before execution: suspicious API patterns, what a stripped IAT means, and how to use PEStudio to map capabilities from imports alone.

Ashish Revar12 May 202615 min read48 views
1 video lesson 1 EZ Byte 7:47 total
Sign in to track your progress

EZ Bytes · quick recaps

IAT Analysis: Inferring Malware Behavior

31s

Video lesson

What is the Import Address Table?

The Import Address Table (IAT) lists the external functions from Windows DLLs that the program calls. When Windows loads a PE file, it resolves the addresses of all imported functions and writes them into the IAT. The program then calls these functions through the IAT entries.

Examining the IAT reveals a great deal about a binary's intended behaviour without running it. Every imported function is a capability declaration.

Reading the IAT in PEStudio

Open any PE file in PEStudio. Navigate to the Imports tab. For each imported DLL, you see the function names. PEStudio automatically flags known suspicious functions in red.

Look for:

  • DLLs that suggest network activity (wininet.dll, ws2_32.dll)
  • DLLs that suggest process manipulation (kernel32.dll with injection APIs)
  • DLLs that suggest registry access (advapi32.dll with Reg* functions)
  • DLLs that suggest cryptography (crypt32.dll, bcrypt.dll)

Suspicious API Patterns

Imported Function(s)Behavioural Indication
CreateFileA/W, WriteFile, DeleteFileA/WFile manipulation. Dropping payloads or deleting evidence.
RegOpenKeyExA/W, RegSetValueExA/WRegistry modification. Establishing persistence via Run key.
VirtualAlloc, VirtualProtectMemory allocation with custom permissions. Strong indicator of shellcode injection or runtime unpacking.
CreateRemoteThread, WriteProcessMemoryCode injection into another process.
OpenProcess with PROCESS_ALL_ACCESSTargeting another process for injection or hollowing.
InternetOpenA, HttpSendRequestAHTTP communication. Likely contacting a C2 server.
URLDownloadToFileASingle-call downloader pattern. Downloads payload from URL.
GetAsyncKeyState, SetWindowsHookExAKeyboard monitoring. Keylogger behaviour.
IsDebuggerPresent, CheckRemoteDebuggerPresentAnti-debugging checks.
CreateProcessA/WProcess creation. May spawn cmd.exe or powershell.exe.
FindResource, LoadResource, LockResourceExtracts embedded payload from PE resources. Dropper pattern.
CryptEncrypt, CryptGenKeyCryptographic operations. May indicate ransomware.

The Stripped IAT: A Major Red Flag

A binary whose import table contains only LoadLibraryA and GetProcAddress is resolving its real imports at runtime to hide them from static analysis.

Normal binary IAT:
  kernel32.dll: CreateFileA, WriteFile, VirtualAlloc, CreateProcessA...
  wininet.dll:  InternetOpenA, HttpOpenRequestA, HttpSendRequestA...
  advapi32.dll: RegOpenKeyExA, RegSetValueExA...

Packed/obfuscated binary IAT:
  kernel32.dll: LoadLibraryA, GetProcAddress

The malware uses LoadLibraryA to load any DLL at runtime and GetProcAddress to resolve any function by name: leaving nothing visible to static analysis. This is characteristic of packed or manually-mapped executables.

Next action when you see a stripped IAT: check entropy, check section names, run DIE. The binary is almost certainly packed: unpack it before proceeding.

API Hashing

Some malware resolves imports without calling LoadLibraryA at all. It computes a hash of each API name and walks the export table of loaded DLLs to find a matching hash. No import table entry is created.

; API hashing loop (simplified)
hash_loop:
    mov  eax, [esi]          ; load current export name
    call compute_hash        ; compute custom hash of name
    cmp  eax, 0xDEADBEEF     ; compare to target hash
    je   found               ; if match, use this function address
    add  esi, 4              ; next export
    jmp  hash_loop

The hardcoded hash values (0xDEADBEEF in this example) are the only trace of the intended API call. Finding these in a disassembler requires computing the hash function in reverse, or running the sample and breaking when the hash matches.

Capability Mapping with Capa

Rather than manually reading every import, run Capa (Mandiant) on the binary:

capa suspicious.exe

Capa maps code patterns to behavioural capabilities and MITRE ATT&CK techniques:

+------------------------------------------------------+
| CAPABILITY                       | NAMESPACE          |
+------------------------------------------------------+
| delete shadow copies             | impact             |
| query registry                   | discovery          |
| communicate via HTTP             | c2                 |
| capture keystrokes               | collection         |
+------------------------------------------------------+

Capa reads more than just the IAT: it analyses code patterns and recognises capability implementations even when imports are stripped.

Practical Workflow

1. Open in PEStudio → check Imports tab
2. If IAT is stripped (only LoadLibrary + GetProcAddress):
   → check entropy → confirm packing → unpack first
3. If IAT is visible:
   → flag suspicious API groups from the table above
   → run Capa for behavioural capability summary
   → note APIs as predicted IOCs before dynamic analysis
4. Compare predicted behaviour against dynamic analysis results

Predicted behaviour from the IAT becomes a hypothesis. Dynamic analysis confirms or refutes it.

Assessments

Unit Assessment

Fundamentals of Malware Analysis

20 questions30 minPass: 60%

Start exam →

Comprehensive Assessment

REMA: Complete Assessment

120 questions90 minPass: 60%

Start final exam →

Practice

Lock it in with a game

Ungraded practice for this topic. Clearing a game or lab for the first time earns EZ Board points when you are signed in.

Lab

PE Autopsy: Triage a Real Signed Windows Binary

15 tasks from this unit. Free to play. Earn 30 EZ Board points on your first clear.

Play

Lab

Packed and Unpacked: Defeat a Packer

13 tasks from this unit. Free to play. Earn 30 EZ Board points on your first clear.

Play

Crossword

Fundamentals of Malware Analysis

11 key terms from this unit. Free to play.

Play Leaderboard

Race

PE Pass

6 checkpoints from this unit. Free to play. Earn 30 EZ Board points on your first clear.

Play

Related to this topic

Continue learning

Listen

Malware Blueprints in Portable Executable Headers

A deep dive into the Portable Executable (PE) structure used by Windows binaries — how analysts decode executable metadata to uncover malicious intent, compiler behaviour, packing indicators, and execution flow.

Reference material

eBook

REMA — eBook

v1.0

Open resource

Cheatsheet

REMA — Cheatsheet

v1.0

Open resource

MCQ Bank

REMA — MCQ Bank

v1.0

Open resource

Question Bank

REMA — Question Bank

v1.0

Open resource

External references

Capa — Mandiant Capability Detection

Run against any PE to get MITRE ATT&CK mapped capabilities. Works even when imports are partially stripped.

tool
MITRE ATT&CK — Windows API Technique Coverage

Browse ATT&CK techniques by tactic. Each technique lists the Windows APIs commonly used to implement it.

reference
EpochZero Article — njRAT Static Analysis Walkthrough

Practical walkthrough of IAT analysis on a real RAT sample — PE structure, .NET decompilation, and IOC extraction.

article

Discussion

Loading comments…
More articlesTest your knowledge
EZ MentorAI · Free

Import Address Table (IAT) Analysis

Hi! I'm EZ Mentor

Your AI tutor for
Import Address Table (IAT) Analysis

Sign in to ask, it's free.

EZ Mentor is AI-powered · Answers may not be perfect · 10 free questions / day

EZ LearnEZ Learn

Structured learning across Reverse Engineering, Cloud Security, and Research Methodology, plus games and practice tools in EZ Arena. Free, and open to anyone.

EZ Learn

  • Courses
  • EZ Articles
  • EZ Watch
  • EZ Talks
  • EZ Bytes
  • Cyber Hygiene

EZ Library

  • All Resources
  • eBooks & PDFs
  • Question Banks
  • MCQ Banks
  • Cheatsheets

EZ Exams

  • All Exams
  • REMA
  • Cloud Security
  • Research Methodology
  • Python for Cyber Security
  • Cyber Law & IPR
  • Community
  • EZ Board

EZ Arena

  • EZ Games
  • Live Quiz
  • ML Challenges
  • दिशा - Hygiene
  • सजग - Awareness
  • अभ्यास - Practice

Platform

  • About
  • Contact
  • Terms of Use
  • Disclaimer
  • Verify Certificate
  • Events

© 2026 EZ Learn by EpochZero. Educational content for learning purposes.

Platform Lead: Ashish Revar