ARM Reverse Engineering (Part 42 – Debugging Post-Increment Operator)

ARM Reverse Engineering (Part 42 – Debugging Post-Increment Operator)

For a complete table of contents of all the lessons please click below as it will give you a brief of each lesson in addition to the topics it will cover. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial

Let’s re-examine our code.

#include <iostream>

int main(void) {
    int myNumber = 16;
    int myNewNumber = ++myNumber;

    std::cout << myNewNumber << std::endl;

    return 0;
}

We create a variable myNumber = 16 to which we create another variable myNewNumber which post-increments the value of myNumber. We see that when we execute our code it shows 16 as the value of myNewNumber and 17 as the value of myNumber as myNewNumber does not get incremented as only myNumber get incremented as it is a post operator.

When we post-increment the value of the variable is incremented after assigning it to another variable. For example myNumber is 16 so it gets incremented after being assigned to myNewNumber so therefore we get 17.

Let's debug.

No alt text provided for this image

Let's break on *main+28 and continue.

No alt text provided for this image

As we can see the value in r3 is 16 and the value in r2 is 17. We can see that as they are loaded from memory into the registers in *main+12 directly by the mov instruction and *main+24 we add 1 into r3 and then put that value into r2.

No alt text provided for this image

As we continue we can see the cout c++ function called which echos out the values to the terminal (standard output) as expected.

No alt text provided for this image

Next week we will dive into Hacking Post-Increment Operator.

要查看或添加评论,请登录

Kevin Thomas的更多文章

社区洞察

其他会员也浏览了