un protettore cosa è? è come un packer ma con la differenza che contiene tips antidebugging
Non so il tuo grado di esperienza con i packer ma se sei alla prime armi, non è facile fare un unpacker.
E' necessario conoscere bene il formato PE e in particolare la capacità di leggere e modificare i suoi dati.
Mi sento di consigliarti di partire da un packer come UPX e studiarne il funzionamento.
probabilmente la parte più difficile è fare il rebuild della IT, ma con un po di impegno si fa senza problemi.
come documento sul formato PE il più completo rimane tutt'oggi questo
LINK
Ma i miei cosigli non finiscono cosi sull'astratto
valutiamo tutto, se un packer/protector è difficile potrebbe risultati piu' facile realizzare un cripter.
in pratica un protettore che invece di comprimere il codice e proteggerlo, lo cripta e lo protegge, pertanto azione piu' semplice da fare.
Infine di to una soluzione che ho fatto io
ho creato un protector che fa questo:
-genera un loader
-prende l'exe originale e lo cripta
-incorpora l'exe criptato nel loader
quando l'exe protetto parte succede questo:
-il loader va in memoria
-legge il contenuto protetto dell'exe
-lo decripta e lo piazza in memoria
-legge tutte le caratteristiche dell'exe protetto:
IMAGE_DOS_HEADER
IMAGE_NT_HEADERS
IMAGE_SECTION_HEADER
PROCESS_INFORMATION
ecc... ecc....
-crea un un processo in modo sospeso(CREATE_SUSPENDED)
-leggo la memoria del processo decriptato
-uso VirtualAllocEx e gli passo i valori del nuovo processo(ImageBase, SizeOfImage, cotenuti negli OptionalHeader) in modo da allocare lo spazio in memoria.
facendo questo VirtualAllocEx mi ritorna l'ImageBase del nuovo processo. Se l'ImageBase fosse = 0 allora qualcosa è andato storto..
-a questo punto sistemo e riscrivo tutte le sezioni dell'exe decriptato dentro il nuovo processo (ancora sospeso)
-sistemo il contex e l'OEP
-infine eseguo il Resume del Thread e cosa succede?
parte l'eseguibile protetto
detta in due parole parte il programma, genera un processo sospeso, tale processo viene totalmente sostituito da un altro e poi rilasciato.
e intanto nel mezzo ci puoi piazzare tips di protezione
io una cosa cosi' te la posso scrivere in asm o VB (praticamente un miracolo), in altri linguaggi non mi sono mai cimentato... anche se da C e asm passa un soffio.
Predator