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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Averiguar proceso de un archivo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Averiguar proceso de un archivo.  (Leído 6,662 veces)
Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #10 en: 26 Octubre 2007, 23:51 pm »

En ese caso podes recurrir a Module32First (el primer modulo siempre es el ejecutable) y el campo szExePath de la estructura MODULEENTRY32. Sino tambien GetModuleFileNameEx ...


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #11 en: 27 Octubre 2007, 00:04 am »

Disculpame, podrias aclararme bien como hacelo...?

Espero que no sea una molestia :(


En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #12 en: 27 Octubre 2007, 00:07 am »

Disculpame, podrias aclararme bien como hacelo...?

Espero que no sea una molestia :(

La primera forma es exactamente igual que Process* solo que mas simple, no necesitas enumerar todos los modulos, el que te interesa es el primero.

Para la segunda necesitas abrir un HANDLE al proceso (OpenProcess) y despues pasarle a GetModuleFileNameEx ese handle como primer parametro, cero como segundo, un puntero a cadena como tercero y el tamaño de la misma como cuarto y ultimo.

Hace muchos años que no programo en VB asi que te doy una descripcion teorica, para la primera forma te podes guiar con el codigo que esta arriba, sigue la misma logica.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #13 en: 27 Octubre 2007, 00:15 am »

De este tipo de Apis no se mucho, no entiendo como obtener el Handle. :( :( :(
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #14 en: 27 Octubre 2007, 00:19 am »

De este tipo de Apis no se mucho, no entiendo como obtener el Handle. :( :( :(

Si usas Module32First no necesitas ningun HANDLE.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #15 en: 27 Octubre 2007, 00:29 am »

Encontre este codigo, pero no me da la ruta completa:
Código:
Private Type MODULEENTRY32
  dwSize As Long
  th32ModuleID As Long
  th32ProcessID As Long
  GlblcntUsage As Long
  ProccntUsage As Long
  modBaseAddr As Long
  modBaseSize As Long
  hModule As Long
  szModule As String * 256
  szExePath As String * 260
End Type
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long
Private Sub Form_Load()
Dim uProcess As MODULEENTRY32
Form1.AutoRedraw = True
lProcessID = GetCurrentProcessId
hSnapshot = CreateToolhelp32Snapshot(8, 0)
uProcess.dwSize = Len(uProcess)
n = Module32First(hSnapshot, uProcess)
Do While n
Form1.Print Left(uProcess.szModule, InStr(uProcess.szModule, Chr(0)) - 1)
n = Module32Next(hSnapshot, uProcess)
Loop
End Sub
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #16 en: 27 Octubre 2007, 00:31 am »

Usa szExePath no szModule.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #17 en: 27 Octubre 2007, 00:34 am »

Gracias.

I love You..! xD
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #18 en: 27 Octubre 2007, 00:50 am »

Editado: Este es mi Código::
Código
  1. Private Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
  2. Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
  3. Private Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
  4. Private Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
  5. Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal Handle As Long) As Long
  6. Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
  7.  
  8. Private Sub Command1_Click()
  9. Dim Procesos() As Long, cb&, cb2&, cbNeeded&, Ret&, Proceso&, Modulos(1 To 200) As Long, Elementos&, NombrePath$
  10.  
  11. cb = 16
  12. cbNeeded = 96
  13. Do While cb <= cbNeeded
  14.    cb = cb * 2
  15.    ReDim Procesos(cb / 4)
  16.    EnumProcesses Procesos(1), cb, cbNeeded
  17. Loop
  18. Elementos = cbNeeded / 4
  19. For i = 1 To Elementos
  20. Proceso = OpenProcess(1024 Or 16, 0, Procesos(i))
  21. If Proceso <> 0 Then
  22.    Ret = EnumProcessModules(Proceso, Modulos(1), 200, cb2)
  23.    If Ret <> 0 Then
  24.        NombrePath = Space(260)
  25.        GetModuleFileNameExA Proceso, Modulos(1), NombrePath, 500
  26.        If Procesos(i) <> GetCurrentProcessId Then
  27.            NombrePath = Replace(Replace(NombrePath, "\systemroot\", "c:\windows\", , , vbTextCompare), "\??\", "")
  28.            Text1.Text = Text1.Text & vbCrLf & NombrePath
  29.            Text1.Text = Text1.Text & " - " & Procesos(i)
  30.        End If
  31.    End If
  32. End If
  33. CloseHandle Proceso
  34. Next
  35. End Sub
  36.  

Saludos!

Editado: Para que el código te quede bien funcional, minimamente tenes que usar las apis, EnumProcess, OpenProcess, EnumProcessModules y GetModuleFileNameExA, porque si quitas por ejemplo EnumProcessModules, en el text1.text algunas lineas quedarían vacias y el resultado sería pésimo.
« Última modificación: 27 Octubre 2007, 23:10 pm por HaDeS, - » En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #19 en: 27 Octubre 2007, 22:10 pm »

De nada ►Freeze, para la segunda forma no necesitas usar mas que OpenProcess y GetModuleFileNameEx con 0 como el segundo parametro, ya que como indica la documentacion:

hModule
[in] Handle to the module. If this parameter is NULL, GetModuleFileNameEx returns the path of the executable file of the process specified in hProcess.

Por cierto si necesitas trabajar con servicios habilita el privilegio SE_DEBUG_NAME primero.
« Última modificación: 28 Octubre 2007, 00:58 am por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA averiguar cuando se subio un archivo pdf
Dudas Generales
Buchi 1 19,681 Último mensaje 10 Marzo 2011, 20:49 pm
por el-brujo
PROCESO/ARCHIVO WINLOGON.EXE
Seguridad
JMM13 5 5,479 Último mensaje 1 Abril 2011, 02:37 am
por humberto22
el proceso no puede acceder al archivo.
.NET (C#, VB.NET, ASP)
Baldomero123 3 2,669 Último mensaje 21 Febrero 2024, 09:00 am
por elektrostudios2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines