Displays data structures in an offset format, maps virtual address to a structure and shows the different fields and their values.
You can use the 'struct' command to make C (header) code structures, enums, and data types from the symbols.
Parameters
[Module!SymbolName (string)]
Module name combined with the symbol name (separated by a ! sign).
[AddressExpression (string)] (optional)
Address or an expression that evaluates as a virtual address. If you leave this argument empty, the symbol data is shown without mapping to data.
[pid ProcessId (hex)] (optional)
The Process ID (in the hex format) that we want to see the memory from its context (cr3).
[padding Padding (yesno)] (optional)
Create padding members. (default: yes)
[offset Offset (yesno)] (optional)
Show offsets. (default: yes)
[bitfield Bitfield (yesno)] (optional)
Allow bitfields in the union. (default: no)
[native Native (yesno)] (optional)
Use types from stdint.h instead of native types. (default: no)
[decl Declaration (yesno)] (optional)
Print declarations. (default: yes)
[def Definitions (yesno)] (optional)
Print definitions. (default: yes)
[func Functions (yesno)] (optional)
Print functions. (default: no)
[pragma Pragma (yesno)] (optional)
Print #pragma pack directives. (default: yes)
[prefix Prefix (string)] (optional)
Prefix for all symbols.
[suffix Suffix (string)] (optional)
Suffix for all symbols.
[inline Expantion (string)] (optional)
Specifies expansion of nested structures/unions. (default: unnamed)
none: only the top-most type is printed.
unnamed: unnamed types are nested.
all: all types are nested.
[output FileName (string)] (optional)
Specifies the output file if the user wants to save the printed data.
If you don't specify the pid, then the default pid is the current process (HyperDbg) process layout of memory.
In the Debugger Mode, the pid (parameter) is ignored. If you want to view another process memory, use the '.process' command to switch to another process memory layout.
Examples
The following command is used to show the nt!_EPROCESS in an offset format.
HyperDbg> dt nt!_EPROCESS
_EPROCESS
+0x0000 _KPROCESS Pcb
+0x0438 _EX_PUSH_LOCK ProcessLock
+0x0440 void* UniqueProcessId
+0x0448 _LIST_ENTRY ActiveProcessLinks
+0x0458 _EX_RUNDOWN_REF RundownProtect
+0x0460 uint32_t Flags2
+0x0460 uint32_t JobNotReallyActive, Pos 0, 1 Bit
+0x0460 uint32_t AccountingFolded, Pos 1, 1 Bit
+0x0460 uint32_t NewProcessReported, Pos 2, 1 Bit
+0x0460 uint32_t ExitProcessReported, Pos 3, 1 Bit
+0x0460 uint32_t ReportCommitChanges, Pos 4, 1 Bit
+0x0460 uint32_t LastReportMemory, Pos 5, 1 Bit
+0x0460 uint32_t ForceWakeCharge, Pos 6, 1 Bit
+0x0460 uint32_t CrossSessionCreate, Pos 7, 1 Bit
+0x0460 uint32_t NeedsHandleRundown, Pos 8, 1 Bit
+0x0460 uint32_t RefTraceEnabled, Pos 9, 1 Bit
+0x0460 uint32_t PicoCreated, Pos 10, 1 Bit
+0x0460 uint32_t EmptyJobEvaluated, Pos 11, 1 Bit
+0x0460 uint32_t DefaultPagePriority, Pos 12, 3 Bit
+0x0460 uint32_t PrimaryTokenFrozen, Pos 15, 1 Bit
+0x0460 uint32_t ProcessVerifierTarget, Pos 16, 1 Bit
+0x0460 uint32_t RestrictSetThreadContext, Pos 17, 1 Bit
+0x0460 uint32_t AffinityPermanent, Pos 18, 1 Bit
+0x0460 uint32_t AffinityUpdateEnable, Pos 19, 1 Bit
+0x0460 uint32_t PropagateNode, Pos 20, 1 Bit
...
The following command is used to map the virtual address at ffff948cc0b41080 to the nt!_EPROCESS structure.