自定义控件伪装“病毒”
这几天,菜鸟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希望这篇文字能帮到你。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通