原文发表于百度空间及看雪论坛,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. Execption异常 手动和自动抛除异常

    package cn.zmh.Exception; /* * * try{ * 需要被检测的语句 * } * catch(异常类 变量){ * 异常的处理语句 * } * finally{ * 一定会 ...

  2. Centos常用命名

    1.关机 (系统的关机.重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours: ...

  3. 高仿微信实现左滑显示删除button功能

    在实际项目中删除列表中的某一项是很常见的功能.传统的做法能够使用长按监听器等,而如今流行的做法是左滑弹出删除button,微信,QQ等都是这么做的,以下做一个演示样例,代码例如以下: 主页面MainA ...

  4. 用 centrifugo 搭建 消息推送服务器 docker + rancher 搭建

    关于消息推送服务器 目前有很多第三方的开放成熟的推送服务.鉴于项目需要 我们项目需要自己搭建 自己的推送服务. 我们的推送应用场景 聊天消息 项目内部消息提醒 移动设备接受消息 应用到的相关软件工具知 ...

  5. 第04章-VTK基础(3)

    [译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934- ...

  6. struts开发&lt;在eclipse中配置struts. 一&gt;

    1.获取struts的jar包 1.1首先在http://struts.apache.org/download.cgi#struts23163这里下载 struts的文件包(选择struts-2.3. ...

  7. MVC上传文件并模拟进度条

    进度条样式和JS <style type="text/css"> .spa { font-size: 12px; color: #0066ff; } .put { fo ...

  8. SGU 194 Reactor Cooling 无源汇带上下界可行流

    Reactor Cooling time limit per test: 0.5 sec. memory limit per test: 65536 KB input: standard output ...

  9. python使用cx_oracle连接oracle数据库

    http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html---下载instantclient-basic-linux.x ...

  10. linux学习:进程间通信—管道

    1.进程间通信当中一种比較简单的方法是管道操作 /* ========================================================================= ...