Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Lista procesos de forma nativa con NtQuerySystemInformation

  • 5 Respuestas
  • 5638 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« en: Mayo 29, 2013, 05:35:07 pm »
Código: ASM
  1. ; // Lista Procesos de forma nativa con la API  NtQuerySystemInformation
  2. ; // Escrito por Juan fary (mDrinky)
  3. ; // Ensamblador: Flat Assembler
  4.  
  5. include 'win32ax.inc'
  6. entry start
  7.  
  8. .data
  9.         Buffer                  dd 0
  10.         len                     dd 0
  11.         nBytes                  dd ?
  12.  
  13. .code
  14. start:
  15.         add [len],0x1000
  16.  
  17.         cinvoke realloc,[Buffer],[len]
  18.         mov [Buffer],eax
  19.  
  20.         invoke NtQuerySystemInformation,5,[Buffer],[len],addr nBytes
  21.  
  22.         cmp eax,0xC0000004
  23.         je start
  24.  
  25.         ListarProcesos:
  26.  
  27.         mov eax,[Buffer]
  28.         mov eax,[eax+0x3C] ; Nombre del proceso
  29.         ;mov eax,[eax+0x44]   ; ID del proceso
  30.  
  31.         test eax,eax
  32.         je SiguienteProceso
  33.  
  34.         push eax
  35.         invoke MessageBoxW,0,eax,0,0
  36.         pop eax
  37.  
  38.         mov eax,[Buffer]   ; puntero a estructura
  39.         mov eax,[eax]      ; Distancia que habria que recorrer hasta la siguiente estructura
  40.  
  41.         cmp eax,0          ; Si es 0 no hay mas estructuras
  42.         je salir
  43.  
  44.         SiguienteProceso:
  45.  
  46.         mov eax,[Buffer]
  47.  
  48.         mov edx,eax    ; Puntero a estructura en EDX
  49.         mov eax,[eax]  ; EAX =  NextEntryDelta
  50.         add edx,eax    ; Sumamos la distancia de la siguiente estructura
  51.  
  52.         mov [Buffer],edx ; Siguiente Estructura
  53.  
  54.         jmp ListarProcesos
  55.  
  56.         salir:
  57.  
  58.         ret
  59.  
  60. section '.idata' data readable import
  61.  
  62.         library msvcrt,'msvcrt.dll',\
  63.                 NTDLL,'NTDLL.DLL',\
  64.                 USER32,'USER32.DLL'
  65.  
  66.         import msvcrt,\
  67.                realloc,'realloc'
  68.  
  69.         import NTDLL,\
  70.                NtQuerySystemInformation,'NtQuerySystemInformation'
  71.  
  72.         import USER32,\
  73.                MessageBoxW,'MessageBoxW'  

Me costo crear el código ya que hay poca documentación y mucha de la que hay es erronea, asique tuve que debuguear la API en un proceso externo y ver finalmente como eran las estructuras y en que posición estaba el ID del proceso y el nombre.

un saludo!

Desconectado Expermicid

  • *
  • Underc0der
  • Mensajes: 457
  • Actividad:
    0%
  • Reputación 0
  • _-Expermicid-_
    • Ver Perfil
  • Skype: expermicid.xd
« Respuesta #1 en: Mayo 29, 2013, 07:12:03 pm »
Gran codigo mDrinky :)

Gracias, Saludos.

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #2 en: Mayo 30, 2013, 10:28:01 am »
Dejo la estructura Correcta, en C (El código de las estructuras no es mio lo saque de por ahí.)

Código: C
  1.     typedef struct {
  2.     USHORT Length;
  3.     USHORT MaxLen;
  4.     USHORT *Buffer;
  5.     }UNICODE_STRING;
  6.  
  7.     struct process_info {
  8.     ULONG NextEntryDelta;
  9.     ULONG ThreadCount;
  10.     ULONG Reserved1[6];
  11.     LARGE_INTEGER CreateTime;
  12.     LARGE_INTEGER UserTime;
  13.     LARGE_INTEGER KernelTime;
  14.     UNICODE_STRING ProcessName;
  15.     ULONG BasePriority;
  16.     ULONG ProcessId;
  17.     };

un saludo!

Desconectado 79137913

« Respuesta #3 en: Mayo 30, 2013, 01:05:20 pm »
HOLA!!!

Felicitaciones Lo LOGRASTE!

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scout Team*                                                   DOORS.PARTY

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #4 en: Mayo 30, 2013, 02:16:00 pm »
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Danyfirex

  • *
  • Underc0der
  • Mensajes: 22
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #5 en: Mayo 30, 2013, 04:48:25 pm »
Gracias  mDrinky muy bonito código a estudiar un ratito  ;D

 

¿Te gustó el post? COMPARTILO!