Autor
|
Tema: problemas al intentar reemplazar string en la memoria. (Leído 5,537 veces)
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
Holas . Estoy intentando reemplazar un string de otra aplicacion en memoria pero no logre nada :\. Me podrian decir los orrores que tiene esto xd. int main() { char data[] = "asd"; DWORD pid; HANDLE process; HWND wnd = FindWindow(0, "ventana"); GetWindowThreadProcessId(wnd, &pid); process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if(process==NULL) printf("Error abriendo el proceso.\n"); else printf("Proceso abierto.\n");
if(WriteProcessMemory(process, (LPVOID)00405254, (LPVOID)&data, strlen(data), NULL) == 0) printf("Error escribiendo memoria.\n"); else printf("Memoria Escrita.\n");
CloseHandle(process);
system("PAUSE"); return 0; }
La direccion de memoria la saque con el ida. .rdata:00405254 00000018 C No hay nuevas verciones Trank . @EDIT me olvidaba,el ultimo printf lo manda bien,pero en la otra aplicacion el msgbox sigue siendo el mismo "No hay nuevas verciones".
|
|
« Última modificación: 26 Noviembre 2011, 17:20 pm por Destro- »
|
En línea
|
|
|
|
naderST
|
Un detalle la dirección que encontraste es decimal u octal? Porque cuando llamas a WriteProcessMemory le estas pasando una dirección en octal OJO, si es decimal quita todos los ceros a la izquierda que tengas. EDIT: Estoy casi seguro que tu problema es que estas poniendo la dirección en octal, y de igual manera escribirá en la memoria del proceso solo que en una dirección que no quieres escribir. WriteProcessMemory (process , (LPVOID )405254, (LPVOID )&data , strlen(data ), NULL )
|
|
« Última modificación: 26 Noviembre 2011, 22:29 pm por naderST »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
En PC las direcciones se anotan en hexadecimal casi siempre, 0x405254 en este caso.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
Ahora no escribe en la memoria :\. Error 998 El acceso a la dirección de memoria no es válido. Gracias .
|
|
« Última modificación: 27 Noviembre 2011, 02:04 am por Destro- »
|
En línea
|
|
|
|
Unbr0ken
Desconectado
Mensajes: 248
|
Copia la dirección que estás intentando escribir, busca algún debugger o programa para mostrar la memoria de un proceso y dirígete a esa parte, entonces mira las banderas de acceso y revisa si tiene datos esa dirección.
|
|
|
En línea
|
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre. NO resuelvo dudas vía MP, para algo está el foro.
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Tenes que llamar a VirtualProtectEx para darte permisos de escritura.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Unbr0ken
Desconectado
Mensajes: 248
|
Tenes que llamar a VirtualProtectEx para darte permisos de escritura.
Que directo tío xDDDDDDDDDDDDDDDDD.
|
|
|
En línea
|
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre. NO resuelvo dudas vía MP, para algo está el foro.
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
ok,en un rato pruebo y les cuento,gracias .
|
|
|
En línea
|
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
we,no lo pudo hacer ;(. esto es lo ultim que probe (probe como 20 cosas mas u.u). int main() { char data[] = "asd"; DWORD pid; HANDLE process; HWND wnd = FindWindow(0, "ventana"); GetWindowThreadProcessId(wnd, &pid); process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if(process==NULL) printf("[-] Error abriendo proceso.\n"); else printf("[+] Proceso abierto.\n");
VirtualProtectEx(process, (LPVOID)0x405254, 18, 1|2, 0);
if(WriteProcessMemory(process, (LPVOID)0x405254, (LPVOID)&data, strlen(data), NULL) == 0) printf("[-] Error escribiendo memoria:%d\n", GetLastError()); else printf("[+] Memoria Escrita.\n");
CloseHandle(process);
system("PAUSE");
return 0; }
|
|
« Última modificación: 29 Noviembre 2011, 00:12 am por Destro- »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿Te fijaste que devuelve VirtualProtectEx? En la MSDN dice expresamente:
lpflOldProtect [out] A pointer to a variable that receives the previous access protection of the first page in the specified region of pages. If this parameter is NULL or does not point to a valid variable, the function fails.
¿1|2? ¿Que intentabas hacer con esa mascara? ¿PAGE_NOACCESS y PAGE_READONLY? Deberias pasarle PAGE_READWRITE.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problemas al intentar conectar con mysql_connect()
PHP
|
gragera
|
8
|
7,283
|
20 Diciembre 2011, 23:16 pm
por ERIKSON879
|
|
|
Problemas con String
Java
|
Shell Root
|
4
|
3,936
|
15 Septiembre 2010, 16:04 pm
por Xedrox
|
|
|
problemas con string Urgente
Programación C/C++
|
ostavio09
|
1
|
1,618
|
10 Diciembre 2014, 03:29 am
por rir3760
|
|
|
[Ayuda] Reemplazar String en un archivo
« 1 2 »
Programación C/C++
|
.:UND3R:.
|
17
|
8,044
|
5 Mayo 2016, 22:19 pm
por class_OpenGL
|
|
|
Problemas con preg_replace(). Reemplazar palabras completas
Desarrollo Web
|
OssoH
|
0
|
2,149
|
18 Octubre 2022, 16:27 pm
por OssoH
|
|