C# 下进程保护例子.docx

上传人:小飞机 文档编号:4883250 上传时间:2023-05-21 格式:DOCX 页数:10 大小:126.06KB
返回 下载 相关 举报
C# 下进程保护例子.docx_第1页
第1页 / 共10页
C# 下进程保护例子.docx_第2页
第2页 / 共10页
C# 下进程保护例子.docx_第3页
第3页 / 共10页
C# 下进程保护例子.docx_第4页
第4页 / 共10页
C# 下进程保护例子.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C# 下进程保护例子.docx》由会员分享,可在线阅读,更多相关《C# 下进程保护例子.docx(10页珍藏版)》请在三一办公上搜索。

1、C#保护进程不被结束(源代码)收藏闲来无事,英语又学的太痛苦。看到我妈妈电脑开起在,就坐上去看看新闻,听听音乐。哎, 突然间,老毛病又烦了,想起原来一直有个编程的问题没有解决禁止别人用任务管理器, 结束自己的程序进程(.NET程序)。带着这个问题,我开始Google,开始baidu,又开始编程了。 和原来的搜索结果一样,什么东西都是一筹莫展,得到的答案永远是:C#没有办法自己去禁 止别人用任务管理器结束自己进程。不过功夫不负有心人。我还是找到一大堆的替代方法, 可以让别人不结束自己进程的方法。总结方法有:1. 把任务管理器程序给别人删除了,不让别人打开(妈呀,这个我觉得最不可取了,有点杀鸡取卵

2、的味道,没有任务管理器,我是无法忍受的。毕竟人家用户,购买了你产品, 你总不可能把别人任务管理器给洗白了吧?)否决!2. 接下来这个比较温柔,通过C#内置的Process类,对任务管理器的进程进行扫描,如果检查到有taskmgr.exe的进程(任务管理器进程),就把这个进程结束了。(虽然没有第 一个来的恶劣,但是,用户还是不能使用任务管理器)否决!3. 写两个程序进行双保护。这个想法是网上提的最多的思路,如果一个程序被结束了,另一个程序检测到这个程序不在了,就立即重新启动该程序,双双保护,互助互利(结 果我尝试了一下,不可取,因为1,CPU使用率太高,一直在循环检测,计算机速度立即就下 了。我

3、妈妈这个机子,P4的配置,1G内存,也来不起了。网页也卡起了。2,我写了一个 第三方程序,以最快速率去结束这个两个进程,如果这两个进程为了节约CPU的使用率, 而把扫描间隔时间隔的太开的话,立刻被我的程序洗白。所以,理论上这种方法,肯定是会 被洗白的)否决4. 技术含量比较高了,通过Windows的驱动机制,把自己给隐藏了(把自己变成驱动),然后隐藏到系统中运行,在任务管理器完全找不到,其实我多喜欢这种方式的,但 是,这个程序一弄出来,瑞星,Google,Hotmail,360卫士,全部当成病毒查出来了,我当时 眼流花都要流出来了。他们都太不给面子,Google,Hotmail直接把我的附件删

4、除了。随便我 压缩,分包压缩,都逃不过他们的法眼。所以,我清楚的意识到,这种程序弄出来,在客户 机器上,肯定是无法长久生存的。毕竟一个堂堂正正的程序,干嘛要去隐藏呢?所以。该条 方案否决!5. 用第三方的VC+程序,辅助C#程序达到不让别人禁止C#进程的方法。哎,弄了半天,这种方法,我认为最行之有效。毕竟不得不承认,要搞Windows系统级的程序设计, C+是当之无愧的龙头老大,C#只是一个做网站级应用的能手。不过,你发布一个程序给用 户,用户看到那个任务管理器里面还有个其他程序在运作或者是看到你的安装包里面怎么还 有其他程序名字,确实感觉太不专业,太不地道了。话又说回来,这种辅助程序一般都要

5、收 费。我下载的那个就要收费。所以,最后,这个方案也否决了!难道,C#真的就不能自己弄个什么名堂的东西出来,不被任务管理器结束吗?实际,我认为, C#是可以做到这一点的。原因有2个。1,C#是支持带*号这种指针的方式的。也就是说,C# 可以使用指针。2, C#可以完全无障碍的调用Windows自己的API函数(虽然性能没有VC+ 开发的好),调用第三方开发的COM组件,甚至调用USB插口接口相关信息(曾今做U盘 杀毒的时候,用到过,不过主要还是结合API完成的,一个未公开的API函数R开头的忘记 了)。所以,为此,我抱着信心开始准备找第三方提供的动态链接库之类的东西,毕竟要自 己写,C#还是有

6、许多性能和调用方面的麻烦问题要考虑,毕竟不是毕业设计,所以,能简单 就简单,只要克服以上提到的5种方法的不足。最后,功夫不负有心人,找了大半天,找到了一个叫Peter的牛人,写了一个通过VC+程序 调用VC+动态链接库,实现的VC+程序不被任务管理器结束的源代码。幸亏源代码相当详 尽(VC+动态链接库的源码,VC+应用程序源码),要不然,后面的活路,就没有办法做了。 于是我开始,慢慢,慢慢走上辛苦的VC+代码分析上。你们可能要问我干什么?我可以很 坦然的告诉你,虽然我VC+能力确实不强,但是我要把VC+的代码,移植到C#上。听起来, 很不可思意,但是,我真的成功了。最后,为了报答我的学校一一成

7、都电子机械高等专科学 校和成都信息工程学院。我把VC+应用程序调用代码,移植到.NET上,并且,为了调用方 便,我做成了.NET可以识别的dll运行库。只要按以下方式调用运行即可。这个dll运行库 可以保护自己进程,也可以通过设置保护其他进程,作为第三方动态链接库存在。(很幸运, 虽然这个第三方动态链接库我还是很花了些时间,但是绝对不收费,免费放送,提供C#X 程源码下载!如果大家有兴趣也可以一起讨论一下,我的邮件是Email:k.liuxu), 至于那个牛人的设计思路,其实,就是用系统函数挂钩,挂接了所有的系统函数消息。没有 直接分析任务管理器这些东西。不过,在CMD命令控制台中,无法接受消

8、息,所以,用命 令控制台,是可以结束进程的。不过,命令控制台,一般用户不会使用,可以直接把命令控 制台删除,或者移植到程序内部调用,不准用户外部调用,就行了。至于其他更麻烦的东西, 就有兴趣大家在慢慢聊吧。前面分析VC+代码是一个艰苦的历程,简直是挥泪分析啊,眼睛都看肿了,才把VC+应用 程序部分移植出来。其实总结了一下,实际上还是因为自己学习不扎实,所以才看的恼火, 对不起电子高专培养我的刘光会和杨勇老师,对不起信息工程学院的安俊秀和陈晓红老师。 不过最后弄出来了,还是一件好事情吧,也充分说明了 C#还是可以搞一些基于系统级的调 用和编程的。也许在大鸟眼睛中,移植这种工作并不算什么,这种程序

9、也许是小儿科,不过, 对于,刚刚毕业的我来说,还是一种不小的挑战。由于时间有限,我只把前半部分的VC+应用程序端移植完成,在以后的时间中,等我把Dll 部分抽象出来,我会做成.NET可以识别的dll发布出来。如果还有时间,我就再来说说,我 怎么分析的吧。不过这个可能要说很久很久了,毕竟涵盖了 5年我大学学习的所有基础知识, 大到系统,小到函数指针,代理,枚举这些结构,内存存储空间等等。好了废话不多说了。 现在主要看看怎么使用。首先,我们必须具备两个DLL文件,一个是我用.NET程序生成的KProtectProcess.dll文 件,这个文件可以直接放到VS.NET开发环境中进行使用。还有一个是

10、我还没有编译出来的 NKCore.dll文件(其实我移植了一半,但是里面设计很多系统关键字,我在。#中还没有找到 很好的解决方案,所以正在研究),这个文件是C+的运行库,实际上核心也是这个文件。1首先我们新建立一个工程。如下:2.按照如图,放置这些控件,以便我们操作自身程序涅护保护指症谜理号B戏 Ei巳i 1; k li 恸播刨ai 1. ccni3.添加引用.NET可以识别的KProtectProcess.dll动态链接库(VB.NET,J#.NET,VC+.NET都可 以调用)右键项目,选择添加引用:I解胡方案皮源宫理器-衣吐口血土 P X1解喧曜1个项团# M TestCI知Pre感生成

11、1侦|备引F醐生成饵活理43 _J添加同-C3 .口1用味匚刃|Foi浴加Wd引用回“,毫童看美关系S1(V)巧(tfl Prr程为启勃顶目#)al rl I调鼠向卜*葩切E*购凹 X4.找到 KProtectProcess.dll 这个文件并添加(注意保持,KProtectProcess.dll 文件和 NKCore.dll文件在同一目录中)5.点确定以后,你会看到工程中,多了一个程序集KProtectProcess.dll甜皓力茂堆隔富话褐=-I ecloseJ解决方案Ttitctoirci个项田j .3 Tet tCIfiSe4 Pr&pertiej引用t vtetPrQQj Sy it

12、em-Da t a Astern ,D e plo ym ent_J item.Drawi n5y item .Wi ne过口所虻Show厂成功!保护谣进程? JfJpprivate vo b d fcut t*n2_Cli ele (ab j e t seitdetr* Event Args ei figyj些WjnL胡adfrcTecTirO)MezaeBc.Show(*已经辱_1H杲护进程? ):7privttt Vi&id butti sktabj*st 4hdtr EvtAr *)KFeoENFcicn.丝E&m Fs槌etTirgsisID 二 uint. Fat se (this

13、. teKtBoxl. TfiKt) if匿顽77L Fr&UclFrZcwS-)的z冬沱心y Sh成功艰吊遂进程?):】private vo h d Wt t.an4_Cl i ek (obj e c t Eeiider, EventArE 电)i 整1r局云5 5, UnLgdFri槌E &1式)黑ess *亏曲财.Show已娶停止f杲护诳程? );7.所有工作都准备完毕就可以调试了。其中以下演示怎么保护其他进程。比如我们现在打开Windows计算器这个程序,计算器这个程序的进程名是calc.exe,所以,我们就找他 的进程号PID.17648等褊累E)查看(V)陪顾E现在只需要在程序的进

14、程号中输入,1764,然后点保护,最后,你看用任务管理器是不 是不能结束calc这个程序了?很简单吧?结束语:(1) .NET 程序原代码下载地址为(大小 47KB): (2)两个动态连接库文件(大小 14KB): (3 ) .NET 可识另IJ的 Dll我移植出来的.cs 文件(7KB): (4) VC+原始代码文件(大小 10KB): 由于,我用的是自己的虚拟主机存放以上文件,不晓得什么时候会出现问题,所以,如 果不能下载的话,请给我发邮件Email:k.liuxu.如果有什么技术需要讨论的也可以 给我邮件,我真诚希望大家共同交流互相探讨。技术细节都在代码中,最近忙到复习英语, 所以,没有时间再往下写了。以上程序使用的是VisualStudio.NET 2005,(C#),在XP SP2上测试 通过。如果有任何问题的话,请各位大侠多多指教。本文来自 CSDN 博客,转载请标明出处

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号