Dovrai caricarlo in uno strumento come OllyDbg e avrai le istruzioni e potrai modificarle per fare lo stesso tipo di lavoro delle istruzioni alternative e poi salvarle in file eseguibili in modo da escludere la firma dei byte contro il tuo file.
È possibile riscrivere il codice per fare lo stesso lavoro. Facciamo uno scenario molto semplice.
Immagina di aver visto nell'eseguibile. Farò finta che questo sia un eseguibile x86:
004CFF64 - B8 05000000 - mov eax,00000005
004CFF69 - B8 07000000 - mov eax,00000007
Quindi, 10 byte in totale.
Potresti riscriverlo come:
004CFF64 - B8 05000000 - mov eax,00000007
004CFF69 - 90 - nop
004CFF6A - 90 - nop
004CFF6B - 90 - nop
004CFF6C - 90 - nop
004CFF6D - 90 - nop
Che è ancora 10 byte in totale ma la firma è ora cambiata.
Il motivo per cui abbiamo utilizzato un NOP (nessuna istruzione preformata) è perché non fa altro che usare lo spazio.
Ora, nella situazione del mondo reale non ci si imbatte così facilmente che dovrai usare code-caves e così via. Ad esempio, diciamo che era necessario scrivere più di 10 byte di codice, quindi non si può davvero farlo poiché si sovrascriverà l'istruzione successiva che corromperebbe l'eseguibile. Bene, quello che fai è usare JMP
istruzioni per liberare spazio in memoria che poi farai tutto il codice lì e userete JMP
per tornare alla normale esecuzione del codice.
Le firme dei byte sono generalmente eseguite su tutto il file e sulle parti statiche dell'eseguibile.
Ad esempio .text (talvolta noto come .code ecc.) Che è la parte eseguibile del codice e le aree di memoria non sono scrivibili in modo che non cambino anche se è possibile sovrascrivere le autorizzazioni con VirtualProtect
API.
Potrei entrare in molti più dettagli sull'offuscamento, su come funzionano le firme in byte e così via, ma spero che risponda alla tua domanda se non lasci un commento e io espanderò la mia risposta.