Ejecución de Archivos desde Memoria [Base Relocation]

Iniciado por [Zero], 18 Agosto 2009, 19:32 PM

0 Miembros y 2 Visitantes están viendo este tema.

[Zero]

#20
Gracias Karman, y sí, lo de las importaciones por ordinal lo supe poco después de publicar el código, lo de los Forwareder Imports no se me había ocurrido. The Swash había publicado una corrección a éste código teniendo en cuenta las importaciones por ordinal, creo que en este foro también está publicado.

Pero bueno, gracias una vez más, leer código tuyo siempre es interesante, cuando tenga más tiempo publicaré una nueva versión de éste código y de la ClsHookAPI, que hace mucho tiempo que los hice y ya no me gusta demasiado como están hechos.

Saludos

Edito: Leyendolo por encima, una micro-mejora:


    strncpy(ForwarderDllName,(LPSTR)dwFunction,len);
    strcpy(&ForwarderDllName[len],".dll");
    // Find the module associated to it (should be already loaded)
    return GetProcAddress(GetModuleHandleA(ForwarderDllName),ForwardImportName)


El ".dll" no es necesario para llamar a GetModuleHandle ni a LoadLibrary, si no se especifica extensión la API toma por defecto siempre ".dll" :) .

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Karman

Cita de: [Zero] en  8 Junio 2012, 23:48 PM
El ".dll" no es necesario para llamar a GetModuleHandle ni a LoadLibrary, si no se especifica extensión la API toma por defecto siempre ".dll" :) .

si y no, lo que pasa es que tengo mi custom GetModuleHandle también y para no tener que comprobar dos veces en la misma busco la dll con el nombre completo :P, pero si, si usás el GetModuleHandle original no es necesario...

S2