elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 01:10  


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

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Obtener datos de un proceso ("cheat")
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Obtener datos de un proceso ("cheat")  (Leído 3,755 veces)
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Obtener datos de un proceso ("cheat")
« en: 10 Julio 2011, 00:43 »

Hola, vengo a pedirles que me orienten :P
Como puedo hacer para saber un valor de un elemento que tiene un programa. Porejemplo, dentro de un programa existe un textbox con un valor que aumenta cada 1 segundo, desde mi programa como puedo obtener el valor de ese textbox?. El programa "contador" no es mio y por lo tanto no tengo el codigo... y tampoco se que nombre tendra ese textbox :S. Bueno eso es lo que necesito saber, ojala me puedan ayudar :) Gracias de antemano


« Última modificación: 16 Julio 2011, 21:24 por ŞCØRPIØN-X3 » En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: Controlar programa externo
« Respuesta #1 en: 10 Julio 2011, 00:49 »

.
* Inyecta una dll... y realizas una subclasificacion al control mediante memoria compartida, dicha dll deberia enviarte los datos a tu programa ( SendMessage() o postMessage() ), es algo complejo... creo que la dll deberias hacerla en C/C++ por que la verdad nunca he visto inyecciones con dll creadas con vb6... aun con el tutorial de elguille para crear dll Standart.

Dulces Lunas!¡.


En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Controlar programa externo
« Respuesta #2 en: 10 Julio 2011, 01:04 »

podes hacer un simple EnumChildWindows de la ventana padre de ese textbox, o de toda la ventana del programa, y obtener los valores de los controles, en uno de ellos estara el valor de ese textbox, lo actualizas constantemente y listo.
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Controlar programa externo
« Respuesta #3 en: 10 Julio 2011, 20:15 »

muchas gracias a ambos por su respuesta :), la verdad es que se ve un poco complejo :S y con C++ no estoy muy familiarizado :(. Como es eso de EnumChildWindows?, con este se podria obtener el valor del textbox con el contador??. Muchas gracias...
En línea
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: Controlar programa externo
« Respuesta #4 en: 10 Julio 2011, 21:47 »

cuando no puedas resolver algo con el vb6 debes averiguar sobre las funciones de windows ( APIs de windows):

Código
 
 
'FindWindow: Busca una ventana por su classname o por su windowname(barra de titulo)

 
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
 
'parametros:

'lpClassName: nombre de la clase

'windowname: barra de titulo

 
 
 
 
'EnumChildWindows: Enumera las ventanas hijas (command, textbox,etc) de una ventana padre.

 
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
 
 
'parametros:

'hwndParent: hwnd ventana padre

'lpEnumFunc: direccion de la funcion que recibira los hwnd de las ventanas hijas, por cada ventana hija
           
            encontrada esta llamara a la funcion pasada
 
 
 
 
'SendMessage: Envia un mensaje a un hwnd (los mensajes son un monton)

 
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
 
'hwnd: hwnd donde se envia el mensaje

'wMsg: mensaje que se va enviar (en este caso WM_GETTEXT)

'wParam: creo que iria el tamaño de la cadena inicializada

'lParam: variable donde se guardara el texto obtenido


Form1:

Código
'agregar estos controles
'1 label con el caption "Titulo Ventana"
'1 textbox (text1) al lado derecho del label
'1 command (command1) debajo del textbox
'1 listbox (list1) al lado derecho del command1

Option Explicit
 
 
Private Sub Command1_Click()
   Dim hwnd As Long, Titulo As String
   Titulo = Text1.Text
   'busca la ventana pasandole la barra de titulo
   ' si lo encuentra devolvera el HWND de la ventana ,sino 0
   hwnd = FindWindow(vbNullString, Titulo)
   If hwnd <> 0 Then
       List1.Clear
       Contador = 0
       'enumera las ventanas hijas pasandole el HWND de la ventana padre y la direccion de la funcion
       'que va recibir los HWND de las ventanas hijas (AddressOf EnumChildProc)
       Call EnumChildWindows(hwnd, AddressOf EnumChildProc, ByVal 0&)
   Else
       MsgBox "No se encontro la ventana", vbCritical, ""
   End If
End Sub
 
Private Sub Form_Load()
   Command1.Caption = "Enumerar Ventanas Hijas"
   Label1.Caption = "Titulo ventana: "
End Sub
 

en un module bas: module1

Código
Option Explicit
 
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
 
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
 
Public Const WM_GETTEXT = &HD
 
Public Contador As Long
 
'funcion encargada de recibir cada HWND de las ventanas hijas

Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
   Dim Texto As String, Pos As Long
   'crea un espacios de 1000 caracteres para que almacene ahi el texto obtenido
   Texto = Space(1000)
   'aki obtiene el texto del HWND de la ventana hija y lo almacena en variable "Texto"
   Call SendMessage(hwnd, WM_GETTEXT, 1000, ByVal Texto)
   'busca el caracter nulo (este indica el fin de la cadena)
   Pos = InStr(1, Texto, Chr(0))
   'si lo encuentra coge los caracteres excepto el nulo
   If Pos > 0 Then Texto = Left(Texto, Pos - 1)
   'contador para saber el orden de la ventana hija
   Contador = Contador + 1
   'agrega el HWND y el texto de la ventana hija recibida
   Form1.List1.AddItem Contador & "- hWnd Hija: " & hwnd & " / Texto: " & Texto
   EnumChildProc = 1
End Function
 
 


con este codigo sabras los HWND de las ventanas hijas y sabras el orden que tiene la ventana de la q kieres obtener el texto, con ese ejempo puedes hacer otro  codigo para que tome el dato que kieres de la ventana hijas que kieres.
 
para mas info busca info sobre las apis de windows en VB6.
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: Controlar programa externo
« Respuesta #5 en: 10 Julio 2011, 23:45 »

.
la opcion con EnumChildWindows vas a tener que estar Refreshcando con algun timer, con la que te mensione yo (Subclasificar+inyeccion) no harias esto, claro que la opcion de usar EnumChildWindows es menos complejo que la que te propongo y menos codigo claro... aunq ue depende para que quieras los datos externos... y el tiempo de actualizacion del control, si es VARIADO yo te recomendaria la subclasificacion de lo contrario si sigue un patron con algun timer...

@alxspy
Usa las variantes para String... Left$(),

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Controlar programa externo
« Respuesta #6 en: 11 Julio 2011, 23:52 »

muchas gracias :) me gusto tu code alxspy, pero lo probe con un jugo y no obtiene los valores de las ventanas hijas, en el caso de los juegos onlines como se podria obtenerlos?. Muchas gracias, me gusta mas la idea de hacerlo inyectando el juego con una dll como dice BlackZero pero no me veo capaz de hacerlo solo :S.
En línea
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: Controlar programa externo
« Respuesta #7 en: 12 Julio 2011, 01:38 »

ese problemilla igual lo tenia yo al intentar obtener los HWND de las ventanas del GunBound, pues pasa que en los juegos esas no son ventanas sino solo son graficos.
En línea
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Controlar programa externo
« Respuesta #8 en: 12 Julio 2011, 02:56 »

sabes si existe alguna manera de obtener el texto de un textbox en un juego online??
En línea
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: Controlar programa externo
« Respuesta #9 en: 12 Julio 2011, 16:03 »

uhmm tengo poco conocimiento sobre manejo de la memoria , lo que intentaria : usar el ReadProcessMemory para buscar el dato en el proceso (el juego), en el link hay un ejemplo de  como puedes buscar una cadena en un proceso :

http://foro.elhacker.net/analisis_y_diseno_de_malware/ocultar_proceso_en_taskmgr_sin_hooks_parte2-t99549.0.html

weno ese te puede servir de ejemplo para hacer un nuevo codigo que busque el dato en el proceso que kieras, asi obtendrias la direccion de memoria de ese dato que buscas, y pues luego con un timer lees a cada momento esa direccion de memoria en la que encontraste ese datoy y listo.

sino puedes revisar este post que trata de inyeccion de una dll en el que cambian el comportamiento del juego de windows  "buscaminas" (para mi esto es avansado):

http://foro.elhacker.net/asm/tutoinyeccion_dll_%E2%80%93_full_api-t282673.0.html

ultimo recurso busca el "cheat engine" que es un programa que busca datos en la memoria de un proceso.
En línea
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Controlar programa externo
« Respuesta #10 en: 12 Julio 2011, 19:31 »

Gracias, lo voy a probar aver que tal me va xD, el cheat engine ya es obsoleto en los juegos online... me parecia tambien buena idea lograr crear un programa similar al cheat engine en vb6.0 asi de esta manera poder hacerlo indetectable pero todavia no lo logro xD
En línea
.:UND3R:.


Desconectado Desconectado

Mensajes: 1.960


Ingeniería inversa


Ver Perfil WWW
Re: Controlar programa externo
« Respuesta #11 en: 12 Julio 2011, 20:24 »

SCORPION que quieres hacer?
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Controlar programa externo
« Respuesta #12 en: 13 Julio 2011, 01:35 »

por lo que entiendo, cambiar una variable en memoria de un juego en el navegador, asi como hace el cheat engine con los juegos en flash.
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Controlar programa externo
« Respuesta #13 en: 13 Julio 2011, 06:47 »

Wenas... no seria cambiar un dato solo leer un dato, miren es asi: como la mayoria de los juego online existe una barra que es la vida del personaje, yo lo que necesito es captar ese valor. Otro dato similar que necesito captar es cuando una ventana dentro del juego esta abierta y cuando no. Eso es lo que necesitaria... Aclaro que el juego no es de navegador. Muchas gracias por su tiempo :)
En línea
ŞCØRPIØN-X3

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Controlar programa externo
« Respuesta #14 en: 14 Julio 2011, 03:58 »

no me pueden ayudar?
En línea
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines