嗯,问题可能听起来令人困惑,或者像许多其他事情一样;但让我进一步解释..
我正在制作一个个人安全程序,可以安全地存储密码和其他数字数据。我正采取一些“在你面前的正确”的方法......
我希望只有在我能够结束这个项目的地方才能做到这一点,我仍在努力完成这一部分;我不希望有人能够上电脑并结束这个过程。
所以,主要问题:我怎么能隐藏我的程序,所以如果不通过程序这样做就不能结束这个过程?或者,只是将它放在无法结束过程的地方,而不是隐藏它。
我想另外一个问题是:这是否可以实现?或者我只是想像个疯子?我很可能是...
答案 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,您可以控制谁可以启动,停止和管理服务。
顺便说一句,这些是windows service protect ACL