instance handle

instance handle
Benissimo.
Ho visto il tipo LPSTR che equivale a DWORD.
Questo tipo l'ho incontrato fra le variabili non inizializzate della procedura per la creazione di una finestra, come tipo di CommandLine, ossia il puntatore lungo al nome della linea di comando.
Incontro anche un altro tipo, che è HINSTANCE
>br> Lo trovo in WINDOWS.INC:
HINSTANCE       TYPEDEF DWORD
Anche questo è un tipo DWORD.
Non ho capito bene cosa indica.
Indicherebbe un tipo "handle di un'istanza dell'applicazione"... sempre di grandezza DWORD.

Torno al programma...

.DATA
NomeDellaClasse	DB "QuestaClasse",00H
NomeDellaFinestra DB "QuestaFinestra",00H

.DATA?
Istanza	HINSTANCE ?
LineaDiComando LPSTR ?

La parte che viene dopo, è fatta da tre procedure, due delle quali si fanno carico di ottenere in EAX dei valori per Istanza e LineaDiComando, e la terza è la WinMain che si occupa di creare la finestra usando quelle variabili.
Segue ExitProcess che chiude tutto.
.CODE
INVOKE	GetModuleHandle, NULL
MOV	Istanza,EAX

INVOKE	GetCommandLine
MOV	LineaDiComando,EAX

INVOKE	WinMain,Istanza,NULL,LineaDiComando,SW_SHOWDEFAULT

INVOKE	ExitProcess,EAX


Iczelion mi dice che l'Handle dell'Istanza (Istanza, di tipo HINSTANCE), è l'indirizzo lineare del programma in memoria.

Lo verifico con OllyDbg in esecuzione passo-passo (con F8):
EAX prima dell'esecuzione di GetModuleHandle:
EAX = 75F13811
Eseguita la procedura GetModuleHandle:
EAX = 00400000
Vediamo sulla memory map:






Caricato il 11/09/2009 - 01:09 in Album predefinito

Commenti (0)