【旧文章搬运】分析了一下360安全卫士的HOOK

原文发表于百度空间及看雪论坛,2009-10-08

看雪论坛地址:https://bbs.pediy.com/thread-99128.htm

看时间,09年的国庆节基本上就搞这玩意儿了。。。
==========================================================================

分析了一下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     否

原文地址:https://www.cnblogs.com/achillis/p/10181817.html

时间: 2024-10-07 18:57:05

【旧文章搬运】分析了一下360安全卫士的HOOK的相关文章

【旧文章搬运】炉子给的SYSTEM_HANDLE_TYPE有点错误

原文发表于百度空间,2008-12-03========================================================================== 今天写程序,用ZwQuerySystemInformation枚举系统中的文件句柄时出了问题,死活一个都找不到,可是这明显不可能啊?于是用Process Explorer随便找了个文件句柄对象,然后看了它的OBJECT_TYPE,才发现文件句柄的类型索引应为28,而我用的是炉子给的那个SYSTEM_HANDL

【旧文章搬运】获取并修改PEB中的映像路径,命令行和当前目录

原文发表于百度空间,2008-7-24 当时对UNICODE_STRING的使用还有点问题,导致最终效果图中字符串被截断了========================================================================== 先从分析PEB开始吧.感觉分析这个东西,首先要把类型定义搞清楚,这个在Windbg里dt _PEB就可以了搞清楚定义主要是为了定位相关变量的偏移.PEB中的ProcessParameters部分就是进程的参数了,里面就有我们感兴

【旧文章搬运】遍历EPROCESS中的ActiveProcessLinks枚举进程

原文发表于百度空间,2008-7-25========================================================================== 前面对PEB的相关结构和其中的重要成员进行了分析和学习,现在开始真正进入内核,学习内核中的一些结构.这个EPROCESS结构在ntddk.h中有定义,但是并未给出具体的结构,因此要得到EPROCESS中一些重要的成员变量,只能通过偏移的方法,比如PID,ImageName等.这些偏移可以在Windbg中dt _

【旧文章搬运】ZwQuerySystemInformation枚举进线程信息

原文发表于百度空间,2008-10-15========================================================================== 很古老的东西了,写一写,权当练手吧.本来以为没什么难度,很科普很傻瓜的东西,但是写的时候还是遇到一些问题,进程信息正确,得到的线程信息总是不正确,后来分析了一下,发现这个ntdll sdk中定义的进程信息结构和线程信息结构都有点问题,可能它是来自<Win2000 Native API>一书,不适用于Wind

【旧文章搬运】ZwQuerySystemInformation枚举内核模块及简单应用

原文发表于百度空间,2008-10-24========================================================================== 简单说,即调用第11号功能,枚举一下内核中已加载的模块.部分代码如下://功能号为11,先获取所需的缓冲区大小ZwQuerySystemInformation(SystemModuleInformation,NULL,0,&needlen);//申请内存ZwAllocateVirtualMemory(NtCu

【旧文章搬运】Idle进程相关的一些东西

原文发表于百度空间,2009-05-13========================================================================== Idle进程和System进程一样,也是系统中的一个特殊进程,严格讲它不算是一个进程,但是它有自己的EPROCESS,并有一个IdleThread.若说它算一个进程,它的进程空间.句柄表.Token等却又和System进程一样,即共享了System的内核数据,所以不能以常理对待之.关于Idle进程的两个问题:

【旧文章搬运】Windows中全局钩子DLL的加载过程

原文发表于百度空间,2011-03-24========================================================================== 看雪上别人问的一个问题,顺便在此记录下吧~~ kd> kvn # ChildEBP RetAddr Args to Child 00 0012f7b8 77d2dbfb 0012f81c 00000000 00000008 kernel32!LoadLibraryExW+0x2 (FPO: [Non-Fpo]

Python文章相关性分析---金庸武侠小说分析

最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 小说集可以百度<金庸小说全集 14部>全(TXT)作者:金庸 下载下来.需要整理好格式,门派和武功名称之间需要有换行符,留意删除掉最后一行的空白区域.下载完成后可以用自己习惯的工具或程序做相应调整,因语料内容太长,博客里面不允许"堆砌",所以没复制上来,有需要的可以再联系. with open('names.txt') as f: data = [line.strip() for

Python文章相关性分析---金庸武侠小说分析-2018.1.16

在公司晨会对称过程中,好几次问到了了相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 小说集可以百度<金庸小说全集 14部>全(TXT)作者:金庸 下载下来.需要整理好格式,门派和武功名称之间需要有换行符,留意删除掉最后一行的空白区域.下载完成后可以用自己习惯的工具或程序做相应调整,因语料内容太长,博客里面不允许"堆砌",所以没复制上来,有需要的可以再联系. with open('names.txt') as f: data = [line.s