Ghidra Glossary

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z

 

A

Action

An operation the user can perform in Ghidra. All menu items, keybindings, and toolbar buttons are actions.

Address

A number that identifies a specific location in memory.

Address Range

A sequential set of addresses within a single Address Space identified by a minimum and maximum address.

Address Set

A collection of Addresses.

Address Space

The set of all legal addresses in memory for a given processor.  The nature of each address space is defined by the processor and language implementation.

Address Table

Two or more consecutive addresses in memory.

Analyzer

A software module that examines and annotates the code in a program to help reveal the behavior of that program. Examples are disassembly, function generation, and stack analysis.

Archive

See Data Archive.

See Project Archive.

Assembly Language

Programming language closely associated with an individual processor.

Auto Analysis

Automated way to run all the analyzers in the appropriate order (Example: function creation before stack analysis).

B

Back Reference

Another name for the Source Address in a reference.

Background Task

Any action that runs in the background allowing the user to perform other tasks.

Base Address

An address from which other addresses are derived using offsets.

Basic Block

A sequence of instructions that has no flow into or out of the sequence except for the top and bottom (i.e., no branching).

Basic Block Model

A Block Model which partitions code into small runs of instructions based on points where instruction flow changes.  Jump, Call, and Branch instructions will cause the execution flow to change.  Arithmetic and store/load instructions do not break a Basic Block because they do not change the execution.  A label will also end one block and begin another.

Binary Data

Bytes that make up a program.

Big Endian

Byte order for storage such that the high-order byte is at the starting address, as shown in the figure below, where increasing memory addresses are going from left to right.

Block Model

A model which partitions the code into address ranges based on some set of rules.  The most obvious model partitions the code into subroutines.

Bookmark

Marker used to designate frequently-visited or important locations.

Bookmark Type

Attaches meaning to a bookmark to indicate its use. Example: Note, Info, Analysis, etc.

Browser Field

Individual program elements displayed by the Code Browser's listing window.

Byte Viewer

A Ghidra component used to display and edit the bytes in a program.

C

Call Block Model

See Subroutine Model.

Call Graph

Graph displaying the relationships between "function calls" in a program.

Calling Convention

Determines how a function receives arguments and returns results. The available calling conventions are currently determined by the program's language specification.

Check-In

The process of contributing and merging changes from a "checked-out" program to the globally shared version of the program.

Check-Out

The process of retrieving the latest version of a shared program for the purpose of making changes.

Classpath

Path to search for Ghidra java code.

Clear

Process of removing information from a program (Example: symbols, comments, everything, etc).

Code Browser

 A Default Ghidra tool for displaying and working with program listings.

Code Block

See Basic Block

Code Unit

An Instruction or Data Item in the listing.

Computed Call

Call instruction whose destination is dynamically computed.

Conditional Call

A call instruction that is executed conditionally.

Conditional Jump

A jump instruction that is executed conditionally.

Connecting Tools

Process of coordinating two or more Tools with respect to navigation and selection.

Context Sensitive Menu

Menu that changes depending on cursor location.  In other words, only actions which are appropriate for the type of information on which the cursor resides are available from the menu.

Contrib Plugins

Term used to indicate user-contributed plugins.

Core Plugins

Term applied to plugins that are supported by the Ghidra team. 

Cycle Group

A sequence of data types applied using the same action repeatedly (i.e. byte->word->dword->qword).

D

Data (item)

Bytes in the program's memory that are not interpreted as instructions.

Data Type Archive

File used to store user-defined data types independent of a specific program.

Data Component

A data item inside a structure or array.

Data Type

A generalization of data which uniquely defines its specific attributes such as size, structure and  format. Example: byte, float, double.

Dead Code

Unreachable code.

Decompiler

Ghidra module for translating assembly language to C.

Default Ghidra Tool

1    A pre-configured CodeBrowser Tool that is ready to use when Ghidra is installed.

2    The tool that has been designated to run when you double click on a program in the Project Window.

Destination Address

The "To" address in a reference "From-To" address pair.  An address that is referred "To" by an instruction operand or pointer.

Diff

See Program Diff.

Direct References

Locations in memory where the bytes make up the address of the current location in the browser.  See Search for Direct References.

Disassemble

The process of interpreting program bytes as assembly instructions.

Disassemble, Restricted

The Ghidra disassembly mode where disassembly is restricted to the current selection.

Disassemble, Static

The Ghidra disassembly mode where code flows are not followed and only bytes at the current location or selection are disassembled.

DLL

Abbreviation for Dynamic Link Library.  A shared library on a Windows platform.

Docking Window Component

Ghidra user interface component that can be positioned and sized by the user.

DWord

A 4-byte integer data type.

Dynamic Data Type

Data types whose structure varies depending on the data bytes on which they are applied.

E

ELF

Abbreviation for Executable Linking Format.  File format used by Unix and Linux operating systems for storing executable programs.   

End of Line (EOL) Comment

Comments that are displayed to the right of the instruction.

Endian

Byte ordering.  See Big Endian, Little Endian.

Entry Point

Location in a program where execution begins.

Enum Data Type

Ghidra data type for modeling C-type enums.

Equate

A string substitution for numeric values appearing in instruction operands.

Exporter

Ghidra module for storing program information in various file formats (XML, HTML, ASCII, etc).

External Reference

A reference from a location in one program to a location in another program.

F

Fall Through Address

The address of the next sequential instruction to be executed.

Favorite Data Type

Ghidra data types that can be accessed via the popup-menu.

Flow

A.K.A. Instruction Flow or Control Flow. This the sequence of instructions that are executed as a program runs, including branching and fall-through.

Flow Graph

Graph that shows basic instruction flow.

Forward Refs

Another name for the Destination Address in a reference.

Fragment

A set of addresses used by the Program Tree to organize code.

Front End

See Ghidra Project Window.

Function

A program element that is referenced via a call instruction.  A function has an entry point, a body of instructions, a return data type, and optionally parameters, local variables, and local register variables.

Function Signature

The name, return type, and parameters of a function.

G

Ghidra

Ghidra is a java-based framework for reverse engineering.  It provides built-in capabilities for reverse engineering along with support for user-provided plugins. 

Ghidra File

Any file that is part of a Ghidra Project.

Ghidra Program File

Ghidra files containing information about a program.

Ghidra Project

Ghidra organizes work into projects. All work is performed in the context of a project. 

Ghidra Project Window

The main Ghidra interface for managing program files.

Global Namespace 

Symbols that are not in any specific namespace are said to be in the "global" namespace. The global namespace is the default namespace.

gzf

File extension given to Ghidra program database files that have been "zipped up".

H

Hex Integer

A display format in the Byte Viewer used to display integer values in hex.

Hijacked File

A local program file in a project that is "hiding" a shared program with the same name. Users cannot access the shared program until the local file is removed. 

Highlight

A more permanent type of selection.

History

List of changes made to labels or comments.

I

IDA Pro

        A commercially available reverse engineering tool.

Importer

Reads a file (.xml, .dll, .so, etc), and converts its contents into a Ghidra program.  Ghidra contains multiple importers (corresponding to a specific set of formats).  Additional importers can easily be added.  

Initialized Block

Memory block whose byte values exist as opposed to uninitialized blocks whose byte values are unknown.

Instance Settings, Data Type

Display options for individual data items in Ghidra. For example one byte can be displayed as decimal while another is displayed as hex.  Also see Data Type Default Settings.

Instruction

An assembly level command such as MOV, JMP, etc.

Intel Hex

Binary file format specified by Intel generally used for ROM images.

Isolated Entry Model

A block model defining subroutines.  A subroutine block must have only one entry point, but may share code with another subroutine.  The subroutine body will stop if another is called or a source entry point is encountered.

K

Key Binding

Keyboard shortcut for invoking Ghidra functionality.

L

Label 

Symbol name associated with an address in memory.

Language

The set of instructions associated with a computer processor.

Little Endian

Byte order for storage such that the low-order byte is at the starting address, as shown in the figure below, where the increasing memory addresses are going from right to left.

Listing

The display of the assembly language along with comments and other markup information.

Local Menu

A menu that is associated with a specific Ghidra docking window.

Local Symbol

A symbol that is local to a particular function.

M

Marker

Used to indicate a significant location in a program (ex: bookmarks, search results, analysis problems, etc).

Memory

The component of a program that contains the raw bytes and the addresses where those bytes are located in the program's address space.

Memory Block

A contiguous set of bytes anchored at an address.  Memory consists of one or more Memory Blocks.

Memory Map

Ghidra GUI that allows the user to view and edit the Memory Blocks of a program.

Memory Reference

A reference from a mnemonic or operand to another address in the same program.

Merge

  1. The process of resolving the differences between a checked out version with the globally shared version of a program.
  2. The process of retrieving changes made by others to the globally shared version of the program and incorporating those changes into your program without introducing your changes into the shared version (i.e. doing a check-in).

Microcode

Low-level instructions used to implement a machine instruction.

Mnemonic

The name of an instruction as it appears in the assembly listing. (i.e. mov, add, jmp, etc.) 

Modal

Dialogs that prevent user interaction with any other Ghidra component until the dialog is dismissed.

Motorola Hex

Binary file format specified by Motorola generally used for ROM images.

Multiple Entry Model

A block model defining subroutines.  A subroutine block may have multiple entry points and may not overlap code from other subroutines.

Multi-User

Term used when multiple users are working together using shared projects and programs.

N

Name Space

Defines a scope such that all symbol names within that scope are unique.

NE

Abbreviation for New Executable.  File format used by Windows 3.1.x  operating systems for storing executable programs.

O

Offcut

A reference into the middle of some instruction or data item. 

Offline

A situation when a shared Ghidra project cannot connect to the server repository.

Operand

The arguments of an assembly instruction.

Overlapped Code Model

A block model defining subroutines.  A subroutine block is all code accessible from a single entry point and terminates at returns.  Code may be shared with other subroutines.  Each subroutine is defined to include the overlapping code as part of its body.

Overlay

A memory block which corresponds to a physical memory space address within a corresponding overlay address space identified by the block name. This allows multiple memory blocks to be defined which correspond to the same physical address region. While the use of overlay blocks are useful to represent a memory range its' use has significant limitations for the decompiler and analysis which may be unable to determine when an overlay should be referenced.

P

Partitioned Code Model

A block model defining subroutines.  There is exactly one entry point which may be a call or any other flow instruction.  Each instruction belongs to exactly one subroutine (code is not shared).

PCode

A form of microcode used by Ghidra to model the semantics of machine- or assembly-level instructions.

PE

Abbreviation for Portable Executable.  File format used by Microsoft for storing executable programs.

PKI Authentication

One of the ways a Ghidra client can use to identify itself to the Ghidra server.

Plate Comment

Comments that are displayed as a block header above the instruction.  Plate comments are automatically surrounded by '*'s.

Plugin

Software bundles that can optionally be added to Ghidra to add additional functionality.

Plugin Dependency

The required presence of additional plugins before a particular plugin can be loaded.

Plugin Table

A table view of available Plugins that can be added to a tool, as shown in the Configure tool dialog.

Plugin Tree

A graphical view of available Plugins that can be added to a tool, as shown in the Configure tool dialog.  The Plugins are grouped by functionality and displayed in a tree-like format.

Popup menu

A context-sensitive menu that appears when you press the right mouse button.

Post Comment

Comments that are displayed below the instruction.

Pre Comment

Comments that are displayed above the instruction.

Project Archive

Project compressed into a single file for archival or transfer purposes.

Program

Ghidra's representation of an executable binary, its analysis and annotations.

Program Diff

Abbreviation for Program Difference.  It is the process of comparing and contrasting programs in order to determine their similarities and differences.

Primary Label

The most important label at a location. It is the label that will appear by default in all references to that location.

Processor Language

The assembly language for a processor.

Program Context

The set of register values at any location in a program.

Program Tree

The Ghidra GUI module that allows the user to organize the memory of a program hierarchically.

Project

A collection of files (programs, etc) and user configuration information.

Project Repository

A directory on a server that is used by Ghidra's Multi-User module to store shared programs.

Property

A storage mechanism used by plugins to store information in a program at specific addresses.

R

Read-Only Project

A project that can be opened for viewing but cannot be changed (i.e. someone else owns this project).

Redo

The process of repeating the last change that was "undone".

Reference

A link from the mnemonic or operand of an instruction to a destination.  The destination is an address, stack variable, or external address in another program.

Register

A special-purpose storage location in a processor.

Regular Expression

A character sequence used to match patterns in strings.

Relocation Table

Relocations are address locations that need to be updated to reflect where the program is loaded into memory.

Running Tools

An area on the Ghidra Project Window that displays a list of icons which represent Tools currently in use.

S

Scalar

A numeric value in a program.

Scope

The set of addresses for which a variable is defined.

Screen Element

The individual listing items that are displayed by the code browser (i.e. address, mnemonic, operand, comment, etc.)

Select Limited Flow

A Ghidra process that involves following a program’s logic but excluding all branches (conditional and unconditional).  Select Limited Flow often reveals the high-level algorithm associated with a program. Select Limited Flow is an option in the Code Browser.

Selection

A set of addresses that have been chosen by the user in order to perform some operation.

Shared Project

A project that is associated with a Ghidra Server.  The files in a shared project are accessible by other users.

Shared Program 

A program that can be modified by multiple users. Shared programs reside in project repositories on a server rather than in local  projects on the user's workstation.

Simple Block Model

See Basic Block Model

SLED

Table-based mechanism for specifying the syntax and semantics for a processor language.

SLEIGH

Improved version of SLED. Allows language-writers to more accurately represent all features of a language. 

Source Address

The "From" address in a reference "From-To" address pair.  An address of an instruction or pointer that refers to another address.

Stack Reference

A reference from a mnemonic or operand to a stack variable.

Stack Variable

A parameter or local variable definition on the stack frame defined by a function.

Static Disassembly

A version of disassembly where jump and call instructions are not followed.

Status Window

Area at the bottom of a Ghidra tool used to display messages to the user.

Subroutine Model

A Block Model which partitions code into address ranges based upon a set of rules defined by a specific model.  Subroutine models generally define blocks whose entry point(s) correspond to called locations.

Symbol

A label that associates a name with an address.

Symbol Table

A component of program containing all the label information. 

Symbol Tree 

Ghidra GUI module used to display symbols in a tree structure.

T

Tabbed Window

A window containing two or more sub-windows that can be selected using tabs.

Terminator

Any assembly instruction that has no flow (ex: Halt).

Text Highlighting

The mode in the Code Browser where all the uses of a given word are highlighted in yellow.

Thunk

Thunks are functions, called by other functions, usually to perform an indirect or external function call.

Tool Chest

An area on the Ghidra Project window that displays icons for the configured and saved Tools which are available to a user.

Tool

A collection of Plugins that work together to produce a useful GUI for performing some user level task.

Tool Tip

A popup description that appears when the mouse is hovered over a GUI item.

Toolbar (local and global)

An icon bar used to invoke Ghidra functionality.

U

Unconditional Call

A call instruction that always executes.

Unconditional Jump

A jump instruction that always executes.

Undefined Data

Bytes in the program that have yet to be defined as instructions or data.  By default, all bytes in a program begin as Undefined Data.

Undo

The process of removing the last change made to a program.

Undocked Window

A Ghidra window that has its own frame and can be positioned and sized independently from other Ghidra windows.

Unresolved External Reference

An external reference that has not been linked to any program in the project.

User Access List

The list of users that have access to a particular shared repository on a Ghidra server.  The list contains usernames and permissions.

User Authentication

The process of verifying the identity of a client user to the server.

V

Version Control

The process of maintaining multiple versions of a program as changes are made.

Version History

A dialog displaying the history of changes made to a program.  Any previous version of the program can be selected for viewing from the View History dialog.

Versioned Program

A program that has been placed under version control in a Ghidra project in order to maintain a history of all the changes made to that program.

Viewed Project

A project that has been open as read-only.  Projects that you do not own can only be opened as a Viewed Project.

W

Workspace

A virtual Ghidra desktop for a set of running tools.

X

XREF

Abbreviation for cross reference.  CodeBrowser's display of Source Addresses.