【转】软件添加后门

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

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

然后开打Form1的代码编辑窗口,在窗体类中添加一个 后门类KeyboardIncantationMonitor

1  private  KeyboardIncantationMonitor m_KeyBackDoor  =   new  KeyboardIncantationMonitor(); 


新建一个私有成员函数,并添加两个后门

 

 1  private   void  AddBackDoor()
 2  {
 3       // ! 第一个后门
 4       do
 5      {
 6           // ! 申请一个后门暗号
 7  KeyboardIncantationMonitor.KeysIncantation tInc  =  m_KeyBackDoor.NewIncantation()  as  KeyboardIncantationMonitor.KeysIncantation;
 8 
 9           // ! 初始化这个暗号为:依次按下 <Esc>HELLO<Enter>
10          tInc.AddKey(Keys.Escape);
11          tInc.AddKey(Keys.H);
12          tInc.AddKey(Keys.E);
13          tInc.AddKey(Keys.L);
14          tInc.AddKey(Keys.L);
15          tInc.AddKey(Keys.O);
16          tInc.AddKey(Keys.Enter);
17 
18           // ! 对上暗号以后的处理程序
19          tInc.IncantationCantillatedReport  +=   new  IncantationReport(BackdoorHandler_A);
20 
21           // ! 将这个暗号添加到后门监视器里面
22          m_KeyBackDoor.AddIncantation(tInc);
23      }
24       while  ( false );
25    // ! 第二个后门
26    do
27      {
28           // ! 申请一个后门暗号
29          KeyboardIncantationMonitor.KeysIncantation tInc  =  m_KeyBackDoor.NewIncantation()  as  KeyboardIncantationMonitor.KeysIncantation;
30 
31           // ! 初始化这个暗号为:依次按下 <Esc>Bye<Enter>
32          tInc.AddKey(Keys.Escape);
33          tInc.AddKey(Keys.B);
34          tInc.AddKey(Keys.Y);
35          tInc.AddKey(Keys.E);
36          tInc.AddKey(Keys.Enter);
37 
38           // ! 对上暗号以后的处理程序
39          tInc.IncantationCantillatedReport  +=   new  IncantationReport(BackdoorHandler_B);
40 
41           // ! 将这个暗号添加到后门监视器里面
42          m_KeyBackDoor.AddIncantation(tInc);
43      }
44       while  ( false );
45  }
46  // ! 第一个后门的处理程序
47  void  BackdoorHandler_A(IIncantation tInc)
48  {
49      button1.Visible  =   true ;
50  }
51  // ! 第二个后门的处理程序
52  void  BackdoorHandler_B(IIncantation tInc)
53  {
54      button1.Visible  =   false ;
55  }
56 

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

1  public  Form1() 
2 
3       InitializeComponent(); 
4 
5        // ! 加入后门 
6       AddBackDoor(); 
7  }
8 

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

选中刚才所说的文本框控件,在Property窗口中选择Event,双击KeyDown,进入代码编辑窗口,并在KeyDown处理程序中加入对后门监视器的处理:也就是把按下的键告诉监视器:

 1    private   void  textBox1_KeyDown( object  sender, KeyEventArgs e) 
 2          { 
 3               // ! 告诉后门监视器哪个键被按下了 
 4              m_KeyBackDoor.Append(e.KeyCode); 
 5          } 
 6    // 在后门处理程序A中将Button的Visible属性设置为True; 
 7    // ! 第一个后门的处理程序 
 8    void  BackdoorHandler_A(IIncantation tInc) 
 9          { 
10              button1.Visible  =   true
11          } 
12      // 在后门处理程序B中将Button的Visible属性设置为False; 
13      // ! 第二个后门的处理程序 
14    void  BackdoorHandler_B(IIncantation tInc) { button1.Visible  =   false ; }
15 
16 

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


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

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

 

 


 

转载于:https://www.cnblogs.com/compass/articles/1673607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值