Shellcode: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.1 |
m fix wl |
||
Riga 71:
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 (
questa istruzione contiene zeri come parte del literal (1 viene espanso come 0x000000001) con queste istruzioni:
33C0 [[XOR (
40 [[INC (
che hanno lo stesso effetto ma richiedono meno bytes per la codifica e sono prive di bytes a null.
|