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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  API Sendmessage en una Shell
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: API Sendmessage en una Shell  (Leído 4,351 veces)
Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
API Sendmessage en una Shell
« en: 7 Enero 2011, 03:55 am »

Holaaaa :D

Estaba haciendo una shell remota en VB6.0 para ver si entendia de que venia la mano con sockets y me di cuenta que si hago asi
Código:
shell ("cmd.exe /c " & strComandoaca)
me es imposible encadenar comandos, por ejemplo si quiero ir a un directorio con el comando "cd" y despues pedir un "dir" me es imposible.

asi que empeze a leer de que venia lo de sendmessage y los handles.

asi que tengo esto:
Código
  1. Option Explicit
  2. Private Declare Function SendMessage _
  3. Lib "user32" Alias "SendMessageA" _
  4. (ByVal Hwnd As Long, ByVal wMsg As Long, _
  5. ByVal wParam As Long, lParam As Any) As Long
  6. Private Const WM_SETTEXT = &HC
  7. Private Const WM_GETTEXT = &HD
  8. Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
  9. (ByVal lpClassName As String, _
  10. ByVal lpWindowName As String) As Long
  11. Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _
  12. (ByVal hWnd1 As Long, _
  13. ByVal hWnd2 As Long, _
  14. ByVal lpsz1 As String, _
  15. ByVal lpsz2 As String) As Long
  16. Dim Hndl As Long
  17.  
  18. Private Sub Command1_Click()
  19. Hndl = FindWindow("ConsoleWindowClass", vbNullString)
  20. If Hndl <> 0 Then
  21. Call SendMessage(Hndl, WM_SETTEXT, 0, ByVal "echo pokemon")
  22. Else
  23. MsgBox "la shell no ta :P"
  24. End If
  25. End Sub
  26.  
  27. Private Sub Command2_Click()
  28. Shell ("cmd.exe /k title Prueba")
  29. End Sub


pero oh sorpresa, el texto que deberia escribir en la consola lo escribe en el titulo en lugar de en la parte adonde se escriben los comandos :S

alguna idea o constante para el sendmessage que yo no conozca?

Muchas gracias ^^


En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Sanlegas

Desconectado Desconectado

Mensajes: 131


https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-


Ver Perfil
Re: API Sendmessage en una Shell
« Respuesta #1 en: 7 Enero 2011, 05:19 am »

si te refieres a que no se te abre el cmd con el comando que quieras prueba con
Código:
shell "cmd /k " & MiComando 
:P


En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: API Sendmessage en una Shell
« Respuesta #2 en: 7 Enero 2011, 09:25 am »

Con batch no se va a ningún lado... :silbar:

DoEvents! :P
« Última modificación: 7 Enero 2011, 09:45 am por Mr. Frog © » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: API Sendmessage en una Shell
« Respuesta #3 en: 7 Enero 2011, 09:30 am »

.
Código
  1.  
  2. Call SendMessage(Hndl, WM_SETTEXT, 0, ByVal "echo pokemon")
  3.  
  4.  

Con la constante WM_SETTEXT + el handle de la ventana es como llamar a la API.

Código
  1.  
  2. Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
  3.  
  4.  

Espero lo comprendas con esto:

Es como si le pasaras el handle de un Form y quieres establecer un texto a un TextBox... es decir no nesesitarias el Handle de la ventana del form contenedor realmente, sinenbargo si el el Handle del TextBox el cual es una ventana...

En otras palabras debes buscar el Handle REAL de la ventana donde quieres establecer el texto, aun que no creo que puedas en el Command Line pero no estoy seguro..

Dulces Lunas!¡.
.
« Última modificación: 7 Enero 2011, 09:49 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: API Sendmessage en una Shell
« Respuesta #4 en: 7 Enero 2011, 16:34 pm »

@Tenient101

No puedo hacerlo asi porque si quiero encadenar comandos es imposible. lo explique al principio ¬¬

@MrFrog

Antes de tdos ustedes DOS tenia todo el Rock!  :rolleyes: :rolleyes:
Yo aprendi batch antes que a usar el excel. algun problema?

@blackzero

Muchas gracias por la pequeña explicacion, pero los handles de la consola de comandos no estan separados.

Despues, si encuentro el codigo que descarte les muestro una app para encontrar handles.
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: API Sendmessage en una Shell
« Respuesta #5 en: 7 Enero 2011, 17:27 pm »

Si lo quieres hacer el plan cutre puedes meter todos los comandos en una linea uniendolos con &, por ejemplo:
Código:
cd\ & dir

La forma habitual de hacer este tipo de cosas es usando Pipes... Tu creas el proceso del "cmd.exe" (AKA %ComSpec%) y le dices donde ha de escribir todo (Cambiando el I/O)... luego tu con ReadFile() y WriteFile() vas leyendo todo lo que hayas de leer... mas informacion aqui:
Código:
http://foro.elhacker.net/programacion_visual_basic/ejecutar_bat_desde_shell-t255992.0.html;msg1240519#msg1240519
(Se puede acortar un poco el codigo, pero esa seria la version correcta)

Un saludo ;)
« Última modificación: 7 Enero 2011, 17:29 pm por Karcrack » En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: API Sendmessage en una Shell
« Respuesta #6 en: 8 Enero 2011, 00:14 am »

Si lo quieres hacer el plan cutre puedes meter todos los comandos en una linea uniendolos con &, por ejemplo:
Código:
cd\ & dir

La forma habitual de hacer este tipo de cosas es usando Pipes... Tu creas el proceso del "cmd.exe" (AKA %ComSpec%) y le dices donde ha de escribir todo (Cambiando el I/O)... luego tu con ReadFile() y WriteFile() vas leyendo todo lo que hayas de leer... mas informacion aqui:
Código:
http://foro.elhacker.net/programacion_visual_basic/ejecutar_bat_desde_shell-t255992.0.html;msg1240519#msg1240519
(Se puede acortar un poco el codigo, pero esa seria la version correcta)

Un saludo ;)

Me gusta el "plan cutre"
:D!
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: API Sendmessage en una Shell
« Respuesta #7 en: 8 Enero 2011, 02:13 am »

No se porque tenia la sensacion que esa iba a ser tu eleccion :laugh: :laugh:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con sendmessage
Programación Visual Basic
Sai-To 7 2,304 Último mensaje 17 Abril 2008, 06:11 am
por cassiani
una duda con SendMessage
Programación Visual Basic
Sai-To 4 1,915 Último mensaje 25 Mayo 2008, 21:26 pm
por Freeze.
SendMessage Ayuda!
.NET (C#, VB.NET, ASP)
Keyen Night 6 6,236 Último mensaje 7 Octubre 2009, 17:55 pm
por Keyen Night
Problemas con SendMessage
Ingeniería Inversa
pepeBocachancla 3 2,851 Último mensaje 16 Julio 2010, 17:38 pm
por pepeBocachancla
SendMessage
Programación C/C++
calk9 5 3,428 Último mensaje 14 Septiembre 2011, 19:52 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines