zoukankan      html  css  js  c++  java
  • 给自己的软件添加后门

    软件彩蛋我想大家都应该听说过。经典的比如在Excel得某个单元隔里面OOXX就可以获得一个赛车游戏之类。这是一种软件彩蛋,纯属娱乐。但是更多的“彩蛋”被用作软件后门。比如我们提供给客户一个软件,通常是看不到某些调试用的窗口和工具的;当我们被要求给客户提供现场技术支持的时候,我们往往希望通过某种隐秘的手段来开启这些条使用的工具和窗口,这就是后门。这类后门中又以按键后门最为常见,下面我们就利用一个已有的第三方函数库Utilities.dll来构建一个后门系统。 

    首先新建一个工程,然后完成对第三方库Utilities的引用。 

    然后开打Form1的代码编辑窗口,在窗体类中添加一个 后门类KeyboardIncantationMonitor 
    -C#
    private KeyboardIncantationMonitor m_KeyBackDoor = new KeyboardIncantationMonitor(); 

    新建一个私有成员函数,并添加两个后门 
    -C#
    private void AddBackDoor()
    {
        //! 第一个后门
        do
        {
            //! 申请一个后门暗号
            KeyboardIncantationMonitor.KeysIncantation tInc = m_KeyBackDoor.NewIncantation() as KeyboardIncantationMonitor.KeysIncantation;

            //! 初始化这个暗号为:依次按下 <Esc>HELLO<Enter>
            tInc.AddKey(Keys.Escape);
            tInc.AddKey(Keys.H);
            tInc.AddKey(Keys.E);
            tInc.AddKey(Keys.L);
            tInc.AddKey(Keys.L);
            tInc.AddKey(Keys.O);
            tInc.AddKey(Keys.Enter);

            //! 对上暗号以后的处理程序
            tInc.IncantationCantillatedReport += new IncantationReport(BackdoorHandler_A);

            //! 将这个暗号添加到后门监视器里面
            m_KeyBackDoor.AddIncantation(tInc);
        }
        while (false);

        //! 第二个后门
        do
        {
            //! 申请一个后门暗号
            KeyboardIncantationMonitor.KeysIncantation tInc = m_KeyBackDoor.NewIncantation() as KeyboardIncantationMonitor.KeysIncantation;

            //! 初始化这个暗号为:依次按下 <Esc>Bye<Enter>
            tInc.AddKey(Keys.Escape);
            tInc.AddKey(Keys.B);
            tInc.AddKey(Keys.Y);
            tInc.AddKey(Keys.E);
            tInc.AddKey(Keys.Enter);

            //! 对上暗号以后的处理程序
            tInc.IncantationCantillatedReport += new IncantationReport(BackdoorHandler_B);

            //! 将这个暗号添加到后门监视器里面
            m_KeyBackDoor.AddIncantation(tInc);
        }
        while (false);
    }

    //! 第一个后门的处理程序
    void BackdoorHandler_A(IIncantation tInc)
    {
        button1.Visible = true;
    }

    //! 第二个后门的处理程序
    void BackdoorHandler_B(IIncantation tInc)
    {
        button1.Visible = false;
    }

    在Form1的构造函数中增加对AddBackDoor方法的调用,这样我们就把后门加好了 
    -C#
    public Form1() 

         InitializeComponent(); 

         //! 加入后门 
         AddBackDoor(); 
    }



    在什么地方安插后门呢?依照个人喜好了,不过既然是一个按键后门,肯定要选择一个能接收KeyDown或者KeyUp事件的地方。 
    比如我们在Form1上增加一个文本框,将其ReadOnly属性设置为True,并添加一段文字:“版权所有,翻版必究”。并在窗体上增加一个按钮,作为我们演示的对象:普通状况下,看不到这个按钮,开启后门以后,按钮的visible属性就变为true,我们就能看见了;我们也可以使用另外一个后门重新将按钮的visible属性设置为false,然后就可以交给客户了。^_^ 

    选中刚才所说的文本框控件,在Property窗口中选择Event,双击KeyDown,进入代码编辑窗口,并在KeyDown处理程序中加入对后门监视器的处理:也就是把按下的键告诉监视器: 
    -C#
     private void textBox1_KeyDown(object sender, KeyEventArgs e) 
            { 
                //! 告诉后门监视器哪个键被按下了 
                m_KeyBackDoor.Append(e.KeyCode); 
            } 

            //在后门处理程序A中将Button的Visible属性设置为True; 
            //! 第一个后门的处理程序 
            void BackdoorHandler_A(IIncantation tInc) 
            { 
                button1.Visible = true
            } 
            //在后门处理程序B中将Button的Visible属性设置为False; 
            //! 第二个后门的处理程序 
            void BackdoorHandler_B(IIncantation tInc) 
            { 
                button1.Visible = false
            }


    最后,别忘记把Button的visible属性设置为False,否则怎么向我们的客户隐藏这个按钮呢? 


    运行程序,果然看不到Button,他被隐藏了 
    选中写有“翻版必究”的文本框,依次按下: <Esc> <H> <E> <L> <L> <O> <Enter> 键, button1出现了 
    依次按下: <Esc> <B> <Y> <E> <Enter> 键, button1又消失了 

    大功告成。 
    无论任何时候你都可以从头开始输入后门,不必担心上次从什么地方开始的。当然,也不用考虑大小写。 
    Have a good time. 

    测试代码下载

  • 相关阅读:
    MySQL灾备切换
    crontab 定时任务
    Mysql常用命令 详细整理版
    linux 常用命令
    shell逻辑运算总结, 包括[[]]与[]的区别,&&与-a的区别,||与-o的区别
    linux端口详解大全
    编译安装php5.6
    linux给用户添加sudo权限
    Effective C#(二)
    Effective C#(一)
  • 原文地址:https://www.cnblogs.com/top5/p/1765070.html
Copyright © 2011-2022 走看看