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 General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Detectar Proceso Padre (VB.net)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Detectar Proceso Padre (VB.net)  (Leído 638 veces)
**Aincrad**


Desconectado Desconectado

Mensajes: 506



Ver Perfil
Detectar Proceso Padre (VB.net)
« en: 15 Marzo 2019, 20:45 »

Hola, No ce como hacerle, Pero quiero Saber si se puede Detectar por ejemplo:

Sin la cmd o algún otro programa abre mi app quiero detectar eso.

pero no se como hacerlo, si alguien me puede ayudar. Gracias de antemano.

Lo que necesitaría saber es cual es el Proceso padre que ejecuta mi app.


En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Detectar Proceso Padre (VB.net)
« Respuesta #1 en: 15 Marzo 2019, 22:42 »

Por orden de menor a mayor velocidad de ejecución:


Saludos.


« Última modificación: 15 Marzo 2019, 22:55 por Eleкtro » En línea


**Aincrad**


Desconectado Desconectado

Mensajes: 506



Ver Perfil
Re: Detectar Proceso Padre (VB.net)
« Respuesta #2 en: 15 Marzo 2019, 23:27 »

1) Es posible Detectar que proceso hace una llamada por ejemplo al Kernel32.dll y que llamada esta haciendo por ejemplo VirtualProtectEx?

« Última modificación: 1 Agosto 2020, 20:05 por **Aincrad** » En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Detectar Proceso Padre (VB.net)
« Respuesta #3 en: 16 Marzo 2019, 00:10 »

1) Es posible Detectar que proceso hace una llamada por ejemplo al Kernel32.dll y que llamada esta haciendo por ejemplo VirtualProtectEx?

Sí, mediante API hooking puedes averiguar que proceso realiza una llamada a una función específica, en este caso VirtualProtectEx. Es un tema algo complejo que requiere cierto entendimiento y documentación. No soy ningún experto en el tema, pero aquí tienes un ejemplo que publiqué para interceptar las llamadas a la función CreateProcess mediante la librería comercial Deviare Api Hook (https://www.nektra.com/products/deviare-api-hook-windows/):

( el proceso que realizó la llamada a la función CreateProcess se especifica en el parámetro proc del método OnCreateProcess_Called )

Otro ejemplo algo más corto:



Que tan rápido seria si uso esta class tuya?  

Bueno, primero que nada y para evitar posibles confusiones, imagino que ya te habrás dado cuenta de que ese código es para obtener los procesos hijo, no el proceso padre, y como puedes comprobar por ti mismo ese algoritmo está basado en el uso de WMI, así que será tan rápido como lo que tarde la infraestructura WMI en devolver la respuesta a la petición o query enviada.

Al utilizar querys complejas, WMI puede llegar a demorarse 1 segundo o más en devolver la respuesta, pero en términos generales WMI siempre resultará una solución efectiva, aunque debido a la naturaleza de su intervalo resultará más lento que llamar directamente a las funciones de la API de Windows que puedan reproducir lo mismo que pretendas realizar con WMI.

Mi consejo: a menos que pretendas desarrollar un administrador de tareas o aplicación similar donde el rendimiento/tasa de actualización sea una prioridad máxima, entonces usa WMI y no le des más vueltas, es facil y efectivo.

Saludos.
« Última modificación: 16 Marzo 2019, 00:19 por Eleкtro » En línea


**Aincrad**


Desconectado Desconectado

Mensajes: 506



Ver Perfil
Re: Detectar Proceso Padre (VB.net)
« Respuesta #4 en: 17 Marzo 2019, 19:24 »

Gracias, Funciona perfecto.  gracias. Ahora me pondre con lo de Interceptar llamadas.

Código
  1. Public Shared Sub ProcesoPadre()
  2.        Try
  3.  
  4.            Dim myId = Process.GetCurrentProcess().Id
  5.            Dim query = String.Format("SELECT ParentProcessId FROM Win32_Process WHERE ProcessId = {0}", myId)
  6.            Dim search = New ManagementObjectSearcher("root\CIMV2", query)
  7.            Dim results = search.[Get]().GetEnumerator()
  8.            results.MoveNext()
  9.            Dim queryObj = results.Current
  10.            Dim parentId = CUInt(queryObj("ParentProcessId"))
  11.            Dim parent = Process.GetProcessById(CInt(parentId))
  12.            MsgBox(parent.ProcessName)
  13.        Catch ex As Exception
  14.            MsgBox(ex.Message)
  15.        End Try
  16.  
  17.    End Sub



Sabes alguna Forma de Hacer un Blucle Asyncoronico, que siempre se mantenga activo aunque oculte el Form (me.hide) ?

Actualmente estoy usando un BackgroundWorker Con un Bucle. pero no se si hay alguna otra manera de hacerlo.

Esto es lo que estoy usando actualmente :

Código
  1. Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  2.        For i As Integer = 0 To 2
  3.                   'aca lo q quiero q haga siempre mientra la app este en ejecución.
  4.             i -= 1
  5.        Next
  6.    End Sub
En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Detectar Proceso Padre (VB.net)
« Respuesta #5 en: 17 Marzo 2019, 20:42 »

Puedes usar la clase Task, por ejemplo...

Código
  1. Dim act As New Action(
  2.    Sub()
  3.        Do While True
  4.            Console.WriteLine("Hello World")
  5.            Thread.Sleep(1000)
  6.        Loop
  7.    End Sub)
  8.  
  9. Dim tsk As New Task(act, TaskCreationOptions.LongRunning)
  10. tsk.Start()

Saludos.
En línea


**Aincrad**


Desconectado Desconectado

Mensajes: 506



Ver Perfil
Re: Detectar Proceso Padre (VB.net)
« Respuesta #6 en: 17 Marzo 2019, 20:56 »

Funciona Perfecto.   ;-)  ;-) .

Muchísimas gracias.
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines