i (instrumentation step-in)

Description of the 'i' command in HyperDbg.

Command

i

ir

Syntax

i

i [Count (hex)]

ir

ir [Count (hex)]

Description

Executes a single instruction (step-in) and optionally displays the resulting values of all registers and flags. This command only works in the Debugger Mode.

This command gives you the ability to follow system-calls (SYSCALLs) and all the exceptions (including page-faults) from user-mode to kernel-mode and from kernel-mode to user-mode. For example, in the middle of executing one instruction in user-mode, a page-fault might happen, then if you use this command, the next instruction is in the kernel-mode page-fault handler. Another example, you can follow a syscall from user-mode, then the next instruction is in kernel-mode syscall handler, and this way, you can trace the execution between different rings.

Parameters

[Count (hex)] (optional)

Count of step(s), or how many times perform the stepping operation. If you don't set this argument, then by default, the Count is 1.

Examples

If you want to instrumentation step-in one instruction.

If you want to instrumentation step-in one instruction and view the registers.

If you want to instrumentation step-in for 5 instructions.

SDK

To step through the instruction (instrumentation step-in), you need to use the following function in libhyperdbg:

Remarks

This command will set a Monitor Trap Flag in debuggee and continue just the current executing core. After executing one instruction, it halts the debuggee again.

If the currently executing instruction is a call instruction, it will follow and enter the call instruction.

HyperDbg guarantees that all cores and threads won't find a chance to be executed between each step in this type of stepping.

If you load symbols and you don't want to see function names, you turn addressconversion off in the 'settings' command.

Requirements

None

p (step-over)

t (step-in)

gu (step-out or go up)

Last updated