我向您展示一个小型 WinAPI 源代码的集合。如果您有任何建议或发现代码中的错误,请随时私信我。
目录
- Dll 注入
- 获取磁盘大小
- 驱动器盘符更改器
- 将文件扩展名与程序关联
- NtQuerySystemInformation
DLL 注入示例
演示如何将 DLL 注入到进程中。项目包括一个简单的 DLL 和一个用于测试的 HelloWorld 应用程序。
下载 (CodeBlocks 项目)
获取磁盘大小
这个简单的应用程序演示了如何使用 DeviceIOControl() 和 IOCTL_DISK_GET_LENGTH_INFO 来获取磁盘或分区大小。
如果您不需要一个完全可用的应用程序,可以使用此函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
//
// GetDisk or or partition size
// dsk can be \\\\.\\PhysicalDrive0 or \\\\.\\C:
//
uint64_t GetDiskLengthIoctl(const char *dsk)
{
HANDLE hDisk=CreateFile(dsk,GENERIC_READ,FILE_SHARE_VALID_FLAGS,0,OPEN_EXISTING,0,0);
if(hDisk==INVALID_HANDLE_VALUE)
{
cerr<<"Could not open the disk. GetLastError() returned "<<GetLastError()<<endl;
return 0;
}
GET_LENGTH_INFORMATION gli;
DWORD ret;
DeviceIoControl(hDisk,IOCTL_DISK_GET_LENGTH_INFO,0,0,&gli,sizeof(gli),&ret,0);
CloseHandle(hDisk);
return gli.Length.QuadPart;
}
|
下载 (CodeBlocks 项目)
驱动器盘符更改器
一个简单的程序,演示了如何使用 SetVolumeMountPoint 更改驱动器盘符
下载 (CodeBlocks 项目)
将文件扩展名与程序关联
下载 (CodeBlocks 项目)
NtQuerySystemInformation 示例
.zip 文件包含三个独立的项目,演示了如何使用 NtQuerySystemInformation() 函数来...
- 获取所有正在运行的进程的列表
- 显示有关物理内存的一些信息(页面大小,物理页面数)和处理器数量
- 显示磁盘、串口、光驱的数量
下载 (CodeBlocks 项目)
附件: [CodeInject.zip] [drive_letter_changer.zip] [ext_assoc.zip] [get_disk_size.zip] [nt_query_system_information.zip]