对极域64位禁止终止进程、键盘锁定的分析
禁止終止進程
篇首圖,讓人心臟驟停的窗口。使用任務管理器結束極域時幾乎是必然出現的。原理嘛,可以看破解極域電子教室,老師再也控制不了我了!極域電子教室防控制。
通過檢查,極域使用 TDProcHook.sys 來 HOOK 住 NtTerminateProcess ,如果要結束的是 StudentMain.exe ,則返回 STATUS_ACCESS_DENIED 拒絕訪問。
但是這個驅動比較老,僅僅能在32位的Win7/XP上運行,64位Win7及Win8/10都會失效,這說明,64位系統或Win8/10系統都可以用任務管理器結束。
以上這段話,基本上沒有問題。可是,越來越多機房使用64位系統,也沒見有人說可以直接結束。畢竟極域用來控制學生,肯定不會這么容易就被結束。
有一次,我用火絨劍研究進程加載的模塊,意外發現了一個文件LibTDProcHook64.dll,路徑指向極域目錄。顧名思義,是64位進程hook。我們的進程無法終止極域,都是它惹的禍。
經測試,我們在程序中手動卸載它,再調用TerminateProcess(),即可成功結束極域。
//卸載極域64位進程終止hook HMODULE hook=GetModuleHandle("LibTDProcHook64.dll"); FreeModule(hook); //終止極域 HANDLE handle = OpenProcess(PROCESS_TERMINATE, FALSE, 6789/*極域PID*/); TerminateProcess(handle, 0);后來發現,極域有個ProcHelper64.exe,也是拒絕結束的,顧名思義,就是進程助手64位。
鍵盤鎖
這個就不介紹了,懂的都懂。
上面文章中提到:
然后,設置一些鉤子,屏蔽鍵盤按鍵:
最后,調用驅動HOOK住底層鍵盤,防止你按 Ctrl+Alt+Del (真惡心)
鍵盤鎖定,極域采用雙重鎖。極域的WH_KEYBOARD_LL鉤子負責屏蔽大多數按鍵。我們可以采用新線程循環掛鉤,使自己的鉤子位于極域鉤子上,然后在自己鉤子函數里分發事件(直接返回FALSE是個比較好的解決辦法),實現解鍵盤鎖。
HHOOK kbdHook;LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam){return FALSE; } DWORD WINAPI KeyHookThreadProc(LPVOID lpParameter) {while (true) {kbdHook = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)HookProc, GetModuleHandle(NULL), 0);Sleep(25);UnhookWindowsHookEx(kbdHook);}return 0; }其實除JiyuTrainer(直接不讓極域鎖)之外的所有能解極域鍵盤鎖的軟件,都用了這個方法。例如,F**kTeacher掛了四個鉤子(其中兩個沒有用),再見極域循環掛鉤還不解鎖(幾秒鐘就有成百上千個鉤子,太暴力了)。實際上,1個就夠了。
但是這個鉤子沒法屏蔽Alt+Ctrl+Delete,極域就弄了個底層的驅動。這個驅動無法通過sc命令停止和卸載:
C:\windows\system32>sc stop TDKeybd [SC] ControlService 失敗 1052:請求的控件對此服務無效。就連PCHunter都干不掉它(惡心到我了)。因此使用以上解鍵盤鎖方法,無法解鎖Alt+Ctrl+Delete。
另外,極域的WH_KEYBOARD_LL鉤子并未屏蔽Ctrl、Shift、Alt、B、C,Win按鍵存疑。應該是有意為之。
總結
以上是生活随笔為你收集整理的对极域64位禁止终止进程、键盘锁定的分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 开发规范
- 下一篇: 采用Atlas+Keepalived实现