亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在C#中的“任務管理器”中隱藏進程?

如何在C#中的“任務管理器”中隱藏進程?

料青山看我應如是 2019-10-28 15:14:59
我需要在任務管理器中隱藏一個進程。它用于Intranet方案。因此,一切都是合法的。:)請隨時分享您擁有的任何代碼(最好是C#)或任何其他技術,或與此路線有關的任何問題。Update1:大多數用戶具有管理員權限才能運行某些舊版應用程序。因此,建議之一是將其隱藏在任務管理器中。如果還有其他方法可以防止用戶終止該進程,那就太好了。Update2:刪除對rootkit的引用。不知何故使這篇文章看起來很消極。
查看完整描述

3 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

沒有支持的方法來完成此操作。可以以任何特權級別讀取進程列表。如果您希望甚至對Administrators都隱藏一個進程,那么雙重支持。


為了使它起作用,您需要編寫一個內核模式rootkit來攔截對NtQuerySystemInformation的調用,以使SystemProcessInformation信息類無法列出您的隱藏進程。


安全地攔截系統調用非常困難,并且64位Windows內核竭盡全力防止這種情況的發生:嘗試修改syscall表會立即顯示藍屏。在那些平臺上這將非常困難


這是一個試圖做類似事情的Rootkit的例子(有幾個嚴重的問題)。


查看完整回答
反對 回復 2019-10-28
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

如果要防止用戶從任務管理器中終止進程,則可以僅在進程上使用安全描述符來拒絕終止對所有人的訪問。從技術上講,管理員仍然可以通過擁有該進程的所有權并重置DACL來終止該進程,但是任務管理器中沒有界面可以執行這些操作。Process Explorer可能有一個接口。


當您的進程開始時,請使用SetKernelObjectSecurity和DACL_SECURITY_INFORMATION當前進程句柄。使用零個ACL設置DACL。這將拒絕所有人的所有訪問,包括那些試圖通過任務管理器結束您的過程的人。


這是一個示例,它也更改了流程的所有者:


SECURITY_DESCRIPTOR sd;

ACL dacl;

SID_IDENTIFIER_AUTHORITY ntauth = SECURITY_NT_AUTHORITY;

PSID owner;


assert(InitializeAcl(&dacl, sizeof dacl, ACL_REVISION));


assert(AllocateAndInitializeSid(&ntauth, 1, SECURITY_LOCAL_SYSTEM_RID, 0,0,0,0,0,0,0, &owner));


assert(InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION));


assert(SetSecurityDescriptorDacl(&sd, TRUE, &dacl, FALSE));


assert(SetSecurityDescriptorOwner(&sd, owner, FALSE));


assert(SetKernelObjectSecurity(GetCurrentProcess(), DACL_SECURITY_INFORMATION | OWNER_SECURITY_INFORMATION, &sd));


assert(FreeSid(owner) == NULL);

不幸的是,它似乎并不有效。我仍然可以關閉該過程(盡管不是受限用戶)。也許任務管理器正在獲得所有權或調用其他特權來終止進程?我似乎還記得在以前的Windows版本(我正在測試2003)中可以使用的功能,但是我可能會誤會。


查看完整回答
反對 回復 2019-10-28
  • 3 回答
  • 0 關注
  • 1462 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號