Hook KiUserExceptionDispatcher参数指针错误的问题

Win10 X64 HOOK KiUserExceptionDispatcher Win10 X64 HOOK KiUserExceptionDispatcher HOOK.ASM extrn NewKiUserExceptionDispatcher : proc extrn OrgKiUserExceptionDispatcher : proc extrn OldKiUserExceptionDispatcher : proc .data .code ;hook public MyKiUserExceptionDispatcher MyKiUserExceptionDi 阅读详情

跟了一个晚上,终于解决了

大概要实现的是用这个函数替换ntdll中的KiUserExceptionDispatcher,实现方法如下:

 

参考:http://www.longene.org/techdoc/0359381001224576966.html

这样看着只是通过KiUserExceptionDispatcher来调用ZwContinue与Zw...函数,看着很正常,几乎网上所有代码都是这个形式来写的(不知道他们是怎么通过的- -!)

运行时就出问题了,当有异常发生时 要么就是在RtlDispatchException里面不出来也没反应,要么就是一直循环的调用他,这个函数是R3异常处理的入口点,只要这里面发生异常还是调用他 - -!

在正常情况下,进入函数第一条指令时:

ESP=返回地址,ESP+X才是参数

..........................................................................

跟到刚刚才发现,跑到函数入口点时[ESP]=第一个参数,[ESP+4]=第二个参数,根本没有返回地址

而自己写的这个函数,永远是[ESP+4]=第一个参数,[ESP+8]=第二个参数.. - -! 这样不错才惨了...

----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

这是KiUserExceptionDispatcher,异常无数,但从没见过执行到77C7014A, ZwContinue直接进入内核了,而进ZwRaiseException后,估计程序就崩了,RtlRaiseException这里也是没见执行过的,- - 都摆设..

-----------------------------------------------------------------------------------------------------

问题点找着了,翻遍了GG BING也没见有说无返回地址参数问题,最后为了省事把他当作跳板转到其它函数中处理(没有汇编基础的感觉这方法是最简单*_*-)

 

哎,真走了不少弯路,当时以为是参数顺序错了..结果_估计_是该函数是由内核空间转入用户空间入口,则无返回地址入栈,网上文章也没细看,问题解决百岁!

---------------------------------------------------------------------------------------------------------------------

注:

RtlDispatchException在Ntdll中未导出,需按各个版本处理该函数地址

处理如下:

经过上面的函数处理,能够捕捉到的异常貌似都能够通过了,然后就能在程序中制造出种种异常,一一奸杀,=_=

Windows底层开发实战:C/C++手写PE加载器与Native API深度解析 PE文件结构是Windows可执行程序的基石,理解其DOS头、NT头、节表与重定位机制,是掌握系统级编程的关键入口。本文从PE加载原理出发,深入讲解如何绕过LoadLibrary,用C语言手写PE加载器,结合NtWriteFile等Native API实现无CRT依赖的原生调用。内容覆盖VirtualAlloc内存分配陷阱、SEH异常链在TEB中的物理布局、x64重定位计算逻辑等硬核细节,突出Windows驱动开发、工业控制软件、安全工具开发等对确定性与可控性的严苛要求,最终落点于真实调试场景下的Windb 阅读详情

相关推荐

Claude Code与Codex深度对比:终端AI编程助手选型指南

大语言模型驱动的AI编程助手已成为开发者提效的重要工具,它们基于自然语言交互,自动完成代码生成、重构和调试。这类工具依赖上下文理解与工程实践,不同产品在交互模式、模型接入和任务执行上差异显著。从终端CLI编程场景出发,梳理AI编程助手的设计原理与技术价值,重点对比Anthropic Claude Code与OpenAI Codex在安装配置、上下文管理、第三方模型接入(如DeepSeek)以及高频报错处理上的实际表现。无论你是新手还是资深工程师,理解这些差异有助于根据自身工作流选择合适工具,或在两者间灵活切

weixin_33755649的博客 3279

初探windows异常处理

windows系统里,为了保证系统内核的强壮和稳定,为了保证用户程序的强壮和稳定,提供了异常处理机制,来帮助程序员和系统使用人员处理异常。如果想要更加深入的掌握操作系统,异常处理的知识是必不可少的,不仅如此,软件调试也与异常处理息息相关。 异常执行流程 CPU检测到异常 -> 查中断表执行处理函数 -> CommonDispatchException -> KiDispatchException -> KiUserExceptionDispatcher -> Rtl

hongduilanjun的博客 1522

全网最详细单细胞保姆级分析教程(一) ---pbmc

通过观察热图,可以了解不同细胞在主成分上的分布情况,以及主成分与细胞特征之间的关系。数据归一化是数据分析中的常见步骤,旨在消除数据集中不同特征之间的量纲差异,并使它们在相同的尺度上进行比较。函数会根据指定的主成分维度计算数据点之间的距离,并找到每个数据点的邻居。函数会根据数据点之间的相似性将其分组到不同的聚类中。数据缩放是数据分析中的常见步骤,旨在将数据的特征值调整到相似的范围,以避免某些特征对分析结果的过度影响。通过可视化维度载荷,可以了解哪些特征对主成分的形成起到了重要作用,以及不同特征之间的相关性。

ZxVSaccount的博客 6708

当出现ntdll!KiUserExceptionDispatcher时,如何用windbg 定位正确堆栈

某些情况下,当程序崩溃时异常没有被程序捕获,就会出现ntdll!KiUserExceptionDispatcher这种情况,这时就需要通过其他方式获取产生异常时的正确堆栈 下面为KiUserExceptionDispatcher 函数和一些相关函数写的伪代码。这个函数在NTDLL.DLL中,它是异常处理执行的起点 [cpp] view plainco

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

海康SDK实战:如何从PS流中提取H264裸流并实现前端播放(附完整代码)

本文详细介绍了如何利用海康SDK从PS流中提取H264裸流,并构建无插件前端播放的完整链路。通过解析PS流结构、提取H264 ES流,结合WebSocket实时传输与WFS.js前端播放器,实现了低延迟、高可控性的视频流处理方案,为开发者提供了从数据源到前端渲染的实战代码与清晰指南。

weixin_29051811的博客 477

一文搞懂什么是OTA(空中升级)

OTA(Over-The-Air,空中升级)是一种通过无线通信技术实现远程更新设备固件或软件的方法。这项技术广泛应用于现代物联网(IoT)设备、智能手机、汽车、嵌入式系统等领域,提供了一种无需物理连接的便捷更新方式。OTA更新的核心在于使设备能够自动、可靠、安全地从远程服务器获取和应用更新,改善设备性能、添加新功能或修复安全漏洞。

不积跬步无以至千里 7万+

Windows异常学习笔记(三)—— VEH&SEH

Windows异常学习笔记(三)—— VEH&SEH前言要点回顾分析 KiUserExceptionDispatcher分析 _RtlDispatchException_RtlCallVectoredExceptionHandlersVEH(向量化异常处理)实验:自定义VEH总结:VEH异常处理流程SEH(结构化异常处理)分析 RtlDispatchException实验:构造自定义SEH总结:SEH异常处理流程 前言 一、学习自滴水编程达人中级班课程,官网:https://bcdaren.com

lzyddf的博客 2323

Visionpro 使用CogPMAlignTool工具提取匹配轮廓点

【代码】Visionpro 使用CogPMAlignTool工具提取匹配轮廓点。

weixin_43947315的博客 2093

Windows异常分发函数---KiUserExceptionDispatcher

Windows异常分发函数---KiUserExceptionDispatcher

weixin_46246967的博客 601

mbedtls | 01 - 移植mbedtls库到STM32的两种方法

一、mbedtls 开源库 1. mbedtls是什么 Mbed TLS是一个开源、可移植、易于使用、代码可读性高的SSL库。可实现加密原语,X.509证书操作以及SSL / TLS和 DTLS 协议,它的代码占用空间小,非常适合用于嵌入式系统。 mbedtls遵循 Apache 2.0 开源许可协议,目前由 TrustedFirmware 维护(Linaro主持的一个治理开放社区项目),在Github上已收获 2.6k star,目前Github上发布的最新版本为 2.24.0 版本,开源仓库地址为:

Mculover666的博客(嵌入式) 1万+

从 CDS 接口到 ABAP 运行时,深入理解 SAP RAP Custom Entity

CDS Custom Entity 是一种非 SQL、瞬态的 CDS 实体,不依赖 HANA SQL 读取数据,而是通过 ABAP 类实现查询逻辑(如 RFC、OData、BAPI 等)。它在 CDS 层定义数据契约(字段、键、关联、注解),由 @ObjectModel.query.implementedBy 指向实现 IF_RAP_QUERY_PROVIDER~SELECT 的类,真正执行数据获取。适用于无法用 SQL 表达的数据源,如远程系统或 API。其核心是“接口 + 实现”模式,运行时由 RAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 171

Windows异常学习笔记(二)—— 内核异常处理流程&用户异常的分发

Windows异常学习笔记(一)—— CPU异常记录前言软件模拟异常实验:分析模拟异常第一步:编译并运行以下代码第二步:查看汇编代码第三步:分析 __CxxThrowException第四步:分析 RaiseException 前言 一、学习自滴水编程达人中级班课程,官网:https://bcdaren.com 二、海东老师牛逼! 软件模拟异常 实验:分析模拟异常 第一步:编译并运行以下代码 ...

lzyddf的博客 2475

OpenClaw人人养虾:接入Synology Chat

Synology Chat 是群晖 NAS(Network Attached Storage,网络附属存储)内置的即时通讯应用。

王国平的博客 780

x64 hoo KiUserExceptionDispatcher 参数

0:000> g Breakpoint 0 hit ntdll!KiUserExceptionDispatch: 00000000`78ef3a30 48b8809e008001000000 mov rax,offset ACTIVE_1!Detour_KiUserExce

爱杀之爪的矩阵 4455

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VEH和SEH

文章目录VEHKiUserExceptionDispatcher函数分析代码实现添加VEH异常处理函数VEH异常的处理流程SEHExceptionListRtlDispatchException函数的执行流程代码实现添加SEH异常处理函数SEH异常的处理流程 VEH 当用户异常产生后,内核函数KiDispatchException并不是像处理内核异常那样在0环直接处理,而是修正3环EIP为KiUs...

鬼手的博客 4810

精雕软件(JDpaint) 5.5 绿色版

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

2.内核异常处理流程

用户层异常与内核层异常 异常可以发生在用户空间,也可以发生在内核空间。 无论是CPU异常还是模拟异常,是用户层异常还是内核异常,都要通过 KiDispatchException函数进行分发,这个函数比较复杂。 VOID KiDispatchException ( ExceptionRecord, ExceptionFrame, TrapFrame, PreviousMode, First...

My classmates 1584

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

用户层和内核层异常的处理流程

文章目录内核层异常的处理流程用户层异常和内核层异常KiDispatchException函数详解RtlDispatchException函数的执行流程用户层异常的处理流程用户异常的处理流程 内核层异常的处理流程 之前已经了解过异常处理机制的执行流程:异常记录 异常分发 异常的处理。这次我们学习一下内核异常的分发与处理。 用户层异常和内核层异常 异常可以发生在用户空间,也可以发生在内核空间。无论是C...

鬼手的博客 2621

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

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

商少 9128

SEH(结构化异常处理)

内容回顾: 当用户异常产生后,内核函数KiDispatchException并不是像处理内核异常那样在0环直接处理,而是修正3环EIP为KiUSerExceptionDispatcher函数后就结束了。 这样,当线程再次回到3环时,将会从KiUserExceptionDispatcher函数开始执行。 KiUserExceptionDispatcher会调用RtlDispatchException函数来查找并调用异常处理函数,查找的顺序: 先查全局链表:VEH 再查句柄链表:SEH 它是与线程有关的,

寻梦&之璐 6019

WINDBG 查崩溃

注意看“Following XXX”,字面意思是接下来的段可以错了,程序在这里崩溃了的意思,因为是从下往上走的,所以“Following XXX”上方的内容就是崩溃后的东西,而“Following XXX”下方的内容就是导致崩溃的“原因”,越接近“Following XXX”的越代表有可能是导致崩溃的直接模块,但是这不一定。符号是可以定位到具体函数,甚至具体错在哪一行代码的。b) 当进程没有自保护或者没有反调试时,在input框输入g,回车,即可打开进程,此时如果进程发生崩溃,会被立即捕捉到。

八零点点 715

Reactos 第 8 章 结构化异常处理 — 8.2 系统空间的结构化异常处理

摘要: 本节剖析ReactOS内核态(Ring 0)的异常处理机制,重点揭示系统空间结构化异常处理(SEH)的三层架构:硬件入口层(IDT陷阱桩)、Trap处理层(保存现场)和异常分派层(KiDispatchException核心枢纽)。系统通过KiDispatchException实现异常路由,根据PreviousMode和FirstChance决定处理路径(内核态handler链/用户态分派器/调试器/蓝屏),并详细解析了CONTEXT与KTRAP_FRAME的转换关系。内核SEH最终处理所有硬件tra

大坡3D软件开发 225

规避网络游戏的外挂检测机制

译注:这是一篇发表在rootkit.com上的讨论怎么规避warden检测机制的文章,原文在这里。作者Darawk是D2的黑客。之前,暴雪通过Module32First/Module32Next对D2 1.11中的外挂进行了第一次打击,很多使用外挂的玩家尤其是netters EasyMap的玩家损失惨重。黑客们开始思考Anti-warden的问题,这篇文章就是一些这方面的尝试。后来,在Daraw

Fido 5233

Windows11_22H2下的异常机制分析

Windows11_22H2异常分析

lkylky123789的博客 2590
上一篇: 关于VB使用ActiveX.Exe创建多线程程序的奇怪问题
下一篇: 一个SetEvent 激活一个WaitForSingleObject
silencenet
博客等级 码龄19年 36粉丝 29原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值