comment
IRC Chat
play_arrow
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
  • 3152 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. ; // drinky.94@hotmail.com
  4. ; // Ensamblador: Flat Assembler
  5.  
  6. include 'win32ax.inc'
  7. entry start
  8.  
  9. .data
  10.         Buffer                  dd 0
  11.         len                     dd 0
  12.         nBytes                  dd ?
  13.  
  14. .code
  15. start:
  16.         add [len],0x1000
  17.  
  18.         cinvoke realloc,[Buffer],[len]
  19.         mov [Buffer],eax
  20.  
  21.         invoke NtQuerySystemInformation,5,[Buffer],[len],addr nBytes
  22.  
  23.         cmp eax,0xC0000004
  24.         je start
  25.  
  26.         ListarProcesos:
  27.  
  28.         mov eax,[Buffer]
  29.         mov eax,[eax+0x3C] ; Nombre del proceso
  30.         ;mov eax,[eax+0x44]   ; ID del proceso
  31.  
  32.         test eax,eax
  33.         je SiguienteProceso
  34.  
  35.         push eax
  36.         invoke MessageBoxW,0,eax,0,0
  37.         pop eax
  38.  
  39.         mov eax,[Buffer]   ; puntero a estructura
  40.         mov eax,[eax]      ; Distancia que habria que recorrer hasta la siguiente estructura
  41.  
  42.         cmp eax,0          ; Si es 0 no hay mas estructuras
  43.         je salir
  44.  
  45.         SiguienteProceso:
  46.  
  47.         mov eax,[Buffer]
  48.  
  49.         mov edx,eax    ; Puntero a estructura en EDX
  50.         mov eax,[eax]  ; EAX =  NextEntryDelta
  51.         add edx,eax    ; Sumamos la distancia de la siguiente estructura
  52.  
  53.         mov [Buffer],edx ; Siguiente Estructura
  54.  
  55.         jmp ListarProcesos
  56.  
  57.         salir:
  58.  
  59.         ret
  60.  
  61. section '.idata' data readable import
  62.  
  63.         library msvcrt,'msvcrt.dll',\
  64.                 NTDLL,'NTDLL.DLL',\
  65.                 USER32,'USER32.DLL'
  66.  
  67.         import msvcrt,\
  68.                realloc,'realloc'
  69.  
  70.         import NTDLL,\
  71.                NtQuerySystemInformation,'NtQuerySystemInformation'
  72.  
  73.         import USER32,\
  74.                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

  • *
  • Co Admin
  • Mensajes: 631
  • Actividad:
    6.67%
  • Reputación 11
  • 4 Esquinas
    • Ver Perfil
    • Doors.Party
    • Email
  • Skype: fg_mdq@hotmail.com
« 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*                                                   No tienes permisos para ver links. Registrate o Entra con tu cuenta

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 »
Aquí está el código en VB6 por si a alguien le interesa ;D
No tienes permisos para ver links. Registrate o Entra con tu cuenta
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!