|
301
|
Programación / Programación C/C++ / Re: ERROR_INVALID_ADDRESS al usar VirtualAllocEx con una dirección fija
|
en: 1 Septiembre 2010, 00:03 am
|
Necesito usarlo con una dirección fija, me da igual cual pero es necesario que sea fija. En la documentación de la MSDN dice que es perfectamente posible, y ese parámetro no tendría sentido si no fuera así, pero buscando no encuentro más que gente con el mismo problema e hilos a los que no se llega a una solución. Si esa memoria está reservada, el proceso no la está utilizando aparentemente para nada, intente hacer VirtualFree pero sigue sin funcionar . Al ejecutar VirtualQuery VirtualAlloc falla siempre, incluso cuando ésta me devuelve MEM_FREE . Saludos
Edito: Hice ésto para ver si me quedaba algo más claro que pasaba, pero sólo logró confundirme más : #pragma comment(linker,"/NODEFAULTLIB") #pragma comment(linker,"/ENTRY:main") #include <Windows.h> int main() { MEMORY_BASIC_INFORMATION Buffer; VirtualQuery((LPVOID)0x00400000,&Buffer,sizeof(MEMORY_BASIC_INFORMATION)); switch(Buffer.State) { case MEM_COMMIT: MessageBoxA(0,"MEM_COMMIT","Info",MB_ICONINFORMATION); if(!VirtualFree((LPVOID)0x00400000,0x1000,MEM_DECOMMIT)) { MessageBoxA(0,"Error al desencomendar memoria",0,MB_ICONERROR); } else { MessageBoxA(0,"Memoria Desencomendada","Info",MB_ICONINFORMATION); if(!VirtualFree((LPVOID)0x00400000,0,MEM_RELEASE)) { MessageBoxA(0,"Error liberar memoria",0,MB_ICONERROR); } else { MessageBoxA(0,"Memoria Reservada Liberada","Info",MB_ICONINFORMATION); } } break; case MEM_RESERVE: MessageBoxA(0,"MEM_RESERVE","Info",MB_ICONINFORMATION); if(!VirtualFree((LPVOID)0x00400000,0,MEM_RELEASE)) { MessageBoxA(0,"Error liberar memoria",0,MB_ICONERROR); } else { MessageBoxA(0,"Memoria Reservada Liberada","Info",MB_ICONINFORMATION); } break; case MEM_FREE: MessageBoxA(0,"Memoria Libre","Info",MB_ICONINFORMATION); break; } if(!VirtualAlloc((LPVOID)0x00400000,0x1000,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE)) { MessageBoxA(0,"Error al reservar memoria en 0x00400000",0,MB_ICONERROR); return 0; } MessageBoxA(0,"Memoria Reservada correctamente en 0x00400000","Éxito",MB_ICONINFORMATION); return 0; }
|
|
|
302
|
Programación / Programación C/C++ / ERROR_INVALID_ADDRESS al usar VirtualAllocEx con una dirección fija
|
en: 31 Agosto 2010, 17:37 pm
|
Bueno, pues la duda es lo que dice el título, estoy intentando usar VirtualAlloc o VirtualAllocEx, me da igual, para reservar memoria en una dirección de memoria fija, en concreto en 0x0040000 (teniendo el base address de mi ejecutable en 00300000). Levo días buscando la razón del error pero no encuentro nada que me sirva, ejecutando lo siguiente: #pragma comment(linker,"/NODEFAULTLIB") #pragma comment(linker,"/ENTRY:main") #include <Windows.h> int main() { //CHAR MSG[1024]; //SYSTEM_INFO SystemInfo; //GetSystemInfo(&SystemInfo); //wsprintfA(MSG,"%s%X%s%X","MinimumApplicationAddress: ",SystemInfo.lpMinimumApplicationAddress,"\nMaximumApplicationAddress: ",SystemInfo.lpMaximumApplicationAddress); //MessageBoxA(0,MSG,"Info",MB_ICONINFORMATION); if(!VirtualAllocEx(GetCurrentProcess(),(LPVOID)0x00400000,0x1000,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE)) { MessageBoxA(0,"Error al reservar memoria en 0x00400000",0,MB_ICONERROR); return 0; } MessageBoxA(0,"Memoria Reservada correctamente en 0x00400000","Éxito",MB_ICONINFORMATION); return 0; }
Ojo, linkear el ejecutable con una dirección base diferente de 0x00400000 o en su defecto cambiar la dirección fija a reservar. Éste código, en mi PC Win7 32bits reserva memoria bien sólo a veces, otras veces falla devolviendo last_error ERROR_INVALID_ADDRESS. Viendo con olly me dice que la dirección no está en uso incluso cuando falla, pero el error es como sí la dirección estuviera ya reservada . Gracias por adelandato
|
|
|
303
|
Foros Generales / Foro Libre / Re: Abandono el foro
|
en: 29 Agosto 2010, 00:53 am
|
Si por culpa de que nadie respondió a tu pregunta has conseguido llegar a una solución por ti mismo, recibiste la mejor ayuda posible . Saludos
|
|
|
307
|
Foros Generales / Foro Libre / Re: En un mundo de sueños, cualquier cosa es posible (imagen)
|
en: 11 Agosto 2010, 02:00 am
|
Bueno, en resumen absolutamente todo esta controlado, nada es aleatorio. Excepto el pensamiento humano.
http://es.wikipedia.org/wiki/Relaci%C3%B3n_de_indeterminaci%C3%B3n_de_Heisenberg Las partículas, en mecánica cuántica, no siguen trayectorias definidas. No es posible conocer exactamente el valor de todas las magnitudes físicas que describen el estado de movimiento de la partícula en ningún momento, sino sólo una distribución estadística. Por lo tanto no es posible asignar una trayectoria a una partícula. Sí se puede decir que hay una determinada probabilidad de que la partícula se encuentre en una determinada región del espacio en un momento determinado.
Si el tema se va para cuántica a Constance le va a dar algo . Saludos
|
|
|
309
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Direccion sección
|
en: 9 Agosto 2010, 01:30 am
|
Es delito preguntar? aparte no han sido solo unas horas, nadie nace sabiendo
Lo que te dijo ctlon te lo dijo por tu bien (más fácil hubiera sido responderte), y yo respaldo su consejo, te lo digo por experiencia, tanto por "preguntón" como por "respondón". Si intentas afrontar los problemas por ti mismo y pensando "no lo dejaré hasta que lo comprenda" sí aprenderás realmente, en cambio la gente que al mínimo problema que encuentra pide ayuda realmente no está progresando, solventa el problema en ese momento pero no vive el proceso de aprendizaje necesario para llegar a esa solución. Saludos
|
|
|
310
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Añadir algoritmo en sección
|
en: 8 Agosto 2010, 14:20 pm
|
Lo metes en la nueva sección, tiene que ser un código en ASM en formato shellcode, que no dependa de una IAT ni de una sección data. Luego cambias en EntryPoint hacia donde metiste tu código y listo. http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_formato_pe_by_ferchu-t208278.0.html Mírate el Capitulo III: Agregando una sección con codigo. Saludos
|
|
|
|
|
|
|