Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: rembolso en 25 Mayo 2009, 06:35 am



Título: como hacer un registro remoto
Publicado por: rembolso en 25 Mayo 2009, 06:35 am
hola tengo un problema se hacer un editor de registro igual q al de windows esmas ya lo hice  y mejor ajajj pero el problema es q no tengo idea de como hacer remotamente  . con winsock es a lo q me refiero aplicacion cliente servidor
 :-\


Título: Re: como hacer un registro remoto
Publicado por: burbu_1 en 27 Mayo 2009, 01:15 am
hola,
precisamente yo estoy tratando de hacer algo similar. Si ya tienes el programa hecho no te será muy difícil (lo digo yo que soy un novato  javascript:void(0);).

lo que yo he hecho ha sido utilizar 3 winsock (para las instrucciones, envio de keys y envío de valores)

primero conecto los 3 winsock y la única pega es que el winsock que va a recibir la petición de conexión tiene que tener el index 0, y cuando recibe el connection_request hay que cargar el winsock(1) que será el que funcione.

cuando el winsock de instrucciones del server recibe una orden, por ejemplo "HKLM"
se ejecuta el api        RegOpenKey(HKEY_LOCAL_MACHINE, "", handle_superior)
y seguido un bucle con el api          RegEnumKeyEx(handle_superior, i, key_name, name_size, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) que mientras sea 0 mandará al cliente,de una en una, los nombres de las keys de HKLM, por el winsock de keys mediante la instrucción     winsock_keys.senddata key_name       y según se reciben se llevan a un listbox

cuando en el server, se reciben datos por el winsock de keys, será la subey que se quiere explorar del handle abierto anterior, se ejecutaría en el server
RegOpenKey(handle_superior, subkey, handle1)    para abrir la nueva subkey
handle_superior = handle1         para la siguiente key que abramos
y de nuevo un bucle con RegEnumKeyEx que se enviaría por winsock_key
y además otro bucle con RegEnumValue que se enviaría por winsock_value y en el cliente se añadiría a otro listbox

para otras instrucciones como borrar claves, crear nuevos valores y demás, habría que o bien meter más winsocks o jugar con las cadenas que se envían, por ejemplo yo envío junto a cada valor su data y su tipo, y después la separo en el cliente.

No sé si te habrá sido de ayuda, leyendo de nuevo el royo que he escrito, la verdad es que ni yo me entero  javascript:void(0);  , pero la idea es enviar desde el cliente una orden al servidor (winsock_cliente.senddata orden), recoger la orden en el servidor (winsock_servidor.getdata orden),analizar la orden en el servidor (if orden=...then), ejecutar la orden, devolver la salida (winsock_servidor.senddata salida) y recogerla en el cliente (winsock_cliente.getdata salida)





Título: Re: como hacer un registro remoto
Publicado por: rembolso en 27 Mayo 2009, 05:23 am
yo hice todo eso con un winsock pero cuando quiero obtener todas las ramas del registro y pasarlas a un listviev no me sale


Título: Re: como hacer un registro remoto
Publicado por: burbu_1 en 27 Mayo 2009, 17:10 pm
hola otra vez,
se me ocurre que cuando intentas mandar todas las ramas del registro, una tras otra, el winsock puede saturarse.
Yo uso un procedimiento que encontré por algún foro (creo que hacían un explorador de archivos remoto) del que no recuedo el nombre del autor.


Private Sub pausa()        'por un tema de velocidad ya que nuestro micro
                                     'es màs ràpido que nuestra conexiòn crearemos
    Dim comenzar            'un Procedimiento que hara pausas entre envio y envio,
    Dim controlar             'asi no atora a Winsock
    comenzar = Timer
    Do Until controlar >= comenzar + 0.01
        controlar = Timer
        DoEvents
    Loop

End Sub

Llamando a este procedimiento en el server, tras la instrucción winsock.sendddata (call pausa), a mi me envía correctamente todas las ramas.

Espero que te sirva. Un saludo.

P.D. Repito que el código no es mío, lo encontré por ahí y siento no recordar el nombre del autor para ponerlo.