Reconstructing the C/C++ Code
Learn how to reconstruct a code in the C/C++ language with the help of the GDB disassembly output in the non-optimization mode.
Mixed assembly/pseudocode code
Now, we go from instruction to instruction and try to reconstruct the pseudocode, which is shown as comments against assembly language code.
Press + to interact
adrp x0, 0x420000add x0, x0, #0x30 // x0 <- address var1 (0x420030)adrp x1, 0x420000 //add x1, x1, #0x28 // x1 <- address var2 (0x420028)str x1, [x0] // [x0] <- x1adrp x0, 0x420000 //add x0, x0, #0x38 // x0 <- address var3 (0x420038)adrp x1, 0x420000add x1, x1, #0x2c // x1 <- address var4 (0x42002c)str x1, [x0] // [x0] <- x1
This code calculates the effective address, which it stores in a register. It then assigns the register value to the integer pointer. We do the same process for the other variable and store the other register value to the other integer pointer.
Press + to interact
adrp x0, 0x420000add x0, x0, #0x30 // x0 <- address var1 (0x420030)ldr x0, [x0] // x0 <- [x0]mov w1, #0x1 // w1 <- 1str w1, [x0] // [x0] <- w1adrp x0, 0x420000add x0, x0, #0x38 // x0 <- address var3 (0x420038)ldr x0, [x0] // x0 <- [x0]mov w1, #0x1 // w1 <- 1str w1, [x0] // [x0] <- w1
The ...
Access this course and 1400+ top-rated courses and projects.