Ir al contenido


Foto

kernel de windows


  • Por favor identifícate para responder
24 respuestas en este tema

#21 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 4.014 mensajes
  • LocationMadrid - España

Escrito 15 diciembre 2016 - 04:40

Enumerando los drivers del sistema

delphi
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8. System.SysUtils,
  9. WinApi.Windows,
  10. WinApi.WinSvc;
  11.  
  12. type
  13. PENUM_SERVICE_STATUS_PROCESS = ^ENUM_SERVICE_STATUS_PROCESS;
  14. PAENUM = ^AENUM;
  15. AENUM = array [0..0] of ENUM_SERVICE_STATUS_PROCESS;
  16.  
  17.  
  18. procedure EnumerateSrvDrv;
  19. var
  20. scManager: Integer;
  21. Status: PAENUM;
  22. pcbBytesNeeded: DWORD;
  23. lpServicesReturned: DWORD;
  24. i: integer;
  25.  
  26. begin;
  27. scManager := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE);
  28. if (scManager <> 0) then
  29. begin
  30. pcbBytesNeeded:= 0;
  31. EnumServicesStatusEx(scManager, SC_ENUM_PROCESS_INFO, SERVICE_KERNEL_DRIVER, SERVICE_STATE_ALL, nil, 0, @pcbBytesNeeded, @lpServicesReturned, nil, nil);
  32. GetMem(Status, pcbBytesNeeded);
  33. EnumServicesStatusEx(scManager, SC_ENUM_PROCESS_INFO, SERVICE_KERNEL_DRIVER, SERVICE_STATE_ALL, PBYTE(Status), pcbBytesNeeded, @pcbBytesNeeded, @lpServicesReturned, nil, nil);
  34. for i:= 0 to lpServicesReturned - 1 do
  35. begin
  36. System.Writeln(Status[i].lpServiceName);
  37. System.Writeln(Status[i].lpDisplayName);
  38. case Status[i].ServiceStatus.dwCurrentState of
  39. SERVICE_CONTINUE_PENDING: System.Writeln('About to continue');
  40. SERVICE_PAUSE_PENDING: System.Writeln('Pausing');
  41. SERVICE_PAUSED: System.Writeln('Paused');
  42. SERVICE_RUNNING: System.Writeln('Runing');
  43. SERVICE_START_PENDING: System.Writeln('Starting');
  44. SERVICE_STOP_PENDING: System.Writeln('Stoping');
  45. SERVICE_STOPPED: System.Writeln('Stoped');
  46. end;
  47. System.Writeln('.....................'+#10);
  48. end;
  49. ReadLn;
  50. FreeMem(Status);
  51. CloseServiceHandle(scManager);
  52. end;
  53. end;
  54.  
  55.  
  56. begin
  57. EnumerateSrvDrv;
  58. end.

Ejemplo de consola realizado con Berlin.


Saludos.
  • 1

#22 Dante

Dante

    Advanced Member

  • Miembros
  • PipPipPip
  • 89 mensajes

Escrito 16 diciembre 2016 - 08:12

El codigo de maravilla, el proble sigue siendo el maldito cheatengine, corri el codigo antes de instalar el cheat y tenia 279 servicios, y luego de instalarlo y estar trabajando con el segui teniendo 279 servicios, por lo q me da a entender q  para el trabajar no nesesita instalar el servicio, quisas lo use para las aplicaciones q en el se crean puedan trabajar, por lo q vuelvo al principio, ahahahhahahah como puedo detenerlo o detectarlo. 

PP: lo probe en una pc reistalada desde cero


  • 0

#23 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 4.014 mensajes
  • LocationMadrid - España

Escrito 16 diciembre 2016 - 09:16

El código de cheatengine está publicado. Compila y haz un debug hasta encontrar donde carga el diver.

 

Algunos diver actúan como un rootkit escondiendo los módulos cargados y al mismo diver. Analiza en el código del driver los posibles hook a la SSDT, hoocks con técnicas calback y acceso a la extructura PE según el S.O. en el que se cargue.

 

 

Saludos.


  • 0

#24 Dante

Dante

    Advanced Member

  • Miembros
  • PipPipPip
  • 89 mensajes

Escrito 16 diciembre 2016 - 09:59

en q fue compilado eso? el berlin no me sale el proyecto


  • 0

#25 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 4.014 mensajes
  • LocationMadrid - España

Escrito 16 diciembre 2016 - 12:40

en q fue compilado eso? el berlin no me sale el proyecto


Con Lazarus.
How to compile CE 6.2 beta 5 for very beginners.


Saludos.
  • 0