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 C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Obtener todos los procesos activos y los servicios que están usando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener todos los procesos activos y los servicios que están usando  (Leído 7,722 veces)
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #10 en: 24 Septiembre 2013, 18:17 pm »

Hola Eternal retomando este tema tengo una consulta sabes si hay alguna manera de saber el nombre del dll que usa un servicio determinado, no he podido encontrar nada referente a esto por ejemplo para el svchost.exe este utiliza diversos servicios digamos el SessionEnv tenemos el nombre del servicio y el display name pero para saber el dll asociado a este servicio que para este servicio sería sessenv.dll hay alguna función que me permita saber el dll de este servicio?



En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #11 en: 24 Septiembre 2013, 18:49 pm »

No se, tal vez haya una funcion en la API de Windows, fijate:
Service Reference

Sino de acuerdo a:
http://en.wikipedia.org/wiki/Svchost

Services run in SvcHost are implemented as dynamically-linked libraries (DLLs). Such service's registry key must have a value named ServiceDll under the Parameters subkey, pointing to the respective service's DLL file.


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
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #12 en: 4 Octubre 2013, 23:15 pm »

Hola Eternal Idol otra vez retomando el tema pues buscando en la documentación MSDN hay una función que sirve para mi cometido pero al ejecutar la función esta falla y no he podido encontrar donde está el error, se compila bien y todo pero no devuelve nada pongo el código si me haces el favor de darle una revisión puedas ver que he hecho mal.

Código
  1. hscManager = OpenSCManager(0, 0, SC_MANAGER_ENUMERATE_SERVICE);
  2.  
  3. while( EnumServicesStatusEx( hscManager, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, service, bufSize,
  4. &bufSize, &numOfService, 0, 0) == 0 )
  5. delete [] service, service = new BYTE[bufSize *= 2];
  6.  
  7. LPENUM_SERVICE_STATUS_PROCESS services = (LPENUM_SERVICE_STATUS_PROCESS) service;
  8.  
  9. for(int i = 0; i < numOfService; i++){
  10.  
  11. val.pid = services->ServiceStatusProcess.dwProcessId;
  12. CopyString(services->lpServiceName, val.service, MAX_PATH);
  13.  
  14. GetServiceDisplayName (hscManager, services->lpServiceName, NULL, &buffer);
  15. if (buffer)
  16. {
  17. lpDisplayName = new TCHAR[buffer +1];
  18. ZeroMemory (lpDisplayName, buffer + 1);
  19.  
  20.  
  21. if (GetServiceDisplayName (hscManager, services->lpServiceName, lpDisplayName, &buffer))
  22. {
  23. CopyString (lpDisplayName, displayName, MAX_PATH);
  24. }
  25. }
  26.  
  27. services++;
  28.  
  29. initialRunxes->push_back(val);
  30. }

el problema es en la función GetServiceDisplayName que no me devuelve el valor de lpDisplayName nunca entra en el If lo que significa que esta fallando la función no se si he definido mal los parámetros o que pasa.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #13 en: 4 Octubre 2013, 23:43 pm »

De base no tenes ninguna necesidad de hacer esto, en services->lpDisplayName ya tenes lo que buscas. En cuanto al problema en si tal vez se deba a que buffer no es 0 en el momento de la primera llamada, depuralo, fijate que devuelven las funciones y si no es el resultado correcto mira GetLastError.
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
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #14 en: 4 Octubre 2013, 23:45 pm »

lo que sucede que lpDisplayName de la función GetServiceDisplayName me devuelve el path del servicio pero le concatena el nombre de la dll según la documentación
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #15 en: 5 Octubre 2013, 00:02 am »

Supongo que lo diras por esto:
This parameter can specify a localized string using the following format:


En fin, en mi Windows 7 x64 TODOS los servicios tienen exactamente el mismo resultado llamando a GetServiceDisplayName o a EnumServicesStatusEx. Igual fijate que buffer tenga valor 0 siempre que llames para averiguar el tamaño ...
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
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Obtener todos los procesos activos y los servicios que están usando
« Respuesta #16 en: 7 Octubre 2013, 18:11 pm »

Ya lo solucione el problema estaba que no aumentaba en 1 el tamaño del buffer para el parámetro sólo en la asignación de lpDisplay pero bueno lo malo es que está función no me da el valor esperado tal como lo dijiste retorna el mismo valor que EnumServicesStatusEx  :-\
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Donde mirar en Procesos Activos?
Análisis y Diseño de Malware
Edu 3 4,147 Último mensaje 12 Septiembre 2010, 21:24 pm
por Edu
[Solucionado] Obtener la ruta de todos los procesos en ejecución « 1 2 3 »
.NET (C#, VB.NET, ASP)
Segurida 23 18,451 Último mensaje 30 Mayo 2011, 00:32 am
por seba123neo
[VB.NET] Listar procesos activos en un Listbox.
.NET (C#, VB.NET, ASP)
kub0x 2 5,120 Último mensaje 26 Agosto 2011, 04:09 am
por kub0x
Problema con procesos activos
Foro Libre
Almapa 7 3,247 Último mensaje 22 Marzo 2013, 00:33 am
por $Edu$
Darknet, un promedio de 900 recursos en línea están activos en TOR diariamente
Noticias
wolfbcn 0 1,235 Último mensaje 14 Marzo 2014, 01:42 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines