Quoto Predator. 5 pagine di informazioni inutili, approssimative e/o sbagliate. Se non sai le cose, salle (cit.)
cosa succede se ad un file eseguibile elimino tutti gli 0x90 che trovo ? (adesso provo xD)
Direi che è abbastanza normale la segmentation fault sai...
I NOP piazzati generalmente dal compilatore alla fine di una porzione eseguibile non servono a niente (sono operazioni che tendenzialmente non fanno niente, dato che nell'architettura Intel NOP == XCHG eax,eax, ovvero scambia eax con se stesso), se non ad allineare fra loro la lunghezza delle singole sezioni o segmenti. Se tu li cancelli, le informazioni contenute negli header dell'eseguibile, ELF o PE, vengono completamente sballate, in quanto tutti gli offset dei vari segmenti all'interno del file eseguibile diventano errati, dato che hai cancellato porzioni del file eseguibile. Per fare un esempio, in un eseguibile la label "main" comincia all'offset 7 a partire dall'inizio del file, e quest'informazione è salvata anche nei section header del file, in modo che quando l'eseguibile viene eseguito si sappia che c'è un'etichetta main a 7 byte a partire dall'inizio. Mettiamo che prima di quest'etichetta ci siano 3 byte NOP, risultanti dalle varie procedure di inizializzazione dello stack che tipicamente vengono piazzate dal compilatore. Se li cancello, main non sarà più all'offset 7 ma all'offset 4, ma se non modifico di conseguenza anche i section header quando il file viene eseguito lui andrà a pescarmi il main piazzandosi all'offset 4, eseguendo chissà che merd* a partire da chissà che punto, e il processo fa un grande fail.
Per le tecniche di infezione, la più usata consiste nell'avvelenamento dell'entry point dell'eseguibile. Ho il mio codice infettante, lo copio da qualsiasi parte nel file eseguibile e modifico l'entry point dell'eseguibile in modo che mi punti lì, e modifico di conseguenza anche gli offset nei vari section headers. Quindi, alla fine del mio codice infettante, ci piazzo un jmp all'entry point originale, in modo che il funzionamento dell'eseguibile non sia comunque compromesso.
Questo sorgente vi dice nulla?