GetLogicalDriveStringsA和GetDriveTypeA

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		// 文件系统名称缓冲区大小
);

返回值:检索失败则返回值为零,检索成功返回值非零。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值