GetLogicalDriveStringsA
获得所有驱动器根目录的字符串。
DWORD GetLogicalDriveStringsA(
[in] DWORD nBufferLength, // lpBuffer缓冲区的最大大小
[out] LPSTR lpBuffer // 缓冲区,用于接收根目录字符串
);
返回值是缓冲区字符串的长度。
GetDriveTypeA
获得磁盘驱动器的类型。
UINT GetDriveTypeA(
[in, optional] LPCSTR lpRootPathName // 磁盘驱动器的根目录,如"C:\"
);
返回值:
- DRIVE_UNKNOWN(0):无法确定驱动器类型
- DRIVE_NO_ROOT_DIR(1):根目录无效
- DRIVE_REMOVABLE(2):可移动驱动器,如软盘驱动器、拇指驱动器或闪存卡读卡器
- DRIVE_FIXED(3):硬盘驱动器或闪存驱动器
- DRIVE_REMOTE(4):远程驱动器(网络驱动器)
- DRIVE_CDROM(5):光盘驱动器
- DRIVE_RAMDISK(6):RAM磁盘
感染型病毒
常见用法:
CHAR Buffer[0x200] = { 0 };
PCHAR Travel = NULL;
UINT Type = 0;
GetLogicalDriveStringsA(0x200, Buffer); // Buffer = C:\.D:\.E:\.F:\.G:\.H:\.
for (Travel = Buffer; *Travel; Travel += strlen(Travel) + 1)
{
Type = GetDriveTypeA(Travel);
if (Type == DRIVE_FIXED || Type == DRIVE_REMOVABLE)
{
// 实施攻击
}
}
GetVolumeInformationA
获得与指定根目录关联的文件系统和卷的信息。
BOOL GetVolumeInformationA(
[in, optional] LPCSTR lpRootPathName, // 根目录
[out, optional] LPSTR lpVolumeNameBuffer, // 卷名称缓冲区
[in] DWORD nVolumeNameSize, // 卷名称缓冲区大小
[out, optional] LPDWORD lpVolumeSerialNumber, // 卷序列号
[out, optional] LPDWORD lpMaximumComponentLength, // 文件系统支持的文件名组件的最大长度
[out, optional] LPDWORD lpFileSystemFlags, // 文件系统关联的标志
[out, optional] LPSTR lpFileSystemNameBuffer, // 文件系统名称缓冲区
[in] DWORD nFileSystemNameSize // 文件系统名称缓冲区大小
);
返回值:检索失败则返回值为零,检索成功返回值非零。