[NTDLL-NATIVE] Alternativa GetLogicalDrives y mas{NtQueryInformationProcess}

Iniciado por Karcrack, 9 Septiembre 2009, 23:00 PM

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

Karcrack

Código (vb) [Seleccionar]
Option Explicit
'---------------------------------------------------------------------------------------
' Module    : mNativeGetDrives
' Author    : Karcrack
' Date      : 09/09/2009
' Purpose   : Alternative to GetLogicalDrives/GetLogicalDriveStrings/GetDriveType
'               using NATIVE APIs!!!!
' Thanks    : SkyWeb -> Tester =P
' ChangeLog :
'           - First release                                             090909
'           - Improved, now with structure and added NtGetDriveType     100909
'---------------------------------------------------------------------------------------

'NTDLL
Private Declare Function NtQueryInformationProcess Lib "NTDLL" (ByVal hProcess As Long, ByVal ProcessInformationClass As Long, ProcessInformation As Any, ByVal ProcessInformationLength As Long, ReturnLength As Long) As Long

Private Type PROCESS_DEVICEMAP_INFORMATION
    DriveMap                As Long
    DriveType(1 To 32)      As Byte
End Type

Private Const ProcessDeviceMap = 23

Public Function NtGetLogicalDrives() As Long
    Dim tPDC                    As PROCESS_DEVICEMAP_INFORMATION
   
    If NtQueryInformationProcess(-1, ProcessDeviceMap, tPDC, Len(tPDC), ByVal 0&) = 0 Then
        NtGetLogicalDrives = tPDC.DriveMap
    End If
End Function

Public Function NtGetLogicalDrivesStrings() As String
    Dim lUnits                  As Long
    Dim i                       As Long
   
    lUnits = NtGetLogicalDrives
   
    For i = 0 To 25
        If lUnits And 2 ^ i Then
            NtGetLogicalDrivesStrings = NtGetLogicalDrivesStrings & Chr$(Asc("A") + i) & ":\" & Chr$(0)
        End If
    Next i
End Function

Public Function NtGetDriveType(ByVal nDrive As String) As Long
    Dim tPDC                    As PROCESS_DEVICEMAP_INFORMATION
    Dim lNumb                   As Long
   
    If NtQueryInformationProcess(-1, ProcessDeviceMap, tPDC, Len(tPDC), ByVal 0&) = 0 Then
        lNumb = Asc(Left$(UCase$(nDrive), 1)) - Asc("A")
        If Not lNumb > 31 Then
            NtGetDriveType = tPDC.DriveType(lNumb + 1)
        End If
    End If
End Function


Un ejemplo de uso aqui:
http://www.advancevb.com.ar/wp-content/2009/09/mNativeGetVersion.zip

Saludos ::)

Karcrack

Actualizado!

Le he añadido NtGetDriveType...Y la estructura, para que quede mas claro lo que hace :-\

fede_cp

muy buen post, como pregunto, tambien agradezco, ya que la mayoria de los topics, hay discución, un post realmente bueno hay que felicitar!

gracias karcrack

saludos
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

Karcrack

De nada fede_cp ;D

Es raro... apenas nadie ha posteado en este codigo (lo he posteado en mas foros), por lo visto estan ocupados :xD Se acaban las vacaciones :( :P

Aunque bueno, si no dicen nada me lo tomare como que no hay nada que mejorar :xD

Saludos :D

aaronduran2

La verdad es que tus códigos son buenísimos.

Y gracias por compartirlo ;)

agus0


[Zero]

Bueno código, seguro que las nativas son menos detectadas  :).

Saludos

PD: Hazlo en C capullo  :xD.

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Karcrack

Cita de: Hacker_Zero en 10 Septiembre 2009, 22:28 PM
PD: Hazlo en C capullo  :xD.
Hacerlo en C no supone ningun reto... :-\ Ademas, seguro que debe haber codigos similares a este ya en C... (Para drivers y tal...) en VB no encontraras mas que este ::)



Gracias a todos por responder ;)

XcryptOR

karkrack tu sabes que este tipo de codigo no tienen muchos comentarios pues para la mayoria de usuarios de este foro es muy avanzada, la gran mayoria se quedaron estancados en cosas relativas a infección por messenger o a troyanos, bueno y como dices en C no supone reto desde c se hace lo que a uno le venga en gana, pisando el terreno de VB es dificil y hay poca o ninguna documentación al respecto.

Ya lo habia visto en HH, y la verdad como todos tus trabajos con Apis nativas muy bueno, yo tambien me adentre en el terreno de las apis nativas y hay algunas que se prestan para cosas geniales, lastima que como no hay suficiente documentacion y tambien a mis limitados conocimientos en memoria desde VB, no he podido hacerlas trabajar.  ;D


ahhh un punto a favor es que conoces bien el asm y yo apenas lo basico, saludos man eres grande




Karcrack