Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: OnTheCore en Diciembre 06, 2013, 07:59:17 PM

Título: [SOLUCIONADO] Cargando libreria desde memoria y error desconocido
Publicado por: OnTheCore en Diciembre 06, 2013, 07:59:17 PM
Hola gente, estoy tratando de cargar una DLL desde la memoria.

El problema aparece cuando compilo con (GCC) -nostdlib (linkeando las librerias necesarias) y utilizando mainCRTStartup como entry point para reducir el tamaño del ejecutable, funciones innecesarias, etc. Al parecer, al quitar toda esa parte que no me sirve, estoy excuyendo y por eso crashea el programa.
Si compilo normalmente y utilizo main o WinMain el problema no aparece. Funciona todo perfecto

El problema es que al querer obtener un puntero desde una funcion, obtengo un puntero invalido. En la dll puedo verlo correctamente, pero en el programa principal tengo otro valor.
Título: Re:[C] Cargando libreria desde memoria y error desconocido
Publicado por: Sanko en Diciembre 07, 2013, 10:13:09 AM
No hace tanto tuve un problema similar al tuyo y pude darle solución con este enlace, suerte lo tenia aun por favoritos : http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/
Título: Re:[C] Cargando libreria desde memoria y error desconocido
Publicado por: Juan en Diciembre 07, 2013, 10:42:26 AM
Claro que se te rompe el programa, porque esa función la utiliza la biblioteca en tiempo de ejecución de C para cargar sus propiedades.
Título: Re:[C] Cargando libreria desde memoria y error desconocido
Publicado por: Juan en Diciembre 08, 2013, 05:11:26 PM
Prueba usando este API nada mas que entre a la funcion mainCRTStartup

http://msdn.microsoft.com/es-es/library/ms235362.aspx
Título: Re:[C] Cargando libreria desde memoria y error desconocido
Publicado por: OnTheCore en Diciembre 08, 2013, 07:54:36 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Prueba usando este API nada mas que entre a la funcion mainCRTStartup

http://msdn.microsoft.com/es-es/library/ms235362.aspx

No porque no estoy compilando con /GS (Buffer Security Check)
Título: Re:[C] Cargando libreria desde memoria y error desconocido
Publicado por: Juan en Diciembre 09, 2013, 04:47:07 AM
Si no usas ninguna libreria de CRT y no te genera el exe con esas dependencias no te debería de fallar.

Aquí te dejo cuales son dichas librerias:

http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx

Realmente deberías usar el punto de entrada habitual, de poco sirve iniciar en CRT y tener que inicializar las librerias tu a mano.
Título: Re:[C] Cargando libreria desde memoria y error desconocido
Publicado por: OnTheCore en Diciembre 10, 2013, 01:24:20 PM
Gracias