Le strutture

 

La struttura di un file .com

I files .com erano uno dei primi eseguibili, quindi sono anche quelli più semplici.Un programma con la struttura di un com file può essere caricato direttamente in memoria.Per questo i tempi di caricamento per files .com sono molto più brevi di quelli di un files .exe.La cosa importante da capire è che la grandezza di un com file non deve mai superare la grandezza di un "segment", cioè 64KB, altrimenti l'intero file non funzionerà.Di solito troverete che i com files partono all'offset 100h, ma potete usare tranquillamente anche ogni multiplo di 010h.Dopodichè un com file sarà eseguito, verrà creato sempre un PSP, il Program Segment Prefix, grande 256 bytes.Negli ultimi 128 bytes verrano salvati i parametri, precisamente all'offset 080h potete trovare il numero di caratteri usati per il "command line".Visto che programmare un virus per com files è più semplice, ovviamente ci sono un sacco di loro in giro.Anche se programmare un file .exe forse è un pochino più difficile, ritengo che sia molto importante che imparerete anche quello.E poi ovviamente potete combinare anche tutti e due metodi di infezione, cioè virus che infettino sia files .com, sia i files.exe

 

La struttura di un file .exe

Com files, come ora sapete, sono piùttosto piccoli e specialmente per programmi più grandi oggi viene usato il formato .exe.La cosa forse più importante è che i files .exe non vengono caricati subito in memoria come i com files.Ogni exe file possiede all'inizio del file un cosiddetto EXE Header, nel quale sono contenuti informazioni tipo da dove far partire il file, dove si trova lo stack ecc...Dopodichè troviamo la relocation table, con la quale il DOS modifica i segment pointers.Ogni relocation ha una grandezza di 4 bytes.Quando il DOS carica un exe, prima cercherà il primo segment libero e poi caricherà il PSP nello stesso segment.

Ora diamo uno sguardo all'EXE Header:

 

OFFSET FUNZIONE

00.............................................................al 00h troviamo il byte d'identificazione, cioè "MZ"

02..............................................qui troviamo la grandezza del resto del Header

04..............................................04 invece indica la grandezza del file

06..............................................Il numero dei registrazioni nella relocation table

08............................................. grandezza dell'EXE Header in unità di 16 bytes

0A.............................................La memoria minima assegnata al file

0C.............................................La memoria massima assegnata al file

0E.............................................Qua troviamo l'inizio del stack segment

10..............................................L'inizio dello stack pointer

12............................................Qui troviamo il checksum, normalmente non usato

14.............................................Qua si trova l'IP (Instruction Pointer)

16.............................................L'inizio del code segment

18.............................................Offset che indica la relocation table

1A............................................ l'1Ah indica informazioni riguardanti l'overlay

1C............................................Riservato

24.............................................Identificazione OEM

26.............................................Informazioni riguardanti l'OEM

28.............................................Riservato

3C.............................................Indica il nuovo EXE Header

 

La sequenza con la quale il DOS carica files con i stessi nomi è .com .exe .bat. Così sotto DOS i virus companion creavano un file nascosto, con lo stesso nome cambiando solamente l'estensione e in questo modo il DOS caricava prima il file infettato.Comunque i virus companion che usano questo sistema oggi sono molto rari, per non dire quasi morti, visto che ora ci sono altre piattaforme su cui lavorare, come Win 95/98.

 

RITORNA