Jim*_*m C 8 c# windows process
如何保护我的C#应用程序免受通过taskman或以编程方式杀死其进程的人员的攻击?
这是我的场景:
App A是由另一个团队开发的MFC应用程序.它有一个未发布的基于文本的远程接口,通过后门启用.
我正在开发应用程序B,一个与A交互的C#WinForms应用程序.当需要远程访问时,A启用A后门,在完成时(或失败时)关闭它.
我正在探索用户可以滥用B的方式来获取A的隐藏功能,例如在启用A的远程接口后杀死B的进程.当发生这种情况时,我希望B最后有机会关闭A的后门.
B使用localhost与A进行交互,所以我并不担心掉电情况.
我正在寻找一个不涉及改变A的解决方案.
我不希望能够阻止Dark Tangent(虽然这会是一个奖励),但是现在一个脚本小子可以用这个设计:)
这些应用程序在Windows XP上运行,但很快也将支持Vista和7.
吉姆,提前谢谢
我愿意在他们尝试时关闭应用程序,但需要先做一些事情.
在程序关闭时执行必要的步骤会导致易碎的程序崩溃.即使您可以阻止某人通过任务管理器杀死您的程序,您也无法阻止他们关闭计算机,甚至无法将电缆拉出墙壁.无论完成哪项任务至关重要,都将失去.如果停电怎么办?同样,您的任务将无法完成,您的重要清理代码将无法运行.
相反,你应该在任何时候使你的程序对失败都很健壮.使用事务,并始终以原子方式将状态保存到文件中 - 确保始终至少有一个有效的数据副本.不要以暂时无效的方式覆盖重要文件.
最后,您可以向程序添加一个对话框,当它们尝试关闭它时,会警告它们程序需要正确关闭.如果你快速关机,用户将不想杀死它并让它正常终止.如果你的关机需要很长时间,那么人们会试图杀死它.如果你对用户很好,他们也会对你很好.
如果快速关闭意味着用户将丢失一些未完成的工作,然后警告他们并给他们机会等待任务完成,但如果他们真的想要退出你的程序然后让他们退出.
你不能 - 只要用户有权在你的程序上调用 TerminateProcess,你就无法阻止 End Process 在任务管理器中立即杀死你。Raymond Chen前段时间发过这样的帖子: 程序和用户之间的军备竞赛
| 归档时间: |
|
| 查看次数: |
12221 次 |
| 最近记录: |