(Assembly) Register Reassignment by Unprotect
Created the Tuesday 06 December 2022. Updated 1 month, 3 weeks ago.
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
ebx and the value of
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
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.
; 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