Hola que tal andan?
veran tengo este code:
#include <C:\Dev-Cpp\All.h>
using namespace std;
int main(void)
{
int String = 82;
HANDLE Fil = CreateFile("f.dll",GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
int SizeMax = GetFileSize(Fil,0);
SizeMax <<1;
HANDLE Map = CreateFileMapping(Fil,0,PAGE_READWRITE,0,SizeMax,0);
void *ptr = MapViewOfFile(Map,FILE_MAP_ALL_ACCESS,0,0,0);
char *ptr2 = (char*)ptr+0x54234;
memcpy(ptr2,&String,sizeof(String));
return 0;
}
ese code escribe en la direccion de memoria especificada un caracter,escribe la letra R que es 82 en ascii,pero necesito escribir mas de un caracter i nose como hacerlo ,los espacio etc etc como escribo mas de un caracter en ASCII,la variable String es = 82,no puedo poner String =82105 etc...es decir no puedo poner todos los caracteres juntos en ASCII,tengo k hacerlo asi por k es unicode por desgracia mia
un saludo
Ahí no estás escribiendo un 82, estás escribiendo un 00000082, que no es lo mismo. Utiliza 'char caracter=82'.
Para copiar más de una letra no tienes más que usar un bucle:
char *String="asdf";
(...)
char *ptr2=(char*)ptr+0x54234;
for(int i=0;i<lstrlenA(String);i++)
{
ptr2[i]=String[i];
}
Saludos
Heii k tal?
lo k pasa es que no quiero escribir un 82 sino el caracter R,es que lo k quiero modificar esta en UNICODE i klaro no puedo escribir Directamente una cadena normal...menudo un problemo k me ronda...i claro es facil decir Busca en Google si yo lo entiendo...pero yo YA BUSCQUE!! xD i no encontre nada! por eso estoy aki ando ya desesperado
gracias por tu respuesta
Para unicode es casi lo mismo, en unicode las letas se alternan con ceros, y el caracter nulo es un doble cero: {'a',0,'s',0,'d',0,'f',0,0}
Puedes usar el mismo code de antes utilizando lstrlenW en vez de lstrelenA y (wchar*) en vez de (char*).
Saludos
Ok thanks peor una ultima kosa,no me reconoce WCHAR el Dev-C++:S esta en alguna libreia esecial o algo?
http://msdn.microsoft.com/en-us/library/ms684497(EXCHG.10).aspx
Saludos
Cita de: Hacker_Zero en 24 Mayo 2010, 22:16 PM
Para unicode es casi lo mismo, en unicode las letas se alternan con ceros, y el caracter nulo es un doble cero: {'a',0,'s',0,'d',0,'f',0,0}
Puedes usar el mismo code de antes utilizando lstrlenW en vez de lstrelenA y (wchar*) en vez de (char*).
Saludos