Hola foro:
he conseguido inyectar una dll en el notepad. Todo va bien con el messagebox,pero al incluir una funcion que cree un archivo de texto en el directorio C:\. el notepad deja de funcionar.
Lo puedo solucionar con AdjustTokenPrivileges????
#include <windows.h>
#include <stdio.h>
bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason==DLL_PROCESS_ATTACH)
{
MessageBox(0,"hola","",0);
FILE *arch=fopen("c:\\archprueba.txt","w");
fclose(arch);
}
return TRUE;
}
¿Que queres decir exactamente con "deja de funcionar"? ¿Se produce una excepcion no controlada? ¿Hay un deadlock? ¿Simplemente retorna ACCESS_DENIED el CreateFile que hace fopen?
Depuralo y averigua que pasa exactamente.
como decia, es una dll con 2 funciones.
A la hora de depurar sale la siguiente advertencia:
CitarPrimera excepción en 0x76e69a6f en llamadoreon.exe: 0xC0000008: An invalid handle was specified.
, doy a continuar, el programa sigue y se muestra el messagebox pero al quitarlo,con el boton de aceptar pasa a la siguiente funcion y el programa en la que la dll esta inyectada deja de funcionar y se reinicia, sin ejecutar la funcion que crea el archivo .txt.
P.D: ...compila perfectamente en modo release
no seria asi?
#include <windows.h>
#include <stdio.h>
bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason==DLL_PROCESS_ATTACH)
{
MessageBox(NULL ,TEXT("hola"),TEXT(""),0);
FILE *arch=fopen("c:\\archprueba.txt", "w");
fclose(arch);
}
return TRUE;
}
Cita de: manu801004 en 26 Octubre 2010, 17:26 PMcomo decia, es una dll con 2 funciones.
¿Donde decias eso y donde estan las funciones? ¿O te referis a que LLAMAS a dos funciones?
Cita de: manu801004 en 26 Octubre 2010, 17:26 PMA la hora de depurar sale la siguiente advertencia:
CitarPrimera excepción en 0x76e69a6f en llamadoreon.exe: 0xC0000008: An invalid handle was specified.
, doy a continuar, el programa sigue y se muestra el messagebox pero al quitarlo,con el boton de aceptar pasa a la siguiente funcion y el programa en la que la dll esta inyectada deja de funcionar y se reinicia, sin ejecutar la funcion que crea el archivo .txt.
No es lo suficientemente claro para saber que pasa exactamente pero proba a usar la API de Windows (CreateFile/CloseHandle) en lugar de la CRT (fopen/fclose).
PD. Para poder solucionarlo con AdjustTokenPrivileges tendria que ser un caso donde retornara error de la funcion fopen.
CitarPD. Para poder solucionarlo con AdjustTokenPrivileges tendria que ser un caso donde retornara error de la funcion fopen
no error, pero si advertencia cuando compilo:
CitarAdvertencia 1 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
P:D: ..gracias flony pero pasa lo mismo. Probare con "createfile"
Decia que retornara error, es decir que no pudiera abrir el archivo, su valor de retorno fuera NULL y errno fuera INVAL, pero el programa continuara normalmente su ejecucion.
El warning este no tiene importancia, proba con CreateFile/CloseHandle.
Probare Createfile
Gracias Eternal