PDA

Visualizza la versione completa : [C/C++] Struttura di una DLL Windows


_sys/sid
19-02-2007, 13:47
Qualcuno puo' dami delle informazioni, guide o qualsiasi cosa
che spieghi la struttura di una dll di Windows?

Le DLL vecchie (es. win 98) hanno la stessa struttura di quelle .NET?

Grazie.

oregon
19-02-2007, 13:58
Che intendi per "struttura"? Cosa vuoi sapere in particolare?

Una DLL e' un insieme di funzioni esportate ...

Una DLL in codice nativo Win32 e una DLL .NET sono ovviamente diverse *per il tipo* di codice che sta al loro interno, appunto "nativo" nel primo caso e Intermediate nel secondo.

A parte la curiosita', c'e' un altro fine per questa domanda ... ?

_sys/sid
19-02-2007, 14:05
per struttura intendo struttura...
come e' organizzata una dll



struct dll {
char nome[N];
void *fun[N];
}


un qualcosa del genere...
Per le DLL .NET non e' un problema perche' si usa la reflection...
ma dalle native come estraggo i dati e informazioni?

oregon
19-02-2007, 14:20
Una dll non e' "strutturata" semplicemente in una struttura.

Se vuoi ottenere le informazioni relative alle funzioni esportate, e' una cosa abbastanza complessa perche' devi "navigare" tra un bel po' di strutture contenute nell'header del file PE (Portable Executable) di Win32.

In ogni caso, non puoi ottenere informazioni sui parametri.

_sys/sid
20-02-2007, 11:24
la complessita' non e' un problema...
potresti darmi piu' informazioni... e magari qualche link

grazie mille

oregon
20-02-2007, 11:32
Parti da questo

http://en.wikipedia.org/wiki/Portable_Executable

Ti ricordo pero' che sugli argomenti delle funzioni non puoi sapere nulla ...

_sys/sid
20-02-2007, 16:42
Da quello che ho capito una dll oltre alla prima parte di header contiene queste sezioni...
Mi potresti dare una spiegazione rapida di quello che contengono?


.text

.rdata

.data

.idata

.reloc


Grazie Mille

oregon
20-02-2007, 17:07
Originariamente inviato da _sys/sid
Da quello che ho capito una dll oltre alla prima parte di header contiene queste sezioni...
Mi potresti dare una spiegazione rapida di quello che contengono?

Come ti dicevo, e' un po' complesso ... anche se la cosa non ti spaventa, lo e' lo stesso ... :)

.text
Contiene il codice eseguibile

.rdata
Contiene i dati inizializzati e read-only

.data
Contiene i dati inizializzati

.idata
E' la tabella dei simboli importati

.reloc
E' la tabella delle rilocazioni

Purtroppo una spiegazione anche sommaria di ogni sezione non e' possibile in un messaggio in un forum ... e' comunque tutto spiegato nella documentazione (65 pagine!) che trovi in

Quello su cui ti devi concentrare e' la

.edata
La sezione in cui ci sono i dati dei simboli esportati (importante in una DLL).

http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff_v8.doc

_sys/sid
20-02-2007, 17:36
c'e' modo di sapere i valori e il tipo dei dati (in teoria sono costanti, giusto?) in .data e .rdata?

Dai... questa e' l'ultima... poi non ti rompo piu' :D

Grazie Ancora!

oregon
20-02-2007, 18:30
Valori e tipo dei dati di cosa?

Loading