|
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)
| |
| |
|