Tu comunidad de Seguridad Informatica

Para ver Todo el contenido del foro es necesario estar Registrado!
Antes de comentar o Aportar es Obligado Leer Las: Reglas | Rules
Ya Esta Disponible al publico "LeProject" el Videojuego del Foro Click Aquí Para Ver el Post.
Pitbull Security Labs "Extras" Esta Disponible! [ENTRA]

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

avatar
Administrador
Administrador

Ver perfil de usuario
el Jue Ene 06, 2011 9:26 am
Trabajaba en mi RAT, mejorando el listado de procesos y decidí ponerle la ruta de los procesos.
Investigando un poco y con el conocimiento que tenia les traigo esta función, se debe de poner en un modulo.

Código:
Private Declare Function GetModuleFileNameEx Lib "PSAPI.DLL" Alias "GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
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

Private Const MAX_PATH            As Long = 260
Private Const PROCESS_ALL_ACCESS  As Long = &H1F0FFF


Private Function GetPathPID(pID As Long) As String
Dim lHandle As Long
Dim lEpID As Long
Dim lModule(250) As Long
Dim lByNeed As Long
Dim sPrName As String
Dim lSize As Long

lHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pID)

If lHandle = 0 Then Exit Function
lEpID = EnumProcessModules(lHandle, lModule(1), MAX_PATH, lByNeed)

If lEpID = 0 Then Exit Function
sPrName = Space(MAX_PATH)
lSize = MAX_PATH

lEpID = GetModuleFileNameEx(lHandle, lModule(1), sPrName, lSize)
sPrName = Trim(Left(sPrName, lEpID))

lEpID = CloseHandle(lHandle)

GetPathPID = sPrName
End Function

Les explico un poco como lo hace:
[+]La API, GetModuleFileNameEx lo que hace es obtener la ruta, apartir de un handle del proceso y un modulo.
[+]la API, OpenProcess devuelve el handle a partir del pID del proceso(Process ID), se puede especificar apartir de demás APIs.
[+]La API, CloseHandle cierra el handle que hemos usado.
[+]La API, EnumProcessModules devuelve un array de los modulos del proceso.
[+]La constante, PROCESS_ALL_ACCESS sirve para tener acceso al proceso y asi la API devuelve el handle del proceso
[+]La constante, MAX_PATH una constante para minimizar el uso de numero xD.

Solo necesitan especificar el pID del proceso y les devolverá la ruta

Saludos!
xNeoDarkx

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.