Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Karcrack en 3 Septiembre 2010, 18:30 PM

Título: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Karcrack en 3 Septiembre 2010, 18:30 PM
Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : mProcessInformation
' Author    : Karcrack
' Now       : 26/08/2010 15:00
' Purpose   : Native Process Enumeration
' History   : 26/08/2010 First cut .........................................................
'---------------------------------------------------------------------------------------

Option Explicit
Option Base 0

Public Type PROCESS
    sName           As String
    lPID            As Long
End Type

'NTDLL
Private Declare Function NtQuerySystemInformation Lib "NTDLL" (ByVal SystemInformationClass As Long, ByRef SystemInformation As Any, ByVal SystemInformationLength As Long, ByRef ReturnLength As Long) As Long
Private Declare Sub RtlMoveMemory Lib "NTDLL" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Private Const SystemProcessesAndThreadsInformation  As Long = 5&
Private Const STATUS_INFO_LENGTH_MISMATCH           As Long = &HC0000004

Public Function RetrieveProcesses() As PROCESS()
    Dim bvSPI(17)           As Long 'As SYSTEM_PROCESS_INFORMATION
    Dim bvTmp()             As PROCESS
    Dim bvBuffer()          As Byte
    Dim cbBuffer            As Long
    Dim lRet                As Long
    Dim lPos                As Long
    Dim lSize               As Long

    ReDim bvTmp(0)
    cbBuffer = 1
    Do
        cbBuffer = cbBuffer * 2
        ReDim bvBuffer(cbBuffer)
        lRet = NtQuerySystemInformation(SystemProcessesAndThreadsInformation, bvBuffer(0), cbBuffer, lSize)
    Loop While lRet = STATUS_INFO_LENGTH_MISMATCH

    If lRet < 0 Then Exit Function

    lPos = VarPtr(bvBuffer(0))

    Do
        Call RtlMoveMemory(bvSPI(0), ByVal lPos, 18 * 4)
        With bvTmp(UBound(bvTmp))
            .lPID = bvSPI(17)
            .sName = ReadUStr(bvSPI(15))
        End With
        lPos = lPos + bvSPI(0)
        If bvSPI(0) = 0 Then Exit Do
        ReDim Preserve bvTmp(UBound(bvTmp) + 1)
    Loop

    RetrieveProcesses = bvTmp
    Erase bvBuffer
End Function

Private Function ReadUStr(ByVal lPtr As Long) As String
    Dim i                   As Long
    Dim uChar               As Integer

    If Not lPtr > 0 Then Exit Function
    i = lPtr
    Do
        Call RtlMoveMemory(uChar, ByVal i, &H2)
        If uChar = 0 Then Exit Do
        ReadUStr = ReadUStr & ChrW$(uChar)
        i = i + 2
    Loop
End Function

http://www.advancevb.com.ar/?p=589

Saludos ;)
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: _katze_ en 3 Septiembre 2010, 19:53 PM
loco muy bueno lo probe y funciona bn ! me sorprenden tus codes y como t manejas !
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: LeandroA en 4 Septiembre 2010, 04:46 AM
que cabeza  ;)  buena alternativa a la clasica.
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Karcrack en 4 Septiembre 2010, 04:48 AM
Me alegro que os haya gustado :)

Leandro, que le has dado de comer a ese gallo?  :laugh:
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: 79137913 en 4 Septiembre 2010, 05:38 AM
HOLA!!!

Sos una bestia KarCrack Te felicito.

GRACIAS POR LEER!!!
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Dessa en 5 Septiembre 2010, 15:14 PM
Hola , interesante (como siempre), una pregunta, solo para saber, ya no sirve hacerlo con Kernel32 (CreateToolhelp32Snapshot + Process32First + Process32Next) o esta es solo una alternativa ?

Saludos  ;)

Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Karcrack en 5 Septiembre 2010, 18:19 PM
Cita de: Dessa en  5 Septiembre 2010, 15:14 PM
Hola , interesante (como siempre), una pregunta, solo para saber, ya no sirve hacerlo con Kernel32 (CreateToolhelp32Snapshot + Process32First + Process32Next) o esta es solo una alternativa ?

Saludos  ;)


Es simplemente una alternativa, se pueda sacar muchisma mas informacion de esas estructuras, solo es un ejemplo este code... Yo lo utilizo por que no es detectado, en cambio los otros metodos si...
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Dessa en 7 Septiembre 2010, 03:46 AM
.
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Dessa en 8 Septiembre 2010, 22:16 PM
Bueno, ahora que quedó aclarado el tema,  y ya que está directamente relacionado con este hilo... alguien conoce un Windows-mensaje para detectar (via Hook) si se inició un nuevo  proceso o se cerró alguno existente ?

PD: no me sirve comparar cadenas , tiene que ser un mensaje, gracias y saludos


Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Karcrack en 9 Septiembre 2010, 12:47 PM
Cita de: Dessa en  8 Septiembre 2010, 22:16 PM
Bueno, ahora que quedó aclarado el tema, y ya que está directamente relacionado con este hilo... alguien conoce un Windows-mensaje para detectar (via Hook) si se inició un nuevo proceso o se cerró alguno existente ?

PD: no me sirve comparar cadenas , tiene que ser un mensaje, gracias y saludos
Desde UserMode? ... Se me ocurre que podrias recibir el mensaje de cuando se crea una ventana... pero claro, estamos dando por hecho que todos los procesos crearan ventanas... por si acaso mirate esto:
http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms644977(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms644991(v=VS.85).aspx


Y no puedes comparar PIDs??

EDITO:
http://blogs.technet.com/b/heyscriptingguy/archive/2006/10/04/how-can-i-monitor-for-the-creation-of-different-processes.aspx
Siempre puedes hacerlo con WMI... :-X
Título: Re: [NTDLL] SystemProcessesAndThreadsInformation
Publicado por: Dessa en 10 Septiembre 2010, 00:28 AM
Cita de: Karcrack en  9 Septiembre 2010, 12:47 PM

http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms644977(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms644991(v=VS.85).aspx



Gracias Karcrack, voy a probar si  sale con WH_SHELL.