Autor Tema: Como proteger un proceso de visual basic 6.0  (Leído 11068 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado CRadiationS

  • MiembrosReales
  • *
  • Mensajes: 49
Como proteger un proceso de visual basic 6.0
« : octubre 24, 2006, 04:02:02 pm »
Como puedo hacer para proteger un programa que no se pueda cerrar desde el administrador de tareas "de los procesos" asi como hacer el Panda antivirus, que por mas que uno haga no es posible destruir sus procesos

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #1 : octubre 24, 2006, 06:24:57 pm »
Tendrias que tener dos cosas:

Instalar un sub-programa especial como servicio de windows que monitoree que tu otra aplicación este abierta, sino reabrirla.

Tu programa hace lo inverso, se asegura que el servicio este activo.

El task manager no permite cerrar dos procesos a la vez, así que ahi reside el truco.

En sistemas 9x que no hay servicios, funciona igual tener dos aplicaciones que se monitoreen mutuamente.

Quizas esta es la forma mas fácil, sino tambien podes instalar tu programa como un "driver" (obviamente falso) ó algo por el estilo para que ni siquiera se liste entre los procesos.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #2 : octubre 24, 2006, 06:36:30 pm »
utta esta interesante tu peticion, haver si me decis como te quedo al final porque una vex tuve intentando con eso y no haye como, ahora pues estoy en otras ondas y no me queda chance.
talvez me haces el paro de pasarme un ejemplito de como lo hiciste ?? CRadiatonS  :angel:
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #3 : octubre 24, 2006, 07:36:01 pm »
hey vladimir pero si hay procesos que no se dejan cerrar, tal vez tu respuesta esta orientada a contestarle lo del panda, que el panda si lo hace de esa manera tiene otro servicio monitoreando sus aplicaciones para levantarlas de nuevo en caso de que alguna falle.

Pero de procesos de windows podes ver por ejemplo el smss.exe intenta cerrarlo y no te dejara :S

Peor se me hace que son cosas propias de micro$oft y que en realidad no han dejado la posibilidad a los creadores normales de aplicaciones que hagan esto.

Sino imaginate el caos de virus y spyware que no te permitieran cerrarlos :S

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #4 : octubre 24, 2006, 08:57:05 pm »
hey vladimir pero si hay procesos que no se dejan cerrar, tal vez tu respuesta esta orientada a contestarle lo del panda, que el panda si lo hace de esa manera tiene otro servicio monitoreando sus aplicaciones para levantarlas de nuevo en caso de que alguna falle.

Pero de procesos de windows podes ver por ejemplo el smss.exe intenta cerrarlo y no te dejara :S

Peor se me hace que son cosas propias de micro$oft y que en realidad no han dejado la posibilidad a los creadores normales de aplicaciones que hagan esto.

Sino imaginate el caos de virus y spyware que no te permitieran cerrarlos :S

Fijate que una vez me tope con un Spyware maldito que no se dejaba cerrar....habria que cranearlo bien pero recordemos que en VB te quedarias algo limitado para hacer algo asi...

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2171
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #5 : octubre 25, 2006, 08:56:34 am »
Hay una forma de saber desde donde se está cerrando tu aplicación y poder cancelar esa acción (si tratas de cerrarla desde el task manager), y es la siguiente:

Código: [Seleccionar]
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    'No permite cerrar si es un mensaje de window$
    Select Case UnloadMode
    Case vbFormCode, vbAppTaskManager, vbAppWindows
        MsgBox "No se cerrará la aplicación, no seas necio", vbInformation, "Mensajes"
        Cancel = True
        WindowState = vbMinimized
    Case Else
        'La esta cerrando desde el formulario (llamada a unload me), cerrar y no renegar
    End Select
End Sub

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #6 : octubre 25, 2006, 09:03:39 am »
Hay una forma de saber desde donde se está cerrando tu aplicación y poder cancelar esa acción (si tratas de cerrarla desde el task manager), y es la siguiente:

Código: [Seleccionar]
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    'No permite cerrar si es un mensaje de window$
    Select Case UnloadMode
    Case vbFormCode, vbAppTaskManager, vbAppWindows
        MsgBox "No se cerrará la aplicación, no seas necio", vbInformation, "Mensajes"
        Cancel = True
        WindowState = vbMinimized
    Case Else
        'La esta cerrando desde el formulario (llamada a unload me), cerrar y no renegar
    End Select
End Sub
umm ahorita estoy en la u y no tengo VB al alcanze, pero casi podria asegurar que ese codigo no es valido (no efectivo) en xp, si no perdona el comentario.
hey vladimir pero si hay procesos que no se dejan cerrar, tal vez tu respuesta esta orientada a contestarle lo del panda, que el panda si lo hace de esa manera tiene otro servicio monitoreando sus aplicaciones para levantarlas de nuevo en caso de que alguna falle.

Pero de procesos de windows podes ver por ejemplo el smss.exe intenta cerrarlo y no te dejara :S

Peor se me hace que son cosas propias de micro$oft y que en realidad no han dejado la posibilidad a los creadores normales de aplicaciones que hagan esto.

Sino imaginate el caos de virus y spyware que no te permitieran cerrarlos :S
Los procesos criticos se ejecutan en otros niveles, ademas son procesos monitoreados por el sistema.

Si de casualidad forzas a que terminen y el sistema no puede reiniciarlos, te va a tirar error critico y te va a pedir reiniciar (si no es que lo hace por su cuenta).

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2171
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #7 : octubre 25, 2006, 09:38:27 am »
Bueno, el codigo que yo puse lo probe en el XP y me funciono pero solo en la parte del taskmanager donde dice "Aplicaciones", para la parte de "Procesos" no funciona, pero se me ocurrio que talvez ocultando el proceso de esa lista de procesos no se podra cerrar desde ahi :p

Por lo tanto aqui te pongo un proyecto que ya implementa esa rutina (la verdad es que son varias) para ocultar el proceso.

Te pongo un ejecutable también para que lo probés. :thumbsup:
« Última Modificación: octubre 25, 2006, 09:42:35 am por °o.O[ F®ªnk ]O.o° »

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado Trance

  • Sv Vampire Team ® Founder
  • The Communiter-
  • *****
  • Mensajes: 1655
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #8 : octubre 25, 2006, 10:46:30 am »
para aprender algo nuevo con los proceso baje el archivo prueba.zip, ejecute el projecto1.exe, fui a ver el administrador de tareas y el taskmgr.exe empieza a aumentar el uso de memoria  :unsure:

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #9 : octubre 25, 2006, 08:08:27 pm »
Bueno, el codigo que yo puse lo probe en el XP y me funciono pero solo en la parte del taskmanager donde dice "Aplicaciones", para la parte de "Procesos" no funciona, pero se me ocurrio que talvez ocultando el proceso de esa lista de procesos no se podra cerrar desde ahi :p

Por lo tanto aqui te pongo un proyecto que ya implementa esa rutina (la verdad es que son varias) para ocultar el proceso.

Te pongo un ejecutable también para que lo probés. :thumbsup:
Me gustaría decir que ese último si funciona bastante bien... puedo confirmarlo, muy interesante el código de hecho.

para aprender algo nuevo con los proceso baje el archivo prueba.zip, ejecute el projecto1.exe, fui a ver el administrador de tareas y el taskmgr.exe empieza a aumentar el uso de memoria  :unsure:

Acá trance tiene razón, y creo que el problema esta que eliminas la entrada de la lista periódicamente (cada 20milisegundos según me parece enviando LVM_DELETEITEM), pero no descargas la memoria del registro para la entrada con eso, así que cada vez que se reinserta el item en la lista la memoria "crece" porque nunca se descargan los datos antiguos, solo lo visual.

Claro, eso no es un problema serio a menos que haya alguien que viva con el taskmanager abierto... pero al final si es un pequeño "problema".

Por otra parte -y a modo de sugerencia- como el hwnd de la ventana del taskmanager se obtiene por el nombre vía FindWindow, quizas conveniente que la buscaras en ingles tambien, si no la protección queda descartada en Windows de idioma distinto al español.

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2171
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #10 : octubre 25, 2006, 08:32:37 pm »
...Por otra parte -y a modo de sugerencia- como el hwnd de la ventana del taskmanager se obtiene por el nombre vía FindWindow, quizas conveniente que la buscaras en ingles tambien, si no la protección queda descartada en Windows de idioma distinto al español.

Tenés toda la razón, la verdad es que ese código no es mío, pero no está muy dificil de entender, para que pueda funcionar para el window$ en inglés (además del español), sólo basta con agregar otra variable "HandleENG" que capture lo siguiente:

Código: [Seleccionar]
HandleENG = FindWindow(vbNullString, "Windows Task Manager")
Y posteriormente agregar otra validación, como la que sigue:
Código: [Seleccionar]
If HandleENG <> 0 Then
   EnumChildWindows HandleENG, AddressOf Procesos, 1
End If

Todo esto dentro del procedimiento TimerProc.

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #11 : octubre 25, 2006, 08:53:40 pm »
ummm cierto, ó tambien podrían hacerlo así:

Despues de:
Código: [Seleccionar]
'Se obtiene el HWND del administrador de tareas
Handle = FindWindow(vbNullString, "Administrador de tareas de Windows")

Poner:
Código: [Seleccionar]
Handle = IIf(Handle <> 0, Handle, FindWindow(vbNullString, "Windows Task Manager"))
así se ahorrarian una variable y un chequeo :)

Por cierto, alguna idea de como liberar la memoria de la entrada?.

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2171
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #12 : octubre 26, 2006, 07:48:19 am »
Fijate que lo de la memoria medio lo revise, pero no le haye por donde, lo voy a seguir revisando hoy que llegue a la casa  x_x

Pero si no tenes el task manager abierto no hay problema :)

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Como proteger un proceso de visual basic 6.0
« Respuesta #13 : noviembre 04, 2006, 07:24:05 am »
Algo quizás interesante para sustituir la función Findwindow y hacer el programa compatible con todos los idiomas:
http://www.vbsiglo21.net/articulo8.html

Saludos.