elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda pasar de LPWSTR a char *
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda pasar de LPWSTR a char *  (Leído 5,468 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Duda pasar de LPWSTR a char *
« en: 13 Noviembre 2014, 14:26 pm »

Tema muy muy frustrante, érase un keylogger:

Código:
HWND ventana;
LPWSTR cadena;
char ventanika[500];
while(1)
{
GetWindowText(ventana, cadena, 500);
//metemos en ventanika lo de cadena
fprintf(log, "[-] [ Ventana: %s ]", ventanika);
}

He probado todo, todo.

Luego como se inicializa ese demonio, ni un ejemplo.
Vale si pones: LPWSTR cadena=L"***** de cadena";
Luego usas GETWINDOWTEXT y sigue teniendo ***** de cadena XD

Luego me hizo gracia el visual studio hice un programa fuí a ejecutarlo en otro ordenador y me dió eror que faltaba una dll me decía MVS... .dll wtf?

Edito: LOL no se puede escribir mir..a en el foro.

Edito: No se trata de convertir el tema realmente sino de porque no funciona GETWINDOWTEXT y no me carga la cadena.

Otra prueba más:

Código:
HWND ventana;
char ventanika[500];
while(1)
{
GetWindowText(ventana, (LPWSTR)ventanika, 500);
for (int i = 0; ventanika[i] != '\0'; i++)
{
printf("%c", ventanika[i]);
}
system("pause");
}

Creo que por aquí avanzamos más pero así solo me muestra el primer caracter, debe de ser un puntero pero aun así debería de sacar todos los caracteres no? x`p
xD


« Última modificación: 13 Noviembre 2014, 14:43 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.473


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Duda pasar de LPWSTR a char *
« Respuesta #1 en: 13 Noviembre 2014, 14:36 pm »

Luego me hizo gracia el visual studio hice un programa fuí a ejecutarlo en otro ordenador y me dió eror que faltaba una dll me decía MVS... .dll wtf?

Puedes hacer que MSVC++ compile sin dependencias. Con eso no pedirá más el runtime...

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda pasar de LPWSTR a char *
« Respuesta #2 en: 13 Noviembre 2014, 14:37 pm »

Luego me hizo gracia el visual studio hice un programa fuí a ejecutarlo en otro ordenador y me dió eror que faltaba una dll me decía MVS... .dll wtf?

Una cosa es desarrollar una aplicación y otra "desplegarla". Una aplicación, por norma general, no es autocontenida, es decir, no tiene todo el código necesario para su ejecución. Dependiendo del compilador suele ser necesario arrastrar junto con el ejecutable una serie de librerías.

Por ejemplo, para el compilador de windows, suelen hacer falta las librerías: "msvcrXX.dll" (si compilas C) y "msvcpXX.dll" (si compilas C++), donde XX es la versión del compilador. Sin embargo, si compilas con mingw es posible que tengas que copiar las librerías "mingwmXX.dll", "libgcc_s_dwX-Y.dll" y "libstdc++-X.dll"

Lo mejor muchas veces es usar una aplicación tipo "dependency walker" para saber las dependencias exactas de una aplicación o dll y así asegurarnos de que nos llevamos todo lo necesario para poder ejecutar nuestros proyectos.

Como te comentaron, se puede configurar el compilador para que compile sin dependencias, todo es cuestión de mirar la documentación y trastear.

Un saludo.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #3 en: 13 Noviembre 2014, 14:39 pm »

Asi como lo pones tenes un puntero indefinido llamado cadena, puede apuntar a cualquier lado. El VC++ lo indica claramente:
x.cpp (?) : warning C4700: uninitialized local variable 'cadena' used

Supongo que buscas esto:
Código
  1. wchar_t cadena[500];

Y si, enlaza la RTL estaticamente.
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
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #4 en: 13 Noviembre 2014, 14:50 pm »

Gracias no esperaba unas respuestas tan rapidas, respecto a lo de la dll ya mirare algo para que compile sin dependencias uso MVS13.

Por lo del programa he probado lo que dijo etternal idol sustituyendo la deficinion de cadena anterior por la suya y nada sigue mostrandome un caracter el puntero o lo que sea porque el LWSTR es algo raro de c*****s. xD

Creo que el camino más facil estará por aquí (por si no lo leístes cuando edite):

Código
  1. HWND ventana;
  2. char ventanika[500];
  3. while(1)
  4. {
  5. GetWindowText(ventana, (LPWSTR)ventanika, 500);
  6. for (int i = 0; ventanika[i] != '\0'; i++)
  7. {
  8. printf("%c", ventanika[i]);
  9. }
  10. system("pause");
  11. fprintf(log, "[-] [ Ventana: %s ]", ventanika);
  12. }
  13.  

En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #5 en: 13 Noviembre 2014, 14:53 pm »

Ese casting es erroneo, LPWSTR significa Long Pointer Wide String, por eso como te mostre tenes que usar wchar_t (Wide char) y no char. Y deberias usar %ws no %s por la misma razon.
« Última modificación: 13 Noviembre 2014, 14:55 pm por Eternal Idol » 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
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #6 en: 13 Noviembre 2014, 15:03 pm »

a mi me funciono asi

Código
  1. LPTSTR cadena;
  2. char n[60];
  3. GetWindowTextA(hwnd,cadena,60);
  4. strcpy(n,cadena);
  5.  
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520%28v=vs.85%29.aspx
« Última modificación: 13 Noviembre 2014, 15:36 pm por daryo » En línea

buenas
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #7 en: 13 Noviembre 2014, 15:09 pm »

OH! MAGIA, te quiero, ahora solo falla que strlen() funcione, pero eso ya es mal mucho menor <3<3

Codigo por si alguien le pasa (no se fien mucho)

Código
  1. HWND ventana;
  2. char ventanika[500];
  3. while(1)
  4. {
  5. GetWindowText(ventana, (LPWSTR)ventanika, 500);
  6. fprintf(log, "[-] [ Ventana: %s ]", ventanika);
  7. }
  8.  

PD: el unicornio de daryo me hace la competencia, probare lo de daryo de toda formas

Edito: Lo de daryo no me funciono el strcpy.. ademas usas otro puntero, lo probe tal cual y me dio error xp

Edito: Me ha encantado la ***** que hice para suplantar el strlen()

if(strlen(vetanika)>0) ---> if(ventanika[0]!='\0') jajaja
« Última modificación: 13 Noviembre 2014, 15:18 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #8 en: 13 Noviembre 2014, 15:25 pm »

Esto es un problema de enfoque, hay que leer sobre ANSI vs Unicode antes de continuar sin entender lo que se esta haciendo ... si estan en Unicode tienen que usar las funciones de cadena para Wide char (wcslen por ejemplo). daryo si eso te compila es por una razon: estas en ANSI; igual tiene el mismo problema que el codigo original, cadena es un puntero indefinido (a char en tu caso, a wchar_t si se definiera Unicode en el proyecto y ahi ya no compilaria mas).

MSDN: Unicode and ANSI names GetWindowTextW (Unicode) and GetWindowTextA (ANSI)

Kaxperday: te repito, ese casting es un error logico, si estas en Unicode y por eso usas GetWindowTextW le estas diciendo a la funcion que tu buffer tiene 500 caracteres y no es cierto si usas char[500] y ese casting, tenes 250 caracteres.
« Última modificación: 13 Noviembre 2014, 15:33 pm por Eternal Idol » 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
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Duda pasar de LPWSTR a char *
« Respuesta #9 en: 13 Noviembre 2014, 15:36 pm »

 pues si toda la razon uso ansi. entonces mejor especificar
Código
  1. GetWindowTextA

PD: prueba
Código
  1. char n[60];
  2.    GetWindowTextA(hwnd,(LPTSTR)n,60);
« Última modificación: 13 Noviembre 2014, 15:43 pm por daryo » En línea

buenas
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pasar int to char y Viceversa
Programación C/C++
rembolso 3 4,198 Último mensaje 29 Enero 2011, 19:03 pm
por The Swash
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,057 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
Como pasar una cadena char a hexadecimal por argumento a un constant char?
Programación C/C++
ahaugas 3 4,925 Último mensaje 13 Enero 2013, 14:09 pm
por ahaugas
Pasar tipo const char* a char « 1 2 »
Programación C/C++
jorge_hura 15 10,751 Último mensaje 25 Julio 2013, 09:50 am
por Eternal Idol
Convertir LPWSTR a char **
Programación C/C++
patilanz 3 1,906 Último mensaje 12 Agosto 2015, 14:10 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines