Assemblaggio - Istruzioni LODS
In crittografia, un codice Caesar è una delle tecniche di crittografia più semplici conosciute. In questo metodo, ogni lettera nei dati da crittografare viene sostituita da una lettera con un numero fisso di posizioni lungo l'alfabeto.
In questo esempio, crittografiamo un dato semplicemente sostituendo ogni alfabeto con uno spostamento di due alfabeti, quindi a sarà sostituito da c, b con d e così via.
Usiamo i LOD per caricare la stringa originale "password" nella memoria.
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov ecx, len
mov esi, s1
mov edi, s2
loop_here:
lodsb
add al, 02
stosb
loop loop_here
cld
rep movsb
mov edx,20 ;message length
mov ecx,s2 ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
s1 db 'password', 0 ;source
len equ $-s1
section .bss
s2 resb 10 ;destination
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
rcuuyqtf