Shellcode: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix wl
m Shellcode Null-Free: inserito collegamento a Carattere null
Riga 69:
 
==== Shellcode Null-Free ====
Molti shellcode vengono scritti senza utilizzare il bytes [[null]], perché sono progettati per essere inseriti nel processo bersaglio attraverso un stringa null-terminata. Quando una stringa null-terminata viene copiata, la copia includerà il primo [[carattere null]], ma i bytes successivi a questo non verranno processati. Quando lo shellcode che contiene il null viene inserito in questa maniera, verrà inserita solo una parte dello shellcode non rendendolo in grado di eseguire successivamente.
Per produrre uno shellcode libero da [[null]] partendo da uno che contiene dei bytes null, possono essere sostituite le istruzioni macchina che contengono gli zeri con istruzioni che producono lo stesso effetto ma che sono prive di bytes null. Per esempio su una architettura [[IA-32]] si potrebbe eseguire questa sostituzione:
B8 01000000 [[MOV (istruzione)|MOV]] EAX,1 // Imposta il registro EAX a 0x000000001