courses

IDA Pro Cheat Sheet

Navigation

Key Action
G Jump to address
Enter Follow jump / call
Esc Jump back
Alt+← / Alt+→ Navigate history
Ctrl+L Jump to name (label)
Ctrl+P Jump to function
Ctrl+S Jump to segment
Ctrl+E Jump to entry point
Ctrl+G Jump to offset in segment
Space Toggle graph ↔ text view
Tab Toggle disasm ↔ decompiler

Views & Windows

Key Action
Alt+1 IDA View (disassembly)
F5 Open pseudocode window (decompiler)
Shift+F5 Signatures window
Shift+F7 Segments window
Shift+F8 Selectors window
Shift+F9 Structures window
Shift+F11 Functions window
Shift+F12 Strings window
Alt+F4 Exit
Ctrl+W Close window
Ctrl+Tab Next window

Naming & Comments

Key Action
N Rename (address, function, variable)
; Add repeatable comment
: Add regular comment
Ins Add anterior line
Shift+Ins Add posterior line
Alt+M Mark position (bookmark)
Ctrl+M Jump to bookmark
Ctrl+; Edit comment (decompiler)
Ctrl+K Edit function comment

Code & Data Definition

Key Action
C Convert to code
D Convert to data
A Convert to ASCII string
U Undefine
P Create function
Alt+P Edit function properties
E Mark as function end
H Hex number representation
Q Octal representation
B Binary representation
R Character representation
M Enum member representation

Cross-References (Xrefs)

Key Action
X Xrefs to current address
Ctrl+X Xrefs from current address
Alt+I Xrefs to operand
Ctrl+I Xrefs from operand
Ctrl+J Jump to xref (when one exists)

Search

Key Action
Alt+B Search binary (bytes/pattern)
Alt+T Search text
Ctrl+F Search in decompiler
Alt+I Search immediate value
Ctrl+Alt+B Search binary sequence
Alt+↑ / Alt+↓ Next/prev search result

Decompiler (Hex-Rays)

Key Action
F5 Decompile function
Tab Toggle decompiler ↔ disasm
N Rename variable / label
Y Set type (prototype)
Ctrl+; Add comment
/ Comment in pseudocode
H Toggle hex/dec
M Apply enum to value
Space Rename label at cursor
Ctrl+F5 Decompile whole program
Alt+F5 Refresh decompiler
Ins Insert user-defined line
X Xrefs to variable / call

Graph View

Key Action
Space Toggle graph ↔ text
Ctrl+scroll Zoom in/out
Ctrl+Shift+E Fit graph to window
G Jump to address
Alt+← Go back
Enter Follow edge
W Group nodes
Ctrl+Shift+G Refresh graph

Structs & Types

Key Action
Y Set type at cursor
T Apply struct offset
Ctrl+K Edit stack frame
Alt+S Add struct type
Shift+F9 Structures window
Ctrl+Z Undo type change
; Add struct member comment
D Expand struct member

Patching

Key Action
F2 Patch byte at cursor
Alt+F2 Patch word
Ctrl+Alt+F2 Patch dword
via menu Edit → Patch Program → Change Bytes
via menu Edit → Patch Program → Apply patches

Produce a patched binary: Edit → Patch Program → Apply patches to input file

Signatures & FLIRT

Key Action
Shift+F5 Signature manager
via menu File → Load File → FLIRT Signature

Common sig packs: vc32, vc64, gnulnx_x86, gnulnx_x64, mssdk

sigmake / pelf — build custom sigs from known libs

IDAPython Quickstart

# Current address
here()           # or idc.here()

# Read / write bytes
get_byte(ea)
patch_byte(ea, val)

# Names
get_name(ea)
set_name(ea, "my_func")

# Iterate function instructions
for ea in idautils.FuncItems(here()):
    print(hex(ea), idc.print_insn_mnem(ea))

# Iterate all functions
for f in idautils.Functions():
    print(hex(f), get_func_name(f))

# Xrefs to address
for ref in idautils.CodeRefsTo(ea, 0):
    print(hex(ref))

# Get/set comment
get_cmt(ea, 0)           # regular
set_cmt(ea, "note", 0)

Useful Plugins & Resources

Tool Purpose
IDAGraf / Diaphora Binary diffing
idat / idat64 Headless / batch mode
findcrypt Crypto constant detection
BinDiff Patch analysis / diffing
IDA MINSC Python scripting helpers
HexRays Docs Official reference

Batch decompile:

idat64 -A -Ohexrays:outdir/ target.exe

Memory Model Quick Reference

Segment Typical contents
.text / CODE Executable instructions
.data Initialized globals
.bss Uninitialized globals
.rdata / .rodata Read-only data, strings, vtables
.idata / .plt Import table / PLT stubs
.edata Export table
STACK Local variables (per frame)
HEAP Dynamic allocations (runtime)

Calling Conventions (x86-64)

Convention Arg registers Callee-saved Return
System V AMD64 (Linux) rdi, rsi, rdx, rcx, r8, r9 rbx, rbp, r12–r15 rax (rdx)
Microsoft x64 (Windows) rcx, rdx, r8, r9 rbx, rbp, rdi, rsi, r12–r15 rax
x86 stdcall stack (right→left) ebx, esi, edi, ebp eax
x86 cdecl stack (right→left), caller cleans ebx, esi, edi, ebp eax
x86 fastcall ecx, edx, then stack ebx, esi, edi, ebp eax

Common IDA Color Codes (graph view)

Color Meaning
Blue Default / unvisited block
Red False branch (jz not taken, etc.)
Green True branch (jz taken, etc.)
Yellow / orange Currently selected node
Grey No successor (ret / jmp out)