โ†Online Cyber Tools PE Analyzer & Disassembler Windows PE ยท x86 / x64 / ARM64 ยท 100% in-browser
๐Ÿ“‚

Drop a Windows executable

.exe, .dll, .sys โ€” PE / PE+ format (up to 200 MB)

Initialising disassembler engine in background...

โœ“ Disassembler engine ready (Capstone)

๐Ÿ“
๐Ÿ“‹ Overview
DOS Header
e_magic, e_lfanew, ...
NT Headers
File Header
Optional Header
Data Directories
Sections ()
Imports ()
Exports ()
Functions ()

Overview

PE file overview โ€” format, architecture, image base, entry point, subsystem, and section summary.
Format
Architecture
File size
Image base
Entry point
Subsystem
Linker
OS version
Sections
Imports
Exports
DLL flags

Section ยท

Section header details โ€” virtual address, sizes, characteristics, and entropy.
Virtual address
Virtual size
Raw offset
Raw size
Characteristics
Entropy

Import ยท

Imported functions for the selected DLL โ€” kind, ordinal/hint, name, and IAT RVA.
KindOrdinal/HintNameIAT RVA

Exports ยท

Ordinal base: ยท functions ยท named

Exported functions from this PE โ€” ordinal, name, and RVA or forwarder.
OrdinalNameRVA / Forwarder

IMAGE_FILE_HEADER


                    

IMAGE_OPTIONAL_HEADER


                    

IMAGE_DOS_HEADER


                    

Data Directory ยท

Data directory entry โ€” RVA and size.
RVA
Size
Select a section to view its bytes.
Select a code section (โ–ถ) to disassemble.
Section "" is not marked executable. Disassembly may produce garbage.
Select a section to extract strings.
โ€ฆ more (truncated).
๐Ÿ” Inspector
โš  Notable findings
Section context
Section:
Code:
Entropy:
File
Size:
Format: PE ()
Arch:
Disassembler:
ยท ยท
โš  Error

PE Analyzer & Disassembler โ€” Inspect Windows Executables in Your Browser

This online PE analyzer parses Windows Portable Executable (PE / PE+) files โ€” .exe, .dll, .sys, drivers, and packed samples โ€” and disassembles executable sections into x86, x86-64, or ARM64 assembly. Use it as an EXE analyzer, DLL import table viewer, PE header parser, string extractor, hex viewer, and malware-triage scratchpad before opening a heavier reverse-engineering suite. Everything runs in your browser using a vendored copy of Capstone compiled to WebAssembly. Your binary is never uploaded to a server.

What is a PE file?

The Portable Executable format is Microsoft's container for code and data on Windows. It traces its lineage to COFF (Common Object File Format), and Microsoft documents the modern layout in the PE/COFF specification. A PE file starts with a legacy DOS MZ stub (so old MS-DOS systems can print "This program cannot be run in DOS mode."), followed by the modern PE signature, the COFF File Header, an Optional Header (mandatory despite the name), Data Directories, and a table of Sections holding the actual code and data.

PE header walkthrough

RVA (Relative Virtual Address) is an offset from the image base when loaded in memory. Converting RVA โ†’ file offset requires walking the section table to find which section's virtual range contains the RVA, then translating relative to that section's raw data pointer.

Typical first-pass questions are: is this PE32 or PE32+? Which machine type is declared? Does the entry point land in .text or a suspicious custom section? Are imports resolved by name or ordinal? Do the DLL characteristics advertise ASLR, DEP, high-entropy VA, or Control Flow Guard? Are any sections both writable and executable, unusually high entropy, or much larger virtually than on disk?

Example triage workflow

  1. Load the sample and confirm the file signature, machine type, subsystem, image base, entry point RVA, section count, and compile timestamp.
  2. Inspect sections for names such as .text, .rdata, .data, .rsrc, UPX0, or random-looking labels, then compare raw size, virtual size, execute/write flags, and entropy.
  3. Review imports to spot API families such as networking, process injection, registry access, crypto, service control, persistence, or anti-debugging calls.
  4. Read strings and hex for URLs, mutex names, file paths, command lines, embedded scripts, resource markers, and magic bytes.
  5. Disassemble code sections and jump to the entry point to follow prologues, thunks, import calls, conditional branches, and obvious unpacking stubs.

Concrete examples

What is disassembly?

Disassembly converts raw machine bytes into a human-readable representation of the corresponding CPU instructions (mnemonic + operands). It is not decompilation: there is no recovery of variable names, types, control structures, or source comments. The output is a flat instruction listing โ€” branches and calls show their target addresses but the structure remains linear.

Modern decompilers (Ghidra, IDA, Binary Ninja) reconstruct higher-level pseudocode by performing control-flow analysis, type inference, and pattern matching. These workflows require substantial heap memory and are not currently practical to run in a browser tab. This tool covers the disassembly half โ€” the same first-pass view you would get from objdump -d or llvm-objdump.

Architecture cheat sheets

x86-64 (AMD64) registers

x86-64 general-purpose register naming across 64/32/16/8-bit widths with conventional uses.
64-bit32-bit16-bit8-bitConventional use
RAXEAXAXALReturn value / accumulator
RCXECXCXCL4th arg (Win64) / 1st arg (Linux)
RDXEDXDXDL3rd arg / I/O
RBXEBXBXBLCallee-saved base
RSPESPSPSPLStack pointer
RBPEBPBPBPLFrame pointer (often omitted)
RSI / RDIESI / EDISI / DISIL / DIL2nd/1st arg (Linux) / source / destination
R8โ€“R15R8Dโ€“R15DR8Wโ€“R15WR8Bโ€“R15BExtra args + scratch

The Windows x64 calling convention passes the first four integer arguments in RCX, RDX, R8, R9 and reserves 32 bytes of shadow space on the stack. System V (Linux / macOS) uses RDI, RSI, RDX, RCX, R8, R9 and no shadow space.

ARM64 (AArch64) registers

X0โ€“X30 are 64-bit general-purpose; W0โ€“W30 their 32-bit aliases. X0โ€“X7 carry function arguments (X0 = first arg, also return value). X29 is the frame pointer, X30 the link register, SP the stack pointer. There is no separate program counter exposed to user code; PC-relative addressing handles it implicitly.

Use cases

Security limits and ethics

Only analyse binaries you are authorised to inspect. Loading a malicious binary into this tool is designed to be low risk because the file is read as data and never executed, but extracted strings, resources, URLs, and copied commands may still be harmful. For active malware analysis, use an isolated VM and dedicated tooling โ€” this is a static triage aid, not an antivirus engine, EDR, sandbox, emulator, YARA scanner, or exploit detector.

Static disassembly has limits: packed or encrypted samples may hide their real code until runtime, anti-disassembly tricks can confuse linear instruction streams, jump tables and mixed code/data can make branch targets ambiguous, and stripped binaries rarely preserve symbol names. Browser memory also matters; very large executables or debug-heavy binaries can be slow even though the UI accepts files up to 200 MB.

Standards & references