分析了一下360安全卫士的hook(zt)

分析了一下360安全卫士的hook(zt) 2010-6-3 18:36阅读(12)
连接: http://blog.csdn.net/lionzl/article/details/7738179

分析了一下360的HOOK,通过直接hook KiFastCallEntry实现以所有系统调用的过滤。

我分析的版本如下:

主程序版本: 6.0.1.1003

HookPort.sys版本: 1, 0, 0, 1005

HookPort.sys的TimeStamp: 4A8D4AB8

简单说明:360把所有被hook的系统服务的过滤函数放在了一个表里,索引即对应的系统服务在该过滤函数表中的索引。

所有列出来的函数都会被hook掉的,是否处理指某个系统服务有没有相应的过滤函数进行处理,拒绝还是放行就是在过滤函数中完成判断的。

不处理的系统服务,将会直接调用原始服务例程。

函数如下:

服务名称          索引  是否处理  备注

===============================================

NtCreateKey          0×00  否

NtQueryValueKey        0×01  是

NtDeleteKey          0×02  是

NtDeleteValueKey      0×03  是

NtRenameKey          0×04  是

NtReplaceKey        0×05  是

NtRestoreKey        0×06  是

NtSetValueKey        0×07  是

NtCreateFile        0×08  是

NtFsControl          0×09  是

NtSetInformationFile     0×0A  是

NtWriteFile          0×0B  是

NtWriteFileGather      0×0B  是    //和NtWriteFile共用一个过滤函数

NtCreateProcess        0×0D  是

NtCreateProcessEx      0×0E  是

NtCreateUserProcess      0×0F  是    //Only on Vista or later

NtCreateThread        0×10  是

NtCreateThreadEx      0×10  是    //和NtCreateThread共用一个过滤函数,for vista or later

NtOpenThread        0×11  是

NtDeleteFile        0×12  是

NtOpenFile          0×13  是

NtReadVirtualMemory      0×14  否

NtTerminateProcess      0×15  是

NtQueueApcThread      0×16  是

NtSetContextThread      0×17  是

NtSetInformationThread    0×18  否

NtProtectVirtualMemory    0×19  否

NtWriteVirtualMemory    0×1A  是

NtAdjustGroupToken      0×1B  否

NtAdjustPrivilegesToken   0×1C  否

NtRequestWaitReplyPort    0×1D  是

NtCreateSection        0×1E  是

NtOpenSecton        0×1F  是

NtCreateSymbolicLinkObject  0×20  是

NtOpenSymbolicLinkObject  0×21  否

NtLoadDriver        0×22  是

NtUnloadDriver        0×22  是    //和NtLoadDriver共用一个过滤函数

NtQuerySystemInformation  0×23  是

NtSetSystemTime        0×25  否

NtSystemDebugControl    0×26  是

NtUserBuildHwndList      0×27  是

NtUserQueryWindow      0×28  是

NtUserFindWindowEx      0×29  是

NtUserWindowFromPoint    0×2A  是

NtUserMessageCall      0×2B  是

NtUserPostMessage      0×2C  是

NtUserSetWindowsHookEx    0×2D  是

NtUserPostThreadMessage    0×2E  是

NtOpenProcess        0×2F  是

NtDeviceIoControlFile    0×30  是

NtUserSetParent        0×31  是

NtOpenKey          0×32  是

NtDuplicateObject      0×33  是

NtResumeThread        0×34  否

NtUserChildWindowFromPointEx 0×35  是

NtUserDestroyWindow      0×36  是

NtUserInternalGetWindowText  0×37  否

NtUserMoveWindow      0×38  是    //和NtSetParent共用一个过滤函数

NtUserRealChildWindowFromPoint 0×39 是    //和NtUserChildWindowFromPointEx共用一个过滤函数

NtUserSetInformationThread  0×3A  否

NtUserSetInternalWindowPos  0×3B  是    //和NtSetParent共用一个过滤函数

NtUserSetWindowLong      0×3C  是    //和NtSetParent共用一个过滤函数

NtUserSetWindowPlacement  0×3D  是    //和NtSetParent共用一个过滤函数

NtUserSetWindowPos      0×3E  是    //和NtSetParent共用一个过滤函数

NtUserSetWindowRgn      0×3F  是    //和NtSetParent共用一个过滤函数

NtUserShowWindow      0×40  是

NtUserShowWindowAsync    0×41  是    //和NtUserShowWindow共用一个过滤函数

NtQueryAttributesFile    0×42  否

NtUserSendInput        0×43  否

NtAlpcSendWaitReceivePort  0×44  是    //for vista or later

NtUnmapViewOfSection    0×46  是

NtUserSetWinEventHook    0×47  否

NtSetSecurityObject      0×48  是

NtUserCallHwndParamLock    0×49  是

NtUserRegisterUserApiHok  0×4A  否

猜你喜欢

转载自blog.csdn.net/qq1841370452/article/details/77917982