readprocessmemory to memcopy

Iniciado por Cromatico, 24 Mayo 2014, 01:41 AM

0 Miembros y 1 Visitante están viendo este tema.

Cromatico

Hola compañeros, estoy teniendo un problema...
Yo usaba readprocessmemory para obtener un STRING de un proceso, ahora me inyecto al proceso, asi que quiero utilizar memcpy y hacerlo solo en una linea sin hProcess...

Leía un String de 50...

BYTE tmp[50];
ReadProcessMemory(hProcess,(LPCVOID)(0x123456), &tmp, 50, 0);


Supuse que para pasarlo a memcopy seria algo asi:
memcpy (&tmp, (PVOID)(0x123456), 50);

Pero me crashea constantemente...

Alguna idea? Gracias y saludos!

x64core

Cita de: Cromatico en 24 Mayo 2014, 01:41 AM
Hola compañeros, estoy teniendo un problema...
Yo usaba readprocessmemory para obtener un STRING de un proceso, ahora me inyecto al proceso, asi que quiero utilizar memcpy y hacerlo solo en una linea sin hProcess...

Leía un String de 50...

BYTE tmp[50];
ReadProcessMemory(hProcess,(LPCVOID)(0x123456), &tmp, 50, 0);


Supuse que para pasarlo a memcopy seria algo asi:
memcpy (&tmp, (PVOID)(0x123456), 50);

Pero me crashea constantemente...

Alguna idea? Gracias y saludos!
memcpy (&tmp, (PVOID)(0x123456), 50);

Cromatico

x64Core gracias por tu respuesta, ahora no crashea pero no me copia nada...
Sera porque el STRING puede que sea unicode?

memcpy (tmp, (PVOID)(0x123456), 50);

Si intento con wmemcpy, como sería? Asi no me funciona:
wmemcpy (tmp, (PVOID)(0x123456), 50);

Saludos y gracias!

x64core

Cita de: Cromatico en 24 Mayo 2014, 19:26 PM
x64Core gracias por tu respuesta, ahora no crashea pero no me copia nada...
Sera porque el STRING puede que sea unicode?

memcpy (tmp, (PVOID)(0x123456), 50);

Si intento con wmemcpy, como sería? Asi no me funciona:
wmemcpy (tmp, (PVOID)(0x123456), 50);

Saludos y gracias!
sea unicode o no eso a la hora de copiar no importa son simplemente bytes en todos los casos
lo que te refieres quizas es a la hora de representarlos o mostrarlos de alguna manera lo mejor seria saber
si es UNICODE o ASCII simplemente abrir el proceso con algun virtualizador por ejemplo cheat engine vas a dirección de memoria
y compruebas luego en código validas la longitud con wcslen/strlen luego copias wcscpy/strcpy.