Conditional statements are used to perform different actions based on different conditions.
if
The if statement executes some code if one condition is true.
Syntax
if (condition) { code to be executed if condition is true;}
Example 1
if (@rax ==55) {printf("rax is equal to %llx\n", @rax);}
Example 2
if (poi(@rcx +0x10) == ffff7080deadbeef && @rdx !=55|| $pid ==4) {printf("condition is met\n");}
else
The else statement is executed if the if condition is false.
Syntax
if (condition) { code to be executed if condition is true;}else {if the above condition is false, then else is called;}
Example
if (@rax ==55) {printf("rax is equal to %llx\n", @rax);}else {printf("rax is not equal to 0x55, it is equal to %llx\n", @rax);}
elsif
Multiple if...else statements can be nested to create an elsif clause. Note that there is one elsif (in one word) keyword in HyperDbg script engine.
Syntax
if (condition) { code to be executed if condition is true;}elsif (condition) { code to be executed if elsif condition is true;}else {if none of the above conditions are true, then else is called;}
Example
if (@rax ==55) {printf("rax is equal to 0x55\n");}elsif (@rax ==66) {printf("rax is equal to 0x66\n");}elsif (@rax ==77) {printf("rax is equal to 0x77\n");}else {printf("rax is not equal to 0x55, 0x66, 0x77. It is equal to %llx\n", @rax);}
Loops
The following statements are used to create loops in HyperDbg's script engine.
for
The for statement creates a loop that consists of three expressions, enclosed in parentheses and separated by semicolons, followed by a block statement to be executed in the loop.
Syntax
for (initial value; condition; incrementation or decrementation) { code to be executed in loop;}
Example 1
for (i =10; i !=0; i--) { printf("%d\n", i); }
Example 2
for (i =0; i <10 ; i++) {for (j =0; j <10; j++) {printf("%d, %d\n", i, j); } }
while
With the while loop, we can execute a set of statements as long as the condition is true.
Syntax
while (condition) { code to be executed ifwhile condition is true;}
Example
x =55;while (x) {printf("x = %x\n", x); x = x -1;}
do, while
The do..while loop is similar to the while loop with one important difference. The body of do...while loop is executed at least once. Only then, the test expression is evaluated.
Syntax
do { code to be executed at least one time and continues,ifwhile condition is true;}while (condition);
Example
x =55;do {printf("x = %x\n", x); x = x -1;} while (x);