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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Listar procesos y rutas en ListBox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Listar procesos y rutas en ListBox  (Leído 2,976 veces)
dust564

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Listar procesos y rutas en ListBox
« en: 6 Junio 2015, 23:54 pm »

Se me ha ocurrido una idea, pero buscando en internet solo he encontrado información aplicable a versiones bastante antiguas de visual basic o código inservible.

Idea:
Al activarse un evento (pulsar un botón o por el tiempo de un timer, por ejemplo) el programa carga en un ListBox la ruta de todos los archivos en ejecución. Luego genera un hash de cada archivo y busca si el hash existe en otro ListBox. Si existe, cierra el proceso.

Es decir, que compruebe si un ejecutable está en una "lista negra"

Lo que no se hacer:
-> Listar los procesos y sus rutas en un ListBox

--
Salu2


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: Listar procesos y rutas en ListBox
« Respuesta #1 en: 7 Junio 2015, 02:29 am »

¿Estás compilando la app bajo x86, x64, o neutral?.

¿Alguna limitación en la versión objetivo de .Net framework? (-LINQ)

¿C#, Vb.Net, o cualquiera de los dos?, no somos adivinos.

Puedes utilizar la Class "Process":

Código
  1. Dim blacklisted As IEnumerable(Of String) =
  2.    {
  3.        "audiodg",
  4.        "csrss",
  5.        "Idle",
  6.        "services",
  7.        "smss",
  8.        "System"
  9.    }
  10.  
  11. Dim processes As IEnumerable(Of Process) =
  12.    System.Diagnostics.Process.GetProcesses
  13.  
  14. Dim pNames As IEnumerable(Of String) =
  15.    From p As Process In processes
  16.    Where Not blacklisted.Contains(p.ProcessName)
  17.    Order By p.ProcessName Ascending
  18.    Select String.Format("{0}.exe", p.ProcessName).ToLower
  19.    Distinct
  20.  
  21. Dim pPaths As IEnumerable(Of String) =
  22.    From p As Process In processes
  23.    Where Not blacklisted.Contains(p.ProcessName)
  24.    Order By p.MainModule.FileName Ascending
  25.    Select p.MainModule.FileName.ToLower
  26.    Distinct
  27.  
  28. ListBox1.Items.AddRange(pPaths.ToArray)

Y, si estás desarrollando la app para arquitectura x86, para comunicarte con los procesos x64 puedes realizar una consulta a WMI (Windows Management Instrumentation):

Win32_Process class (Windows) - MSDN

Código
  1. Public Shared Function GetProcesses() As ManagementObjectCollection
  2.  
  3.    Using searcher As New ManagementObjectSearcher(queryString:="SELECT * FROM Win32_Process")
  4.  
  5.        Return searcher.Get
  6.  
  7.    End Using
  8.  
  9. End Function
  10.  
  11. Dim processes As ManagementObjectCollection =
  12.    GetProcesses()
  13.  
  14. Dim pNames As IEnumerable(Of String) =
  15.    From mo As ManagementObject In processes.Cast(Of ManagementObject)()
  16.    Order By DirectCast(mo.Properties("Name").Value, String) Ascending
  17.    Select DirectCast(mo.Properties("Name").Value, String).ToLower
  18.    Distinct
  19.  
  20. Dim pPaths As IEnumerable(Of String) =
  21.    From mo As ManagementObject In processes.Cast(Of ManagementObject)()
  22.    Where Not mo.Properties("ExecutablePath").Value Is Nothing
  23.    Order By DirectCast(mo.Properties("ExecutablePath").Value, String).ToLower Ascending
  24.    Select DirectCast(mo.Properties("ExecutablePath").Value, String).ToLower
  25.    Distinct
  26.  
  27. ListBox1.Items.AddRange(pPaths.ToArray)

Nota: Recuerda que la Class "ManagementObjectCollection" es Disposable.

También puedes utilizar las funciones de la API de Windows:
Process Walking - MSDN
PSAPI Functions - MSDN

(de esto no pongo un ejemplo ya que no tengo ...pero por Google debe haber; y elaborarlo me costaría el esfuerzo de escribir aproximadamente +1.000 lineas de P/Invoking)

Saludos!


« Última modificación: 7 Junio 2015, 02:45 am por Eleкtro » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Listar procesos y rutas en ListBox
« Respuesta #2 en: 7 Junio 2015, 07:58 am »

Hola como estan se que no es mi hilo pero queria hacer unas pregunta en estas partes.

Este trozo de codigo  son los procesos que no deberian ejecutarse y en caso que desee mostrar todos los procesos deberia de agregarlos al array?
Código
  1. Dim blacklisted As IEnumerable(Of String) =
  2.    {
  3.        "audiodg",
  4.        "csrss",
  5.        "Idle",
  6.        "services",
  7.        "smss",
  8.        "System"
  9.    }
  10.  

y esta parte por que solo muestra la ruta del  proceso pero no el nombre o la ruta ya contiene el nombre del proceso? por que declara pNames.

Código
  1. ListBox1.Items.AddRange(pPaths.ToArray)

Ya que me dice lo siquiente



Saludos.

Pd: Disculpas por comentar pero tengo esas peque~nas curiosidades



Hola gracias por responder las dudas.

Leere un poco mas las clase process para poder manejar, efectivamente cambien los procesos de la lista lo probe tanto con listview como con listbox cambie algunas cositas, y ya muestra su ruta.

Muchas gracias : )

Saludos.
« Última modificación: 7 Junio 2015, 20:52 pm por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: Listar procesos y rutas en ListBox
« Respuesta #3 en: 7 Junio 2015, 09:43 am »

Este trozo de codigo  son los procesos que no deberian ejecutarse y en caso que desee mostrar todos los procesos deberia de agregarlos al array?
Código
  1. Dim blacklisted As IEnumerable(Of String) =
  2.    {
  3.        "audiodg",
  4.        "csrss",
  5.        "Idle",
  6.        "services",
  7.        "smss",
  8.        "System"
  9.    }
  10.  

Son los procesos de la lista negra, procesos excluidos de la query de LINQ.

Idle y System son pseudo-procesos (y por lo tanto, daría error la query al intentar obtener una ruta que no existe), y los otros son procesos protegidos.

De todas formas ten en cuenta que lo que escribí es un ejemplo básico que se puede extender para adaptarlo a "X" necesidades, si quieres hacer una buena réplica entonces deberías mostrar lo mismo que muestra el administrador de tareas de Windows.



y esta parte por que solo muestra la ruta del  proceso pero no el nombre o la ruta ya contiene el nombre del proceso? por que declara pNames.

Obviamente la ruta del archivo contiene el nombre del archivo.

¿Por qué declaré pNames y pPaths por separado?, para mostrar dos ejemplos distintos, uno para obtener solo el nombre, y el otro para obtener la ruta completa.



Código
  1. ListBox1.Items.AddRange(pPaths.ToArray)

me dice lo siquiente


Fíjate bien, estás utilizando un ListView, no un ListBox.

Debes pasarle cómo argumento un array de ListViewItem, o un ListViewItemcollection:

Código
  1. With ListView1
  2.  
  3.    .View = View.Details
  4.    .Columns.Add("ExecutablePath")
  5.    .Items.AddRange((From path As String In pPaths Select New ListViewItem({path})).ToArray)
  6.  
  7. End With

Saludos!
« Última modificación: 7 Junio 2015, 09:47 am por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Listar todos los archivos de una Web en un Listbox
Programación Visual Basic
Hendrix 0 1,323 Último mensaje 14 Marzo 2006, 18:00 pm
por Hendrix
Listar todos los archivos de una Web en un Listbox
Programación Visual Basic
Hendrix 5 2,375 Último mensaje 15 Marzo 2006, 16:52 pm
por Hendrix
Listar procesos y realizar cosas con los procesos
Programación Visual Basic
sebas369 2 3,189 Último mensaje 14 Julio 2006, 16:08 pm
por sebas369
[VB.NET] Listar procesos activos en un Listbox.
.NET (C#, VB.NET, ASP)
kub0x 2 4,844 Último mensaje 26 Agosto 2011, 04:09 am
por kub0x
Listar Procesos
Programación Visual Basic
calk9 4 2,623 Último mensaje 20 Diciembre 2011, 00:52 am
por calk9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines