• 【旧文章搬运】分析了一下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
Copyright © 2020-2023  润新知