原文发表于百度空间及看雪论坛,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 入门训练 Fibonacci数列

    import java.util.Scanner; public class Main{ public static void main(String[] args) { int maxn=10000 ...

  2. ios下读取jason中的nsstring时间并本地化成中文gmt时间显示上午下午

    https://developer.apple.com/library/ios/qa/qa1480/_index.html - (NSDate *)dateFromString:(NSString * ...

  3. android 按两次物理返回键退出程序

    <?xml version="1.0" encoding="utf-8"?> <!-- 定义当前布局的基本LinearLayout --> ...

  4. 【Todo】Java类面试题分析

    Java 面试中的重要话题 多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java 集合框架数组字符串GOF 设计模式SOLID (单一功能.开闭原则.里氏替换.接口隔离以及依赖反转)设 ...

  5. 基于MNIST数据的卷积神经网络CNN

    基于tensorflow使用CNN识别MNIST 参数数量:第一个卷积层5x5x1x32=800个参数,第二个卷积层5x5x32x64=51200个参数,第三个全连接层7x7x64x1024=3211 ...

  6. android 获取屏幕宽高 和 获取控件坐标

    一.获取屏幕宽高: (1). WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); int width ...

  7. C语言使用以及其它语言经常出的错误

    1. 计算优先级 i/*pi/(*p) //默认即用“()”花括号分隔即可 2.分号结束 ; ; if(i<j);{ //code } //分号结束必须看清楚 3.声明变量 ; ; //声明变量 ...

  8. jsp获取sina天气

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 细谈SetButtonInfo函数及其用途

    SetButtonInfo用于设置某个按钮,它的接口定义如下: 下面是它的几个接口函数说明: void CToolBar::SetButtonInfo(int nIndex, UINT nID, UI ...

  10. XHTML中button加入超链接以及使插入图片与屏幕一样大

    1.button加入超链接 (1)假设是在本页跳转到新页面.用 <span style="font-size:18px;"><input type="b ...