=波波日志 > Asp.Net/C#/WCF > [C#技术分享] 给自己的软件添加后门=
[转][C#技术分享] 给自己的软件添加后门
软件彩蛋我想大家都应该听说过。经典的比如在Excel得某个单元隔里面OOXX就可以获得一个赛车游戏之类。这是一种软件彩蛋,纯属娱乐。但是更多的“彩蛋”被用作软件后门。比如我们提供给客户一个软件,通常是看不到某些调试用的窗口和工具的;当我们被要求给客户提供现场技术支持的时候,我们往往希望通过某种隐秘的手段来开启这些条使用的工具和窗口,这就是后门。这类后门中又以按键后门最为常见,下面我们就利用一个已有的第三方函数库Utilities.dll来构建一个后门系统。
首先新建一个工程,然后完成对第三方库Utilities的引用。
然后开打Form1的代码编辑窗口,在窗体类中添加一个 后门类KeyboardIncantationMonitor
新建一个私有成员函数,并添加两个后门
在Form1的构造函数中增加对AddBackDoor方法的调用,这样我们就把后门加好了
在什么地方安插后门呢?依照个人喜好了,不过既然是一个按键后门,肯定要选择一个能接收KeyDown或者KeyUp事件的地方。
比如我们在Form1上增加一个文本框,将其ReadOnly属性设置为True,并添加一段文字:“版权所有,翻版必究”。并在窗体上增加一个按钮,作为我们演示的对象:普通状况下,看不到这个按钮,开启后门以后,按钮的visible属性就变为true,我们就能看见了;我们也可以使用另外一个后门重新将按钮的visible属性设置为false,然后就可以交给客户了。^_^
选中刚才所说的文本框控件,在Property窗口中选择Event,双击KeyDown,进入代码编辑窗口,并在KeyDown处理程序中加入对后门监视器的处理:也就是把按下的键告诉监视器:
首先新建一个工程,然后完成对第三方库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;
}
{
//! 第一个后门
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();
}
{
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;
}
{
//! 告诉后门监视器哪个键被按下了
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.
来源:http://topic.csdn.net/u/20100222/16/4987A53A-09E4-4B8E-89A8-2BF1A16AF952.html
类别:Asp.Net/C#/WCF 作者:转载 日期:2010-02-23 【评论:0】
暂时没有评论!
发表留言
百度赞助
同类热门博文
- ·IE里Cookie跨域不能..
- ·去掉隐藏asp.net编译..
- ·解决asp.net验证视图..
- ·找不到System.Web.S..
- ·web服务因URL意外地..
- ·C#2.0中,SerialPor..
- ·用C#编写ActiveX控件..
- ·用C#编写ActiveX控件..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(595)
- 操作系统及应用软件(376)
- JavaScript/Ajax(330)
- SQL及数据库(134)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(92)
- 其他(75)
- 个人日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- 机械重工(26)
- C#设计模式(24)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·asp.net<%--注释--%..
- ·ASP.NET环境配置常见..
- ·asp.net防止图片盗链..
- ·Session.Abandon的使..
- ·asp中缓存cache技术..
- ·C#获取richtextbox滚..
- ·C# 添加,修改,删除 ..
- ·更新、删除DataTabl..
随机博文
