分析了一下360安全卫士的HOOK

R0层获取ShadowSSDT函数原始地址实例 本实例由VS2008开发,在提供了一套驱动开发框架的同时,又演示了如何获取Shadow SSDT表函数原始地址的办法。 主要函数:ULONG GetShadowSSDT_Function_OriAddr(ULONG index); 原理说明: 根据特征码搜索导出函数KeAddSystemServiceTable来获取Shadow SSDT基址,以及通过ZwQuerySystemInformation()函数获取win32k.sys基址,然后解析PE定位到Shadow SSDT在win32k.sys的偏移地址,并通过进一步计算来得到Shadow SSDT表函数的原始地址。 这里只测试了三个函数:(460)NtUserMessageCall、(475)NtUserPostMessage和(502)NtUserSendInput,具体使用时可以举一反三,网上完整的源代码实例并不太多,希望可以帮到真正有需要的朋友。 系统环境: 在WinXP SP3系统 + 瑞星杀毒软件 打印输出: [ LemonInfo : Loading Shadow SSDT Original Address Driver... ] [ LemonInfo : 创建“设备”值为:0 ] [ LemonInfo : 创建“设备”成功... ] [ LemonInfo : 创建“符号链接”状态值为:0 ] [ LemonInfo : 创建“符号链接”成功... ] [ LemonInfo : 驱动加载成功... ] [ LemonInfo : 派遣函数(DispatchRoutine) IRP 开始... ] [ LemonInfo : 派遣函数(DispatchRoutine) IRP Enter IRP_MJ_DEVICE_CONTROL... ] [ LemonInfo : 获取ShadowSSDT表 (460)NtUserMessageCall 函数的“当前地址”为:0xB83ECFC4,“起源地址”为:0xBF80EE6B ] [ LemonInfo : 获取ShadowSSDT表 (475)NtUserPostMessage 函数的“当前地址”为:0xB83ECFA3,“起源地址”为:0xBF8089B4 ] [ LemonInfo : 获取ShadowSSDT表 (502)NtUserSendInput 函数的“当前地址”为:0xBF8C31E7,“起源地址”为:0xBF8C31E7 ] [ LemonInfo : 派遣函数(DispatchRoutine) IRP_MJ_DEVICE_CONTROL 成功执行... ] [ LemonInfo : 派遣函数(DispatchRoutine) IRP 结束... ] [ LemonInfo : UnLoading Shadow SSDT Original Address Driver... ] [ LemonInfo : 删除“符号链接”成功... ] [ LemonInfo : 删除“设备”成功... ] [ LemonInfo : 驱动卸载成功... ] 立即下载

by: achillis

 

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

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解) 本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。 阅读详情

相关推荐

武汉理工大学数据结构综合实验——连连看游戏综合实践

文章目录实验目的主要仪器设备及耗材一、实验要求二、分析与设计(非线性结构)1.数据结构的设计2.核心算法设计一条直线消子两条直线消子三条直线消子初始化游戏地图搜寻路径提示和重排3.测试用例设计4.测试效果总结 实验目的 (1)线性结构实验目的 调研连连看游戏,了解连连看游戏的功能和规则等 掌握集成开发工具VS2019的使用和C++的基础编程 了解MFC框架 了解线性结构,掌握数组的遍历、消子和胜负判断等算法 了解企业软件开发过程,应用迭代开发思路进行项目开发,养成良好的编程习惯和培养软件工程化思维 .

mo_zhe的博客 7612

简单实现了下SSDT SHADOW HOOK

介绍: SSDT SHADOW HOOK可用于安全软件窗口保护、安全输入、截屏保护等。例如:挂钩NtUserFindWindowEx、NtUserGetForegroundWindow、NtUserBuildHwndList、NtUserQueryWindow、NtUserWindowFromPoint、NtUserSetParent、NtUserPostMessage、NtUserMes...

huobengle 842

【项目立项管理、项目整合管理】30天通过软考高项-第二天

①项目或阶段的概述;②范围目标、范围的评估标准,证明达到完⼯标准的证据;③质量目标、项目和产品质量的评估标准、相关核实信息和实际里程碑交付日期以及偏差原因;④成本目标,包括可接受的成本区间、实际成本,产⽣任何偏差的原因等;⑤最终产品、服务或成果的确认信息的总结;⑥进度计划目标,包括成果是否实现项目预期效益:如果在项目结束时未能实现效益,则指出效益实现程度并预计未来实现情况;

weixin_42520723的博客 1003

Windows内核新手上路2——挂钩shadow SSDT

Windows内核新手上路2——挂钩shadow SSDT          文章核心内容:安全软件窗口保护、安全输入、截屏保护的一些思路。挂钩NtUserFindWindowEx、NtUserGetForegroundWindow、NtUserBuildHwndList、NtUserQueryWindow、NtUserWindowFromPoint、NtUserSetParent、NtUser

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2028

从0死磕全栈之使用 VS Code 调试 Next.js 应用完整指南

调试目标推荐方式客户端组件VS Code + Chrome 调试器(pwa-chrome中间件(Middleware)同服务端方式静态生成(SSG)逻辑需在next build时调试,建议改用dynamic路由临时测试通过合理配置 VS Code 调试器,你可以像调试普通 Node.js 或前端项目一样,高效排查 Next.js 应用中的各类问题。🐞。

weixin_44058951的博客 1164

nRF52840 低功耗蓝牙开发指南:从硬件架构到物联网应用实战

本文深入解析nRF52840低功耗蓝牙芯片的硬件架构与开发实践,涵盖从开发环境搭建到BLE协议栈开发的详细指南。通过实战案例分享低功耗优化技巧,帮助开发者高效实现物联网应用,特别适合智能家居和工业场景。

d3e4f的博客 419

WINDBG u win32k!NtUserSendInput 出现 Memory access error处理方法()

WINDBG调试出现了这个问题... 请问何解? kd> u win32k!NtUserSendInput win32k!NtUserSendInput: bf8c31e7 ?? ??? ^ Memory access error in 'u win32k!NtUserSendInput' 这个意思是难道是WIN32K没有映射到内存? 解决方法: 1.首先使用 .P

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 5425

Claude Code 实战指南:用 AI 玩转终端编程,效率狂飙!

本文介绍了终端 AI 代理工具 Claude Code,涵盖常用命令、使用方法(如 init 初始化、权限配置、工作流程、上下文管理)、MCP 扩展工具及实战案例,展示其通过自然语言辅助开发的高效性与实用性。

个人技术 1万+

Hook Shadow SSDT

作 者: sislcb时 间: 2008-06-02,23:21链 接: http://bbs.pediy.com/showthread.php?t=65931网上很多文章都有关于SSDT的完整的实现,但是没有关于Shadow SSDT的完整实现,目前最好的文章是《shadow ssdt学习笔记 by zhuwg》,我这里的程序也很多参考了他的文章,在这里谢谢了。我这里给出一个hook shado

1478

傻瓜教程:使用GeoServer发布离线地图服务

一、离线地图下载 离线地图分为两种:一种叫“金字塔瓦片”数据,一种叫“矢量地图数据”。我们看的在线地图比如,百度,谷歌,高德等等网页上的地图,都是金字塔瓦片;另外一种是手机上用来导航的,比如高德地图APP,也可以下载离线地图数据,这个就是矢量的。 卫星影像地图都是金字塔瓦片,无矢量数据。 因此,我们所说的离线地图下载通常都是指离线地图金字塔瓦片数据下载。 离线地图金字塔瓦片搭建的离线地图服务分很多种:一般有WEB方式,TMS、WMTS/WMS等等,不同的应用有不同...

米兰的小码农的博客 1万+

eNSP网络构建—建立小型局域网

企业私有网络构建运维 实战案例——使用模拟器构建局域网络 案例分析 1.架构分析 (1)需求分析 本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之...

_ 4万+

分析了一下360安全卫士的hook(zt)

分析了一下360安全卫士的hook(zt)2010-6-3 18:36阅读(12) 分析了一下360的HOOK,通过直接hook KiFastCallEntry实现以所有系统调用的过滤。 我分析的版本如下: 主程序版本: 6.0.1.1003 HookPort.sys版本: 1, 0, 0, 1005 HookPort.sys的TimeStamp: 4A8D4AB8 简

lionzl的专栏 3505

OpenCode + Oh My OpenCode:打造你的终极AI编程团队(OpenCode新手入门指南)

本文详细介绍了开源终端AI编程助手 OpenCode 的完整配置教程 🖥️,从安装、AI模型配置到增强插件 Oh My OpenCode 的部署一应俱全。支持 Claude、ChatGPT、Gemini 多模型切换 🤖,还能实现多AI智能体协作开发。步骤清晰适合新手 📝,想在终端用AI写代码的开发者不要错过 ✨

XiaoqiangClub的博客 1万+

分析360安全卫士HOOK

分析了一下360安全卫士的HOOK(一)  分析了一下360的HOOK,通过直接hook KiFastCallEntry实现对所有系统调用的过滤。  我分析的版本如下:  HookPort.sys版本: 1, 0, 0, 1005  HookPort.sys的TimeStamp: 4A8D4AB8  简单说明:360把所有被hook的系统服务的过滤函数放在了一个表里,索引即对应的系统服务

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2184

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

分析了一下360安全卫士的 HOOK(二)——架构与实现(zt)

连接:http://blog.youkuaiyun.com/lionzl/article/details/7738182 上一篇的分析中漏掉了三个函数,现补上: NtSetSystemInformation0×24 ProcessNotify0×45 //这个并非Hook,只是HookPort安装的一个Notify KeUserModeCallback0×4B 这...

514

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

原文发表于百度空间及看雪论坛,2009-10-08 看雪论坛地址:https://bbs.pediy.com/thread-99128.htm 看时间,09年的国庆节基本上就搞这玩意儿了。。。========================================================================== 分析了一下360的HOOK,通过直接hook KiF...

weixin_30810583的博客 236

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

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

weixin_30606669的博客 339
上一篇: Open Source Vbootkit 2.0 Attack Tool for Windows 7
下一篇: WinXP/2k数字签名状态设置
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值