如何 - 从进程列表中取消我的程序..?

时间:2011-04-28 09:13:44

标签: c# winforms security process

嗯,问题可能听起来令人困惑,或者像许多其他事情一样;但让我进一步解释..

我正在制作一个个人安全程序,可以安全地存储密码和其他数字数据。我正采取一些“在你面前的正确”的方法......

我希望只有在我能够结束这个项目的地方才能做到这一点,我仍在努力完成这一部分;我不希望有人能够上电脑并结束这个过程。

所以,主要问题:我怎么能隐藏我的程序,所以如果不通过程序这样做就不能结束这个过程?或者,只是将它放在无法结束过程的地方,而不是隐藏它。

我想另外一个问题是:这是否可以实现?或者我只是想像个疯子?我很可能是...

2 个答案:

答案 0 :(得分:4)

您可以使用NTDLL.DLL中未记录的API来阻止您的进程终止:

typedef VOID ( _stdcall *_RtlSetProcessIsCritical ) (BOOLEAN NewValue,PBOOLEAN OldValue,BOOLEAN IsWinlogon );

void MakeProcessCritical() {
    HMODULE hNtDLL;
    _RtlSetProcessIsCritical RtlSetProcessIsCritical;

    hNtDLL = GetModuleHandle("ntdll.dll")
    RtlSetProcessIsCritical = (_RtlSetProcessIsCritical)GetProcAddress(hNtDLL, "RtlSetProcessIsCritical");

    if(RtlSetProcessIsCritical != NULL)
         RtlSetProcessIsCritical(1, 0, 0);
}

尝试结束进程将导致拒绝访问消息。如果某些程序如何强制终止或自行终止,系统将停止并显示蓝屏死机。如果使用此方法,请确保在关闭进程之前调用RtlSetProcessIsCritical(0,0,0)。

注意:我强烈反对任何将要销售的软件的此方法。

答案 1 :(得分:3)

  

@sehe:然后告诉我从一开始就使用ACL。我不知道它们是什么,但如果这是更好的方法,那么请评论;而不是叫我写病毒的人。 - James Litewski

@James:如果我准备,我会发布答案,而不是评论。好吧,既然你要求它,这是我的0.02美元:

http://www.windowsecurity.com/articles/controlling-windows-services-service-accounts.html

  

第二个是服务访问控制列表(ACL)。 ACL在界面中不可见,只有通过运行脚本或使用Windows资源工具包中的SVCACLS.EXE工具等工具才能看到。通过修改服务的ACL,您可以控制谁可以启动,停止和管理服务。

http://www.vistaheads.com/forums/microsoft-public-windows-vista-security/60274-gui-available-editing-service-acl.html

顺便说一句,这些是windows service protect ACL

的前2名