WIN7X64代碼禁止應用層創建、枚舉服務

WIN7代碼禁止應用層創建、枚舉服務

系統服務

WIN7的系統服務遍歷,是通過RPC遠程調用,最後調用NdrClientCall2 進入內核 通知services.exe,services.exe中有張全局的服務表,這張表在WIN7 X64中俺不知道定義,如果要隱藏系統服務,可以對這張表進行修改,但是俺不知道呀咋辦!於是有了這個辦法。
應用層遍歷服務,都要打開SC管理器,而我就是打開SC管理器上面做文章。
打開管理器的API是OpenSCManager,無論你是創建服務 還是 枚舉服務,都得先使用這個API,其返回的4字節句柄,根據資料說是返回一個結構體指針,WIN7 X64不得而知其原型。

OpenSCManager在ADCAPI32模塊中導出,其內部是鏈接的其他系統DLL名字如下
我下斷點看看這個API的實現

在這裏插入圖片描述
注意紅色區域,他會調用ScWaitForStart,看他實現:
在這裏插入圖片描述
可以看到他使用OpenEvent打開內核對象
這個內核對象是全局的,經過對services.exe的研究,這個對象是他創建的,用工具證明下
在這裏插入圖片描述

因此 只需要關閉這個事件對象,就達到了 加載驅動以及枚舉驅動失效的作用
SvcctrlStartEvent_A3752DX 這個名字後面的十六進制,似乎是來自一個固定的UUID,因此不用擔心他後面的數字會變化的。
寫的時候寫成 Global\SvcctrlStartEvent_A3752DX 別問爲啥。。上面的反彙編是這樣寫的
還原下反彙編就是 HANDLE curevent = ::OpenEventW(0x100000, TRUE, L"Global\SvcctrlStartEvent_A3752DX");

如何關閉他,我們可以遍歷進程的句柄
然後 dumhandle 然後關閉,也可以採用內核方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章