Home | Chi sono | Contattami
 

Progr. lineare

Delphi
 
Componenti
  Database
 
Miei articoli

Windows

Miei articoli 

 

Implementazione delle api win32 GetModuleHandle e GetProcAddress senza usare le api win32


Oggi ho deciso di realizzare una mia implementazione delle api win32 GetModuleHandle(restituisce il Virtual Address di un modulo nello spazio di memoria del processo corrente) e GetProcAddress (restituisce il Virtual Address di una funzione esportata da un modulo caricato nello spazio di memoria del processo corrente): tale implementazione propria ha come caratteristica principale il fatto di non ricorrere a nessuna delle api win32; il tutto avverrà navigando nel formato PE (Portable Executable). La teoria fa riferimento ai concetti esposti in dettaglio nei seguenti articoli passati

Informazioni relative ad un processo remoto

Analisi della Export Directory in un PE Binary.
Parte1: GetProcAddress su un processo remoto.

Un altro concetto importante che non è incluso nei 2 articoli sopra è quello di come determinare l'indirizzo di base del Process Environment Block (PEB) nell'ambito del processo corrente

function GetLocalPEBptr: Pointer; stdcall; asm MOV EAX, DWORD PTR FS:[30h] end;

Maggiori informazioni al riguardo possono essere trovate agli indirizzi

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

http://www.microsoft.com/msj/archive/S2CE.aspx

In allegato i sorgenti di un esempio

ModuleProcAddress.7z

Data ultimo aggiornamento: 19/10/2007 (aggiunta come esempio, l'implementazione di una procedura che logga una stringa in un file: gli indirizzi delle api win32 utilizzate vengono determinati tramite le 2 funzioni)

 

 
 
Your Ad Here