軟體彩蛋我想大家都應該聽說過。經典的比如在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.
測試代碼下載