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 ::)
Actualizado!
Le he añadido NtGetDriveType...Y la estructura, para que quede mas claro lo que hace :-\
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
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
La verdad es que tus códigos son buenísimos.
Y gracias por compartirlo ;)
Muy buen condigo...
Gracias por compartirlo :)
Bueno código, seguro que las nativas son menos detectadas :).
Saludos
PD: Hazlo en C capullo :xD.
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 ;)
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
Gracias por el apoyo XcryptOR :)