自定义控件伪装“病毒”

  这几天,菜鸟D一直在搞自定义控件(都是经理的错),前几天被设计界面的加载出错整的相当惨,好在找到了解决办法。就在今天,同事无意中提到的一个问题,让菜鸟D折腾了一天。

      “你知道吗?自定义控件往设计器界面里拖的时候,会执行自定义控件的某些方法。”

  “当然知道,我重写自定义控件的宽度属性,可以让自定义控件的宽度改变时,内部控件的定位也随之发生变化。”

  “来看看这个...”

  “我X,你这怎么做到的?我懂了...”

  经过这几天的折腾,发现了“自定义控件在设计器界面也会执行一些代码,甚至都不需要程序运行”的特点。然后就实现了拖到窗体上一个自定义控件,关闭设计界面后再次打开,窗体的宽度逐渐缩减的效果。心里一猥琐:能不能开个线程,把目标的C盘格了,感觉告诉我这是可行的。

     先说一下怎么实现的,直接上代码:

     

        //自定义控件--这是所有控件拖到窗体上一定会触发的事件
        private void ucTest_VisibleChanged(object sender, EventArgs e)
        {
           //new Thread(test111).Start();
            //new Thread(test222).Start();
        }
       //窗体宽度缩减
        private void test111()
        {
            Form ff = this.Parent as Form;
            if (ff != null)
            {
                while (ff.Width > 50)
                {
                    ff.Width--;
                }
            }
        }
        //10次弹窗而已
        private void test222()
        {
            int i = 0;
            Form ff;
            while (i < 10)
            {
                ff = new Form();
                ff.Text = i.ToString();
                ff.ShowDialog();
                i++;
            }

 

  在自定义控件中找一个在设计界面就会执行的方法,如VisibleChanged事件(还有很多,这里只举一例),然后把想要执行的代码写进去,生成。最好写一个线程,线程容易伪装嘛。然后当自定义控件被拖到设计界面的窗体上时,“崩——吓老子一跳!”也许什么事也没发生,也许效果已经很明显了。如果什么也没发生,关掉设计器界面再打开一次,这次一定会执行。

     如果你写的代码杀意太强,把自己电脑弄崩了,呵呵,自己作死怨不了别人。然后试想一下,定义一个自定义控件,如上方法注入攻击(开个线程,偷窥硬盘上的资料等等,你懂得),用混淆器混淆一下代码,放到网上免费使用,然后别人往程序里一拖,哈哈中招了吧...(无限YY中)

  其实,这东西也不可能当病毒来用,这种方式的传播范围很窄,几乎没什么传播的范围,程序猿也不一定到网上找什么自定义控件,所以几乎不会被传播(程序猿在广大网民中的比例还是不高的)。杀伤力再高有毛用,再说要到网上查传播源也是很容易的,一不小心家里的水表就被抄了。

     本文的目的在于,给大家找了一个恶趣味的工具罢了(现在懂了DesignMode的作用了吧)。

     菜鸟D希望这篇文字能帮到你。

posted @ 2014-12-19 17:56  单亚林  阅读(653)  评论(0编辑  收藏  举报