(Assembly) Register Reassignment by Unprotect

Created the Tuesday 06 December 2022. Updated 1 month, 3 weeks ago.

Description:

In this code, the registers eax and ebx are initially assigned to 0. The code then performs some operations on the registers, adding 1 to eax and 2 to ebx.

Next, the code reassigns the registers by copying the value of eax into ebx and the value of ebx into eax. This means that the value of eax will be the same as the original value of ebx, and vice versa.

Finally, the code performs more operations on the registers and returns the result. Because of the register reassignment, the final values of eax and ebx will be different than if the registers had not been reassigned.

This code is intended to be difficult to analyze and understand, as the register reassignment makes it more difficult to track the values of the registers. This can make it harder for a reverse engineer or disassembler to understand the code's behavior and intentions.

Code

            ; Initialize registers
mov eax, 0
mov ebx, 0

; Perform some operations on the registers
add eax, 1
add ebx, 2

; Reassign the registers
mov ebx, eax
mov eax, ebx

; Perform more operations on the registers
add eax, 1
add ebx, 2

; Return the result
ret