分析了一下360安全衛士的HOOK

by: achillis

 

 分析了一下360的HOOK,通過直接hook KiFastCallEntry實現對所有系統調用的過濾。
我分析的版本如下:
主程序版本: 6.0.1.1003
HookPort.sys版本: 1, 0, 0, 1005
HookPort.sys的TimeStamp: 4A8D4AB8

簡單說明:360把所有被hook的系統服務的過濾函數放在了一個表裏,索引即對應的系統服務在該過濾函數表中的索引。
所有列出來的函數都會被hook掉的,是否處理指某個系統服務有沒有相應的過濾函數進行處理,拒絕還是放行就是在過濾函數中完成判斷的。
不處理的系統服務,將會直接調用原始服務例程。
函數如下:
服務名稱                    索引    是否處理    備註
==============================================================================
NtCreateKey                    0x00    否
NtQueryValueKey                0x01    是
NtDeleteKey                    0x02    是
NtDeleteValueKey            0x03    是
NtRenameKey                    0x04    是
NtReplaceKey                0x05    是
NtRestoreKey                0x06    是
NtSetValueKey                0x07    是
NtCreateFile                0x08    是
NtFsControl                    0x09    是
NtSetInformationFile         0x0A    是
NtWriteFile                    0x0B    是
NtWriteFileGather            0x0B    是        //和NtWriteFile共用一個過濾函數
NtCreateProcess                0x0D    是
NtCreateProcessEx            0x0E    是
NtCreateUserProcess            0x0F    是        //Only on Vista or later
NtCreateThread                0x10    是
NtCreateThreadEx            0x10    是        //和NtCreateThread共用一個過濾函數,for vista or later
NtOpenThread                0x11    是
NtDeleteFile                0x12    是
NtOpenFile                    0x13    是
NtReadVirtualMemory            0x14    否
NtTerminateProcess            0x15    是
NtQueueApcThread            0x16    是
NtSetContextThread            0x17    是
NtSetInformationThread        0x18    否
NtProtectVirtualMemory        0x19    否
NtWriteVirtualMemory        0x1A    是
NtAdjustGroupToken            0x1B    否
NtAdjustPrivilegesToken     0x1C    否
NtRequestWaitReplyPort        0x1D    是
NtCreateSection                0x1E    是
NtOpenSecton                0x1F    是
NtCreateSymbolicLinkObject    0x20    是
NtOpenSymbolicLinkObject    0x21    否
NtLoadDriver                0x22    是
NtUnloadDriver                0x22    是        //和NtLoadDriver共用一個過濾函數
NtQuerySystemInformation    0x23    是
NtSetSystemTime                0x25    否
NtSystemDebugControl        0x26    是
NtUserBuildHwndList            0x27    是
NtUserQueryWindow            0x28    是
NtUserFindWindowEx            0x29    是
NtUserWindowFromPoint        0x2A    是
NtUserMessageCall            0x2B    是
NtUserPostMessage            0x2C    是
NtUserSetWindowsHookEx        0x2D    是
NtUserPostThreadMessage        0x2E    是
NtOpenProcess                0x2F    是
NtDeviceIoControlFile        0x30    是
NtUserSetParent                0x31    是
NtOpenKey                    0x32    是
NtDuplicateObject            0x33    是
NtResumeThread                0x34    否
NtUserChildWindowFromPointEx 0x35    是
NtUserDestroyWindow            0x36    是
NtUserInternalGetWindowText    0x37    否
NtUserMoveWindow            0x38    是        //和NtSetParent共用一個過濾函數
NtUserRealChildWindowFromPoint 0x39 是        //和NtUserChildWindowFromPointEx共用一個過濾函數
NtUserSetInformationThread    0x3A    否
NtUserSetInternalWindowPos    0x3B    是        //和NtSetParent共用一個過濾函數
NtUserSetWindowLong            0x3C    是        //和NtSetParent共用一個過濾函數
NtUserSetWindowPlacement    0x3D    是        //和NtSetParent共用一個過濾函數       
NtUserSetWindowPos            0x3E    是        //和NtSetParent共用一個過濾函數
NtUserSetWindowRgn            0x3F    是        //和NtSetParent共用一個過濾函數       
NtUserShowWindow            0x40    是
NtUserShowWindowAsync        0x41    是        //和NtUserShowWindow共用一個過濾函數
NtQueryAttributesFile        0x42    否
NtUserSendInput                0x43    否
NtAlpcSendWaitReceivePort    0x44    是        //for vista or later
NtUnmapViewOfSection        0x46    是
NtUserSetWinEventHook        0x47    否
NtSetSecurityObject            0x48    是
NtUserCallHwndParamLock        0x49    是
NtUserRegisterUserApiHok    0x4A    否

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