原文发表于百度空间及看雪论坛,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     否

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

  1. 【旧文章搬运】分析了一下360安全卫士的HOOK(二)——架构与实现

    原文发表于百度空间及看雪论坛,2009-10-14 看雪论坛地址:https://bbs.pediy.com/thread-99460.htm 刚发这篇文章的时候,因为内容涉及360的核心产品,文章被 ...

  2. 【旧文章搬运】PsVoid中IrpCreateFile函数在Win7下蓝屏BUG分析及解决

    原文发表于百度空间,2010-04-05========================================================================== 这也许是我 ...

  3. 【旧文章搬运】360安全卫士HookPort.sys完美逆向

    原文发表于百度空间,2009-11-08 这是第一次逆向一个企业级安全产品的核心代码,并完美替换原驱动正常工作============================================= ...

  4. 【旧文章搬运】深入分析Win7的对象引用跟踪机制

    原文发表于百度空间及看雪论坛,2010-09-12 看雪论坛地址:https://bbs.pediy.com/thread-120296.htm============================ ...

  5. 【旧文章搬运】再谈隐藏进程中的DLL模块

    原文发表于百度空间,2009-09-17========================================================================== 相当老的话 ...

  6. 【旧文章搬运】Windows句柄表分配算法分析(一)

    原文发表于百度空间,2009-03-30========================================================================== 阅读提示: ...

  7. 【旧文章搬运】Windbg+Vmware驱动调试入门(四)---VirtualKD内核调试加速工具

    原文发表于百度空间,2009-01-09========================================================================== 今天又想起 ...

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

    原文发表于百度空间,2008-12-03========================================================================== 今天写程序 ...

  9. 【旧文章搬运】PE感染逆向之修复(Serverx.exe专杀工具出炉手记)

    原文发表于百度空间,2008-10-4看雪论坛发表地址:https://bbs.pediy.com/thread-73948.htm================================== ...

随机推荐

  1. java通过反射获取bean字段注解@Column中的信息

    直接上代码吧: Field field; Field[] fields=clas.getDeclaredFields(); for (int i = 0; i <fields.length ; ...

  2. 使用Maven运行Java main的方法(转)

    使用Maven运行Java Main的方法(既Java Application项目),可以有如下方式解决: 1.将Maven项目导入到eclipse中,然后直接项目右键[Run As]->[Ja ...

  3. 新建JRapid项目(idea创建maven多模块项目)

    1.第一步,新建项目(Create New Project) 2.parent项目,不勾选“Crate from archetype”,直接单击“Next”. 3.groupid填写com.codin ...

  4. Java面试题集(151-180)

    摘要:这部分包括了Spring.Spring MVC以及Spring和其它框架整合以及測试相关的内容,除此之外还包括了大型站点技术架构相关面试内容. 151. Spring中的BeanFactory和 ...

  5. Linux下Tomcat VM參数改动

    不可行的方法 最初我直接改动catalina.sh, 将JAVA_OPTS变量加上了 -server -Xms1G -Xmx1G -XX:+UserG1GC 最初看起来没啥问题,可是当服务器运行几天后 ...

  6. HTML网页之进入站点口令脚本

    加入以下这个脚本在head标签中. <script language="JavaScript"> <!-- var password=""; ...

  7. hdu 1710 Binary Tree Traversals 前序遍历和中序推后序

    题链;http://acm.hdu.edu.cn/showproblem.php?pid=1710 Binary Tree Traversals Time Limit: 1000/1000 MS (J ...

  8. linux操作系统下查看某rpm包是32bit 还是x64bit的命令

    [root@hosta ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep l ...

  9. three.js 源代码凝视(十五)Math/Plane.js

    商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 -  本博客专注于 敏捷开发 ...

  10. 手动编译一个c文件(Win7下如何使用GCC编译器)

    主要参考这篇http://jingyan.baidu.com/article/c275f6bacc0126e33c756771.html 我没找到minGW的下载地址,而是直接用codeblocks自 ...