Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Cromatico en 18 Marzo 2013, 11:51 am



Título: Array Unicode
Publicado por: Cromatico en 18 Marzo 2013, 11:51 am
Buenos dias a todos! Queria hacerles una consulta, tengo un proyecto en DEV C++ con una funcion para leer un array de bytes... ReadProcessMemory...

Lo asigno a un array declarado de esta forma:
Código:
BYTE Array[30];

Hasta acá todo perfecto, ahora cuando lo quiero convertir a string...

Código:
*TEXTO = const_cast<char*>(LPCSTR(Array));
MessageBox(NULL, *TEXTO, "PRUEBA", MB_OK);
long *buffer;
char text[] = "Nada ";
char name[sizeof(*TEXTO)];
strcpy(name, *TEXTO);
buffer = (long *)calloc(sizeof(*TEXTO), sizeof(*TEXTO));
*TEXTO = (char *)buffer;
strcat(*TEXTO, name);

Con la primera linea, ya logro que el MessageBox me salga correctamente... Lo demas, es para que retorne ese string en VB... No se si habra codigo que sobre, pero es la unica forma que pude hacer que funcione...

El tema es que cuando el array es UNICODE, solo sale la primera letra en el MESSAGEBOX, al igual que lo que llega a VB, solo la primera letra... Como puedo convertir el Array a UTF, o bien, hacer que en el Array, se quiten los 00 que tiene entre cada caracter?

Muchas gracias!!!


Título: Re: Array Unicode
Publicado por: Cromatico en 18 Marzo 2013, 15:52 pm
Bueno resolvi haciendo otro array con un for que va sumando de dos en dos, y va asignando junto a otro contador, el otro array...
Poco y nada en C++, pero fue la forma en que me la pude rebuscar y funciono :P.

Gracias y saludos


Título: Re: Array Unicode
Publicado por: x64core en 20 Marzo 2013, 07:25 am
Existen funciones que te facilitan la conversion:
MultiByteToWideChar
WideCharToMultiByte


Título: Re: Array Unicode
Publicado por: Luz Violeta en 23 Marzo 2013, 01:54 am
Prácticamente todas las funciones que vas a usar de la API de Windows tienen su versión "ansi" y "unicode" ... básicamente según hagas un define indicando que el proyecto es unicode o no, el preprocesador apunta las funciones a su versión ansi u unicode.

Miralo así:

MessageBoxA → Versión ANSI
MessageBoxW → Versión "Wide" o Unicode.
MessageBox → Un preprocesador que apunta a una u otra según se configure el proyecto.

Antes que hacer conversiones, es mejor usar la respectiva función.

Saludos.

P.S → Eso o entendí rrré mal tu intención x')