# view system state (registers, memory, variables)

### Examples

```clike
? printf("Result : %s", @rcx));
? printf("Process name: %s", $pname);
? print(dq(@rcx));
? print($proc+@rdx);
? print(poi(@rax+a0));
? printf("Result : %ws", poi($proc+10));
? printf("Result : %s", poi($proc+10));
? print(dw(NtCreateFile+10));
? print(dw(NtCreateFile+@rcx+($proc|3+poi(poi(@rax)))));
```

### Description

```clike
? printf("Result : %s", @rcx);
```

Print data as an ASCII string pointed by **rcx** register.

```clike
? printf("Process name: %s", $pname);
```

Print the process name.

```clike
? print(dq(@rcx));
```

Print data as an 8-byte hex, pointed by **rcx** register.

```clike
? print($proc+@rdx);
```

Print value pointed by `$proc+@rdx` which **$proc** is equivalent to current `_EPROCESS` added to the **rdx** register.

```clike
? print(poi(@rax+a0));
```

Print value of an address, which first, **rax** register is added with **0xa0** constant then a dereference occurs and the target is shown as a QWORD hex.

```clike
? print("Result : %ws", poi($proc+10));
? printf("Result : %s", poi($proc+10));
```

Two values, first is **$proc** (current `_EPROCESS`) added with **0x10**, then a dereference occurs, and the target pointer in the dereferenced location is shown as a wide-char string.

Second is **$proc** (current `_EPROCESS`) added with **0x10**, then a dereference occurs, and the target pointer in the dereferenced location is shown as an ASCII string.

```clike
? print(dw(NtCreateFile+10));
```

One value, which is **NtCreateFile** location that added with **0x10**, then a DWORD value from the target address (**NtCreateFile+10**) is shown.

```clike
? print(dw(NtCreateFile+@rcx+($proc|3+poi(poi(@rax)))));
```

Print the DWORD data located at **NtCreateFile** added to **rcx** register, then all of them are added to the result of **rax** register dereferenced twice and added to the **$proc** which is bitwise **OR (|)** by **3**.

{% hint style="success" %}
By default, **HyperDbg** interprets the numbers as **hex** (base **16**). If you want to specify other forms of a number, you should use MASM prefixes. In all MASM expressions, numeric values are interpreted as numbers in the current radix (16, 10, or 8). You can override the default radix by specifying the **0x** prefix (**hexadecimal**), the **0n** prefix (**decimal**), the **0t** prefix (**octal**), or the **0y** prefix (**binary**).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hyperdbg.org/commands/scripting-language/examples/view-system-state.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
