• 【旧博文】需求与病毒


    随着开发平台的高级化智能化,程序员编写程序的门槛越来越低了。加上各个操作系统的API不断的完善,程序员很容易编写出与底层交互的程序。熊猫烧香,灰鸽子。。。,很多病毒都是使用高级语言编写的。另一方面,在用户需求上,也涉及到一些自动交互的底层应用。比如:U盘自动备份程序。

    在一个实际项目中,客户要求实现U盘的自动备份。起源是,现在U盘的使用已经十分普及,市面上的U盘品牌五花八门,其中的质量也良莠不齐,在享受U盘给我们带来的方便的同时,一些问题也随之而来,质量的不同性带来了稳定性的问题,在使用的时候,经常会丢失数据。用户的需求具体的过程是,当用户U盘插入到计算机时,自动将U盘的内容复制到本地磁盘上的某个目录中。

    这个功能的实现并不复杂。计算机系统的硬件发生变化时,系统会产生WM_DEVICECHANGE消息。

    WIN32下,在回调函数中截获消息。

    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)

    {

        switch (message)

        {

            case WM_DEVICECHANGE:   //硬件发生改变

            {

               DWORD wp = (DWORD)wParam; //保存硬件发生改变中产生的事件拦截。

               switch(wp)

               {

                 case DBT_DEVICEARRIVAL://硬件插入并可以使用

                 {

                    PDEV_BROADCAST_HDR pbh = reinterpret_cast<PDEV_BROADCAST_HDR>(lParam);

                    if (pbh->dbch_devicetype = DBT_DEVTYP_VOLUME)  //移动设备

                    {

                 PDEV_BROADCAST_VOLUME pbv = reinterpret_cast<PDEV_BROADCAST_VOLUME>(pbh);

                        DWORD unit = pbv->dbcv_unitmask;

                        int i=0; //当前盘符

                        while ( !(unit&1) )//循环找出最后一个盘的盘符

                        {

                            if (i == 25)

                            {

                               break;

                            }

                             i++;

                             unit >>= 1;

                          }

                          char *source = new char(10);

                          sprintf(source, "%c:\\", i+65);

                         copyFileToTag cf(source);  //构造一个以source为源地址的对象

                         if ( !cf.copy("C:\\11") ) //拷贝到C:\11目录下

                         {

                               MessageBox(hwnd, "拷贝失败", "", NULL);

                         }

                     }

               }

              break;

           }

      }

    // 其他操作

    }

    简单的一个WM_DEVICECHANGE消息就可以了。就这样,实现了客户的需求。但试想一下,加上进程隐藏,程序隐藏,热键处理俨然就变成了一个超级的后台备份器,然后呢,加上网络传播、自我复制就变成了病毒。

  • 相关阅读:
    许多其他C++的class样本
    cocos2d-x 3.2 它 2048 —— 第三
    hdu 4035 可能性DP 成都网络游戏
    OpenWrt 主的发展版本号trunk MT7620N 无线驱动程序bug
    [leetcode]Permutation Sequence
    Java Swing编程接口(30)---列表框:JList
    [创新工场]2014创新工场校园招聘回文字符串维修
    FFmpeg来源简单分析:结构会员管理系统-AVClass
    [Angular 2] Component relative paths
    [TypeScript] Reflection and Decorator Metadata
  • 原文地址:https://www.cnblogs.com/ldr123/p/2389605.html
Copyright © 2020-2023  润新知