Windows7、10的熱鍵屏蔽


 

最近有需求 在使用本軟件的時候 防止一些操作,需要屏蔽系統的快捷鍵,於是簡單整理了下實現方式

一、 hook技術的使用

hook技術:Hook 技術又叫做鈎子函數,在系統沒有調用該函數之前,鈎子程序就先捕獲該消息,鈎子函數先得到控制權,這時鈎子函數既可以加工處理(改變)該函數的執行行為,

還可以強制結束消息的傳遞。簡單來說,就是把系統的程序拉出來變成我們自己執行代碼片段。
  要實現鈎子函數,有兩個步驟:
  1. 利用系統內部提供的接口,通過實現該接口,然后注入進系統(特定場景下使用)
  2.動態代理(使用所有場景)

通過使用Hook技術可以加載低級鍵盤鈎子來截獲大部分的系統熱鍵,並屏蔽它。這個方法比較簡單,但有個缺陷,那就是對Ctrl+Alt+Del,Win+L沒用。 

原因:Winlogon初始化的時候,在系統中注冊了Ctrl+Alt+Del Secure Attention Sequence(SAS)熱鍵,並且在WinSta0 Windows 系統中創建三個桌面。SAS熱鍵的注冊使得Winlogon成為第一個處理CTRL+ALT+DEL的進程,所以保證了沒有其他應用程序能夠處理這個熱鍵。

簡單來說,就是這個熱鍵的級別太高,不會經過我們的鈎子鏈。所以接下我們的討論重點在於如何屏蔽Ctrl+Alt+Del,Win+L。主要是以下方式(兩種方式都需要管理員權限):

1、修改注冊表

缺點:界面還是存在,只是關閉了打開任務管理器,切換用戶等選項;

優點:可以定制我們的鎖定界面,一次修改即可,除非恢復注冊表,不然一直生效;

2、直接掛起winlogon.exe

缺點:只能通過重新恢復winlogon.exe來恢復熱鍵,在重啟機器之后還需要再次運行掛起程序;

優點:可以屏蔽所有快捷鍵,並且不會有鎖定界面

二、修改注冊表內容

首先思考我們屏蔽ctrl+alt+del的目的:為了不讓用戶可以殺死我們的進程,從而直接得到軟件內部數據。

所以我們通過修改注冊表也可以達到屏蔽Ctrl+Alt+DelL的效果。

具體我們要修改的項如下:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000001
"DisableTaskMgr"=dword:00000001
"DisableChangePassword"=dword:00000001
"NoConfigPage"=dword:00000000
"NoDevMgrPage"=dword:00000000
"DisableSwitchUserOption"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoLogoff"=dword:00000001

效果:

這是修改之前的:

 

   

這是修改之后的:

 

   

正常情況下,policies子鍵都存在,如果失敗,有兩種可能:

1,沒用使用管理員權限運行程序

2,沒有這個子鍵,需要自行創建Policies

三、掛起winlogon.exe進程

首先我們需要知道為什么要掛起winlogon以及為什么掛起winlogon可以達到我們要的屏蔽效果:

1Winlogon 是負責處理安全相關的用戶交互界面的組件。Winlogon的工作包括加載其他用戶身份安全組件、提供圖形化的登錄界面,以及創建用戶會話。

Winlogon在啟動時還注冊一個系統級別的安全注意序列(默認為Ctrl+Alt+Del)熱鍵,以在在用戶鍵入這個序列的時候切換到安全桌面顯示系統安全界面。

2,所以當我們掛起winlogon時,系統就無法監聽ctrl+alt+del,這樣,就可以達到屏蔽的效果

由於winlogon時系統安全級別的進程,要掛起他不僅需要我們取得管理員權限,還要將我們的進程升級到debug級別 

在將我們的進程提升到debug級別之后,我們需要做的事就是根據winlogon.exe這個進程名找到對應的進程PID也即是進程句柄,然后利用這個句柄去掛起winlogon.exe和恢復winlogon.exe。 

方案總結

關於屏蔽window7以及window10熱鍵的方案,我們主要以hook為主,去選擇性的屏蔽普通熱鍵,再加上修改注冊表或者掛起winlogon的方式去屏蔽系統級別的熱鍵,從而達到保證用戶權限對應軟件操作的限制。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM