KernelMode Callback UserMode

[翻译] Kernel Attacks through User-Mode Callbacks 前言 本篇属于前置知识,在后续的CVE复现中需要使用到。原文为英文,一边翻译一边记笔记了!尽量用中文描述的浅显易懂一些。 原文传送门 1. 背景知识 1.1 Win32k.sys介绍 ​ Win32k本质上由三个主要组件组成:图形设备接口(GDI)、窗口管理器(用户)和支持XP/2000和Longhorn (Vista)显示驱动程序模型的DirectX api(有时也被认为是GDI的一部分)。窗口管理器负责管理Windows用户界面,例如控制窗口显示、管理屏幕输出、从鼠标和键盘收集输入以及向应用程序传递 阅读详情

a snapshot of usrer mode call kernel mode, then kernel mode callback to usermode,
then user mode call kernel mode again, some malware use K callback U trick to
inject code to target process address space.

kd> kb L200
ChildEBP RetAddr  Args to Child             
f97e125c 8090e8b1 00000001 e13ff030 8179d040 nt!ObpCreateHandle
f97e1330 8090f81d e13ff030 00000000 00000000 nt!ObOpenObjectByPointer+0xa8
f97e138c 8082337b ffffffff 00020008 00000000 nt!NtOpenProcessTokenEx+0x92
f97e138c 7c95ed54 ffffffff 00020008 00000000 nt!KiFastCallEntry+0xf8
0078f4e8 7c9517b4 7c968543 ffffffff 00020008 ntdll!KiFastSystemCallRet
0078f4ec 7c968543 ffffffff 00020008 00000200 ntdll!ZwOpenProcessTokenEx+0xc
0078f578 7c94a9be 0078f5a4 7c80c78c 0078fa20 ntdll!RtlFormatCurrentUserKeyPath+0x4b
0078f5b0 7c80c775 02000000 0078f5ec 00000000 ntdll!RtlOpenCurrentUser+0x13
0078f9f4 7c80c84e 0078fa20 00000000 7c80c78c KERNEL32!OpenRegKey+0x3a
0078fc3c 7c8060d1 7c831230 001656e8 00000050 KERNEL32!GetUserInfoFromRegistry+0x40
0078fc64 7c8213eb 00000804 00001014 7c831230 KERNEL32!NlsGetCurrentUserNlsInfo+0x202
0078fc90 7c831218 00000804 00001014 00000820 KERNEL32!GetUserInfo+0x21
0078fd7c 74b0ee71 00000804 00001014 0078fdb8 KERNEL32!GetLocaleInfoW+0x1321
0078fde4 630947fb 00000400 630963c0 00000000 USP10!ScriptRecordDigitSubstitution+0x7f
0078fe9c 63094878 fa092bbc 00000004 00000000 LPK!ReadNLSScriptSettings+0x6b
0078feb4 63093376 01010058 0078ffdc 00000002 LPK!LpkStringAnalyse+0x46
0078ff0c 77beecd8 01010058 0078ffdc 00000002 LPK!LpkGetTextExtentExPoint+0x12c
0078ff48 77bd8175 01010058 0078ffdc 00000002 GDI32!GetTextExtentPointWInternal+0x183
0078ff64 77e5878e 01010058 0078ffdc 00000002 GDI32!GetTextExtentPointW+0x18
0078ff90 7c95ec9e 0078ffa8 0000003c ffffffff USER32!__ClientGetTextExtentPointW+0x3c
0078ffe0 75985001 75988c40 00000000 00000022 ntdll!KiUserCallbackDispatcher+0x2e
f97e1660 8091735b f97e1730 f97e171c 00000001 nt!KiCallUserMode+0x4

f97e16b8 bf933840 00000049 f97e1750 0000003c nt!KeUserModeCallback+0x8f
f97e196c bf9391ac 01010058 bf9b2840 00000002 win32k!xxxClientGetTextExtentPointW+0x141
f97e1990 bf9393bc bc630938 f97e19ac bc630938 win32k!xxxTooltipGetSize+0x68
f97e19b4 bf939602 bc630938 bc630938 bc630938 win32k!xxxShowTooltip+0x5d
f97e19d4 bf811027 bc630938 00000001 bc630938 win32k!xxxTooltipHandleTimer+0x79
f97e1a38 bf8a3d2e bc630938 00000118 00000001 win32k!xxxTooltipWndProc+0xb1
f97e1a68 bf82609a f97e1aa4 00000022 0078fff4 win32k!xxxDispatchMessage+0x1ce
f97e1d30 bf829254 bf9b30e0 00000001 f97e1d54 win32k!xxxDesktopThread+0x3de
f97e1d40 bf87f76c bf9b30e0 f97e1d64 0078fff4 win32k!xxxCreateSystemThreads+0x6a
f97e1d54 8082337b 00000000 00000022 00000000 win32k!NtUserCallOneParam+0x23
f97e1d54 7c95ed54 00000000 00000022 00000000 nt!KiFastCallEntry+0xf8
0078ff90 7c95ec9e 0078ffa8 0000003c ffffffff ntdll!KiFastSystemCallRet
0078ffe0 75985001 75988c40 00000000 00000022 ntdll!KiUserCallbackDispatcher+0x2e
0078ffe8 00000000 00000022 00000004 00000000 winsrv!NtUserCallOneParam+0xc 

by john lan 

远程调用内核接口(remote call kernel) RCK(remote call kernel 缩写)为远程调用内核, 其通讯协议为自定义数据流协议。 RCK 负责远程调用过程中的数据组织, 并不关心实际物理通讯协议, 实则属于逻辑层通讯 协议。 RCK 通讯槽接口(RCKSlot)负责数据接收和发送, 属于通讯的适配层, 由第三方来实现 实际的数据传输接口。 阅读详情

相关推荐

Linux Kernel设置irq affinity选项的callback

dmesg 日志

内核中获取HKCU的路径

为什么80%的码农都做不了架构师?>>> ...

weixin_34132768的博客 366

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

转一个win32k回调实现自定义r3函数的方法 教主威武

<br />ring0调用ring3早已不是什么新鲜事,除了APC,我们知道还有KeUserModeCallback.其原型如下:<br />NTSTATUS<br />KeUserModeCallback (<br />     IN ULONG ApiNumber,<br />     IN PVOID InputBuffer,<br />     IN ULONG InputLength,<br />     OUT PVOID *OutputBuffer,<br />     IN PULONG O

Sunny_wwc的专栏 2882

实战指南!基于STM32的智能环境监测系统(附完整代码+硬件设计+云端对接)

本文提供了一份基于STM32的智能环境监测系统完整实战指南。详细讲解了从硬件选型、电路设计、传感器驱动到数据采集、本地报警逻辑,以及通过ESP8266模块对接OneNET物联网平台实现数据上云的全过程。项目涵盖嵌入式开发与物联网应用核心技能,并提供了多种手机端数据展示方案,非常适合课程设计或毕业设计参考。

weixin_29193359的博客 355

【多模态大模型】GLIP:零样本目标检测新范式与视觉语言理解

本文深入解析了多模态大模型GLIP在零样本目标检测和视觉语言理解领域的创新应用。GLIP通过统一目标检测与自然语言理解任务,实现了零样本学习能力,能够精准定位复杂文本描述对应的图像区域。文章详细介绍了GLIP的核心技术、数据策略及实战表现,并对比了与其他多模态模型的差异,为AI视觉理解提供了新范式。

weixin_29186249的博客 264

【原创】从内核创建用户态线程

http://bbs.pediy.com/showthread.php?p=1304480#post1304480

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

深入解析组合逻辑环(combinational loop)的成因与解决方案

本文深入解析了数字电路设计中组合逻辑环(combinational loop)的成因与危害。通过边沿检测和中断轮询(round_robin)仲裁器等实例,揭示了代码如何意外形成环路,并对比了插入触发器、重构逻辑以及状态机思维三种核心解决方案,帮助硬件工程师从根本上避免这一常见设计陷阱,确保电路稳定可靠。

weixin_28278377的博客 315

内核模式到用户模式的回调函数----这篇文章是十年前国外大牛写的

内核模式到用户模式的回调函数http://www.nynaeve.net/?p=200        NTDLL 拥有一些特定的函数被内核用来代表用户模式执行特定的功能。尽管理解这些函数对于特定的功能(比如用户模式APC)的底层实现的理解是有用的,这些函数提供的功能非常的简单。        下面是一些NTDLL导出的,内核用于与用户模式通讯的函数: 1.KiUserExceptionDis

商少 9128

【超详细】数据分析笔试题分享,可以收藏后仔细阅读_数据分析岗位笔试题目

这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。15、在某座城市出现了某种流行病,且已知某座城市男女人数相同,男性患该病的概率为5%,女性为0.25%,现已知该城市的小明得了此病,请问小明为男性的概率是() B。D项,使用方差作为特征评分标准,如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大,因此在构造特征过程中去掉方差小于阈值的特征。LTV,用户生命周期价值,是产品从用户获取到流失所得到的全部收益的总和。

2401_89824744的博客 950

《算法第四版》学习心得一——怎么学算法

 一、算法的两个核心 算法的核心内容实际上有两个: 算法的概念和思路。 算法的编程实现。 两者相互关联影响,缺一不可。 不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。 二、学算法需要什么基础 首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...

illikang的博客 3910

HookLib²完全指南:纯C打造的终极函数拦截库,支持用户态与内核态

HookLib是一款采用纯C语言结合NativeAPI开发的函数拦截库,具备用户态(UserMode)和内核态(KernelMode)双重支持能力,为开发者提供了强大且灵活的函数钩子解决方案。无论是进行系统级开发调试,还是构建复杂的拦截逻辑,HookLib都能以其高效稳定的特性满足需求。 ## 🚀 核心功能与优势 ### 双模式支持:用户态与内核态全覆盖 HookLib最显著的特点是同时支持

gitblog_00854的博客 376

深信服技术认证“SCCA-C”划重点:信服云托管云

该认证包括云数据中心基础、云计算基础、云计算关键技术、云计算交付和运维体系、云计算技术商业应用、信服云托管云、深信服超融合HCI、深信服桌面云aDesk、深信服分布式存储EDS、深信服应用交付AD。学习并获得SCCA-C认证后,可以具备深信服产品功能原理与实践,能够根据业务需求,协助完成云产品方案落地与实施;能够根据业务需求,完成深信服云产品的部署和管理的基本工作。为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。

sangfor_edu的博客 615

Windows操作系统管理进程和线程:内核模式和用户模式

根据前面的介绍,NT内核会把操作系统的代码和数据映射到系统中所有进程的内核空间中。这样,每个进程内的应用程序代码便可以很方便地调用内核空间中的系统服务。这里的“很方便”有多层含义,一方面是内核代码和用户代码在一个地址空间中,应用程序调用系统服务时不需要切换地址空间,另一方面是整个系统中内核空间的地址是统一的,编写内核空间的代码时会简单很多。但是,如此设计也带来一个很大的问题,那就是用户空间中的程序指针可以指向内核空间中的数据和代码,因此必须防止用户代码破坏内核空间中的操作系统。怎么做呢?答案是利用权限控制来

人邮异步社区 4461

【TC397第2篇】TC397 EB MCAL开发指南:ADS MCAL Demo集成深度解析

通过本文的指导,我们完成了TC397 EB MCAL与ADS的深度集成,并成功运行了一个简单的MCAL Demo。这个案例不仅帮助我们理解了MCAL在实际开发中的应用,同时也展示了ADS作为一个强大的开发工具在嵌入式系统开发中的优势。在接下来的系列文章中,我们将进一步探讨MCAL的高级应用、优化技巧以及更多实用的开发案例。敬请关注,共同探索TC397 EB MCAL开发的更多精彩!

一直在水些技术小文 453

车间数据孤岛终于破了!C#上位机+MQTT打通产线与MES,数据延迟从小时级降到秒级

本文针对工业上位机开发中常见的车间数据与企业管理系统(MES)割裂问题,提出基于C#和MQTT协议的完整解决方案。通过EMQX MQTT Broker实现数据实时双向传输,将质量追溯时间从2小时缩短至10秒,生产计划自动下发,实现秒级数据延迟。方案采用分层解耦架构,支持设备更换和系统升级,核心优势包括低延迟、高可靠性和易扩展性。文章详细介绍了MQTT协议选型理由、整体架构设计、技术选型(EMQX Broker和MqttNet客户端),并提供了C#实现代码和部署流程。该方案已在实际产线验证,可有效解决&quo

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 484

windows消息处理过程及消息钩子

应用层发消息: 发送消息过程 SendMessage(user32.dll)-&gt;SendMessageWorker,先检查有没有hook消息钩子,有的话调用CsSendMessage,进入消息钩子过滤函数。 没有的话,看是不是系统消息,是的话在Message表中找到对应msg id的索引值,通过索引值在在gapfnScSendMessage数组中找到对应的消息处理函数 如果是NtUser...

研究源码的最底层,只持有正确的仓位 3801

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Windows内核新手上路3——挂钩KeUserModeCallBack

Windows内核新手上路3——挂钩KeUserModeCallBack 1.     简介 在Windows系统中,提供了几种方式从R0调用位于R3的函数,其中一种方式是KeUserModeCallBack,此函数流程如下: nt!KeUserModeCallback->nt!KiCallUserMode->nt!KiServiceExit->ntdll!KiUserCallbackDis

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Rtl系列函数

转:http://blog.sina.com.cn/s/blog_4a1acc7f0100cfuf.html        http://blog.sina.com.cn/s/blog_4a1acc7f0100cfui.html         375  170 000375D9 RtlAbortRXact         376  171 00029E38 RtlAbsoluteToSelf...

huanongying131的博客 2841

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

远程代码注入,并调用相关call

目的 在目标程序远程注入代码,并执行注入的调用代码。

jack533的专栏 2873

linux kernel Internal error: Oops: 5 [#1] PREEMPT SMP ARM

[ 307.260009@0] [ 307.267846@0] DEBUG:handle_hc_chhltd_intr_dma:: XactErr without NYET/NAK/ACK [ 307.267846@0] [ 307.276537@0] DEBUG:handle_hc_chhltd_intr_dma:: XactErr without NYET/NAK/ACK

Sam 的专栏 2万+

Linux kernel 同步机制(下篇)

在上一部分,我们讨论了最基本常见的几类同步机制,这一部分我们将讨论相对复杂的几种同步机制,尤其是读写信号量和RCU,在操作系统内核中有相当广泛的应用。读写信号量(rw_semaphore...

内核工匠 1372

Win7下过盛*大Hack*Shield的部分驱动保护

在Win7下很多XP的驱动都不适用了!前几个月研究了一下盛*大游戏的泡泡*堂的Hack*Shield驱动保护发现Hook了十多个内核函数,Ring 3和 Ring 0的双重保护,同时加了Themida的壳。 现在暂时发现钩住了以下函数: hook NtReadVirtualMemory hook NtWriteVirtualMemory Hook NtClose Hook NtProte

o6108的专栏 6501

Linux学习笔记之callback

callback function 刚入职之时,小弟曾经受师兄指导写过一个回调,最近又回想到回调,思来想去,对回调的概念百思不得其解,困扰了好久。小弟愚钝,在查看了很多资料之后依然疑惑重重,犹如雾里看花终隔一层。如此两天,如骨在喉,实在是不吐不快。终于按奈不住心中躁动,拉起几位小伙伴深夜畅谈,终于拨开迷雾见明月。小弟谈谈自己的理解,希望对感兴趣的小伙帮能有所帮助;如果小弟有理解不妥的地方,更希望...

small_a_black的博客 1756

驱动里执行应用层代码之KeUserModeCallBack,支持64位win7(包括WOW64)

by Fanxiushu            2014-07-26 在驱动层(ring0)里执行应用层(ring3)代码,这是个老生常谈的技术,而且方法也挺多。 这种技术的本质:其实就是想方设法在驱动层里把应用层代码弄到应用层去执行。 比如在APC异步调用中,KeInsertQueueApc,KeInitializeApc等函数中可设置一个在ring3层执行一个回调函数,这样就可以

fanxiushu的专栏 1万+
上一篇: 停止ICS防火墙
下一篇: SEH (Structured Exception Handling) Security Changes in XPSP2 and 2003 SP1
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值