首页/新闻资讯/正文详情

VEH HOOK

发布时间:2026/9/27 6:45:56 来源:云帆数科 栏目:资讯中心
VEH HOOK
相关函数我们只需要用到 AddVectoredExceptionHandler 设置VEH异常捕获PVOID WINAPIAddVectoredExceptionHandler(_In_ ULONG FirstHandler,_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler);ULONG WINAPIRemoveVectoredExceptionHandler(_In_ PVOID Handler);PVOID WINAPIAddVectoredContinueHandler(_In_ ULONG FirstHandler,_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler);ULONG WINAPIRemoveVectoredContinueHandler(_In_ PVOID Handler);设置异常捕获后我们的callback就能处理异常_EXCEPTION_POINTERS 可以获得ExceptionRecordExceptionRecord中还有异常代码(ExceptionCode)和异常地址(ExceptionAddress)VEH HOOK原理1.将需要HOOK的函数入口内容改为0xcc中断如果你不了解中断向量表和int软中断你可以理解为设置了个断点这样运行时就会产生异常2.由我们的异常处理函数捕获后修改寄存器的值(原参数)然后将异常地址指令修改回原值设置TF单步返回EXCEPTION_CONTINUE_EXECUTION程序重新执行正确指令并且由于设置了TF程序可以在下一条指令继续进入异常处理3.在单步异常捕获中继续将上一条HOOK地址指令改回0xcc这样下次进入又会断下来让我们改参数注意这里的例子没有考虑多线程竞争。下面是个DLL你需要自己手动在DLL_PROCESS_ATTACH时运行VEH_HOOK_MessageBoxA();编译后随便写个EXE载入DLL调用MessageBoxA试试吧// Dll.cpp : 定义 DLL 应用程序的导出函数。//// Dll.cpp : 定义 DLL 应用程序的导出函数。//#includestdafx.h#includeDll.h#includestdio.h#defineBREAKPOINTLEN1PVOID MessageBoxA_Addr;BYTE MessageBoxA_New_INT;BYTE MessageBoxA_Ole_INT;DWORD dwNewProtectPAGE_EXECUTE_READWRITE;DWORD dwOldProtect;charlpText[]修改内容;LONG NTAPICALL_MessageBoxA(struct_EXCEPTION_POINTERS*ExceptionInfo){printf_s(异常地址 %p EIP %lx\r\n,ExceptionInfo-ExceptionRecord-ExceptionAddress,ExceptionInfo-ContextRecord-Eip);if(ExceptionInfo-ExceptionRecord-ExceptionCodeEXCEPTION_BREAKPOINT)//判断异常类型是否是断点{PVOID addrExceptionInfo-ExceptionRecord-ExceptionAddress;//获得异常地址if(addrMessageBoxA_Addr){//修改参数*(int*)((ExceptionInfo-ContextRecord-Esp)0x8)(int)lpText;*(int*)((ExceptionInfo-ContextRecord-Esp)0xc)(int)lpText;//DWORD EFlags ExceptionInfo-ContextRecord-EFlags;ExceptionInfo-ContextRecord-EFlags|0x100;//TF//恢复代码VirtualProtect((void*)addr,BREAKPOINTLEN,dwNewProtect,dwOldProtect);*(BYTE*)(addr)MessageBoxA_Ole_INT;//把首个字节地址改回去VirtualProtect((void*)addr,BREAKPOINTLEN,dwOldProtect,dwNewProtect);returnEXCEPTION_CONTINUE_EXECUTION;}returnEXCEPTION_CONTINUE_SEARCH;}if(ExceptionInfo-ExceptionRecord-ExceptionCodeSTATUS_SINGLE_STEP){//TF触发继续改成0xccULONG32 addr(ULONG32)ExceptionInfo-ExceptionRecord-ExceptionAddress;//获得异常地址if(addr(ULONG32)MessageBoxA_Addr8addr(ULONG32)MessageBoxA_Addr){VirtualProtect((void*)MessageBoxA_Addr,BREAKPOINTLEN,dwNewProtect,dwOldProtect);*(BYTE*)(MessageBoxA_Addr)0xcc;//把首个字节地址改回去VirtualProtect((void*)MessageBoxA_Addr,BREAKPOINTLEN,dwOldProtect,dwNewProtect);returnEXCEPTION_CONTINUE_EXECUTION;}returnEXCEPTION_CONTINUE_SEARCH;}returnEXCEPTION_CONTINUE_SEARCH;}voidVEH_HOOK_MessageBoxA(){AddVectoredExceptionHandler(0,CALL_MessageBoxA);//设置VEH异常捕获//AddVectoredExceptionHandler(1, HOOK_MessageBoxA); 如果设置了这个他永远无法恢复被HOOK的东西了因为刚恢复完又被这个改成CC然后无限循环//如果想在HOOK后继续下CC断点我觉得可以使用beginthread和Interlocked 判断是否被恢复被恢复执行完后再改成cc即可MessageBoxA_Addr(PVOID)MessageBoxA;//MessageBoxA地址MessageBoxA_Ole_INT*(BYTE*)MessageBoxA_Addr;//MessageBoxA 首个字节VirtualProtect((void*)MessageBoxA_Addr,BREAKPOINTLEN,dwNewProtect,dwOldProtect);*(BYTE*)(MessageBoxA_Addr)0xcc;//首个字节内容改成CC断点VirtualProtect((void*)MessageBoxA_Addr,BREAKPOINTLEN,dwOldProtect,dwNewProtect);}关于Eflags|0x100看下面的图程序状态字(标志寄存器)TF在8但是开头是从0开始的所以应该在从右向左第9个bit。

相关推荐

realme GT Neo6 全量包刷机教程:从原理到救砖实操指南
realme GT Neo6 全量包刷机教程:从原理到救砖实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:45:50

海康DS-K1F600U-D6E驱动部署全流程:从驱动安装到浏览器插件配置
海康DS-K1F600U-D6E驱动部署全流程:从驱动安装到浏览器插件配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:45:44

Agent 的账被小米算明白了:HySparse2 把百万上下文成本砍到 1/5
Agent 的账被小米算明白了:HySparse2 把百万上下文成本砍到 1/5

做 Agent 应用的人最近应该都有同一个感受:模型不贵,上下文贵。 一个 Agent 跑复杂任务,每调一次工具,可能就带回来一整页网页、一份文件、一长串执行日志。这些新内容要重新做预填充,历史记录还越攒越长。跑一个像样的… · 2026/9/27 6:45:32

2026最新网站策划的知识,告别模板丑站的7个核心细节
2026最新网站策划的知识,告别模板丑站的7个核心细节

2026最新网站策划的知识,告别模板丑站的7个核心细节 还在用那种五年没改过的模板网站?别怪客户觉得你家公司不专业,更别怪询盘少得可怜。说实话,现在老板们看网站,第一反应就是“这站是不是套的皮”。模板网站太丑不够用,这不仅仅是视觉问题,更是… · 2026/9/27 7:28:35

泉州专业网站建设避坑指南3个免费工具查漏洞
泉州专业网站建设避坑指南3个免费工具查漏洞

泉州专业网站建设避坑指南3个免费工具查漏洞 网站被黑挂马,后台密码改完还是进不去?别慌,先别急着删库重装。 很多泉州做外贸和电商的老板,找外包建站时只盯着价格和上线速度,忽略了最要命的安全基线。结果网站刚跑起来,首页就弹出了乱七八糟的博彩广… · 2026/9/27 7:28:35

CAS 属性释放策略之模式匹配(Pattern Matching):用正则提取与 Groovy 变换重组释放属性
CAS 属性释放策略之模式匹配(Pattern Matching):用正则提取与 Groovy 变换重组释放属性

后端认证鉴权单点登录 【免费下载链接】cas Apereo CAS - Identity & Single Sign On for all earthlings and beyond. 项目地址: https://gitcode.com/gh_mirrors/ca/cas 点击查看 免费下载 导读 在 Apereo CAS 中,属性释放策略(Attri… · 2026/9/27 7:28:29

SQL报错累积
SQL报错累积

一、SQL语句中字段名打错javax.servlet.ServletException: java.sql.SQLSyntaxErrorException: Unknown column b.depton in on clause 报错原因:在Scott数据库中 dept表中deptno字段名打错了String sql "select a.* ,b.dname from emp a join dept b on … · 2026/9/27 7:28:22

Mobile Next Mobile MCP开发者指南:如何扩展自定义工具和插件
Mobile Next Mobile MCP开发者指南:如何扩展自定义工具和插件

Mobile Next Mobile MCP开发者指南:如何扩展自定义工具和插件 【免费下载链接】mobile-mcp Model Context Protocol Server for Mobile Automation and Scraping (iOS, Android, Emulators, Simulators and Real Devices) 项目地址: https://gitcode.com/GitHub_T… · 2026/9/27 7:28:22

phpMyAdmin 自定义主题开发完全指南:theme.json 元数据、主题目录结构与配置项解析
phpMyAdmin 自定义主题开发完全指南:theme.json 元数据、主题目录结构与配置项解析

数据库后端 【免费下载链接】phpmyadmin A web interface for MySQL and MariaDB 项目地址: https://gitcode.com/gh_mirrors/ph/phpmyadmin 点击查看 免费下载 导读 phpMyAdmin 原生支持第三方主题,允许你在不修改核心代码的前提下,为 MyS… · 2026/9/27 7:28:16

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码