首页 > 其他分享 >系统调用之全局hook(项目)

系统调用之全局hook(项目)

时间:2024-10-23 09:49:05浏览次数:3  
标签:调用 修改 PTE PID hook 全局 eprocess 属性

所谓的全局hook就是通过修改物理页属性把系统DLL的写拷贝去除达到修改指令不会重新分配物理地址

通过WINDBG命令:!vad可以看到系统dll都是写拷贝属性

通过修改MessageBoxW来测试:

先把RING3程序的PID传给驱动层,通过驱动附加到进程修改PTE的R/W属性

//修改MessageBoxWPTE属性
case CODE_PTE_ATTRIBUTE:
	{
		//DbgBreakPoint();
		if (MmIsAddressValid(package->inData))
		{
			DWORD_PTR Address = *(DWORD_PTR*)package->inData;

			status = PsLookupProcessByProcessId(g_PID, &eprocess);
			if (NT_SUCCESS(status))
			{
				KeStackAttachProcess(eprocess, &apc);	//附加到进程

				ChangePteAttribute(Address);

				KeUnstackDetachProcess(&apc);
				ObDereferenceObject(eprocess);
			}
		}
		break;
	}

修改完成之后,RING3程序再进行自我hook,hook代码也需要调整:

首先需要把获取和修改内存属性代码注释掉,不然可能执行失败。

hook代码中不要自己申请内存作为跳转,不然别的程序访问不到导致异常,最好就找系统dll作为shellcode中转站。

看效果:

标签:调用,修改,PTE,PID,hook,全局,eprocess,属性
From: https://blog.csdn.net/wxy_xx1/article/details/143157786

相关文章

  • 前端vue-接口的调用和特殊组件的封装
                 ......
  • git hooks工具Yorkie 使用教程
    以下是使用Yorkie的详细教程,包括如何在npmpostinstall中自动运行npxyorkie。使用Yorkie的步骤1.安装Yorkie首先,在你的项目中安装Yorkie:npminstall--save-devyorkie2.配置package.json在package.json中添加hooks配置和postinstall脚本。你的package......
  • Yorkie 如何移除githooks 钩子
    要移除Yorkie设置的Githooks,你可以按照以下步骤进行操作:1.手动删除GitHooksYorkie将Githooks安装在项目的.git/hooks目录中。你可以手动删除这些hooks文件:打开终端,导航到你的项目目录。进入.git/hooks目录:cd.git/hooks删除相应的hook文件,例如pr......
  • Java调用第三方接口、http请求详解,一文学会
    系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据......
  • 【C#基础面试题 09.如何在C#中定义和调用函数?】
    09.如何在C#中定义和调用函数?文章目录09.如何在C#中定义和调用函数?本文重点内容摘要一、回答重点二、扩展知识1.函数的定义2.函数的调用1)在类内部调用:2)在类外部调用总结结语本文重点内容摘要A.回答重点B.扩展知识一、回答重点定义方法:编写方法的签名,包括返......
  • 使用ollama本地部署qwen2并api调用
    目录一、下载ollama二、安装qwen大模型 三、Api调用四、尝试apifox调用一、下载ollamaOllama是一个开源的、本地运行的AI聊天模型,允许在自己的设备上运行LLM,无需依赖云服务。它支持多种LLM。目前Ollamalibrary已经支持Qwen2,可以直接使用。首先安装ollama,访问官......
  • EasyExcel读取文件数据不能映射到实体的一种情况(对于链式调用实体的数据映射支持)
    除去在网上能搜到的由于表头配置不对、单元格格式影响、文件编码以及依赖版本之类的问题以外,还存在一个可能导致这个问题的原因,也是我现在遇到的,记录一下。先说结论,EasyExcel不支持映射数据到使用了链式调用的实体类上。我的情况是在接收Excel数据的实体类上添加了Lombok注解:@A......
  • C++可调用对象与function
    目录C++语言中可调用的对象不同类型可能具有相同的调用形式标准库function类型重载的函数与functionC++语言中可调用的对象函数函数指针lambda表达式bind创建的对象重载了函数调用运算符的类和其他对象一样,可调用的对象也有类型。例如,每个lambda有它自己唯一的(未命名)类类......
  • CANoe_C#如何调用CANoe的诊断
    官网说明书位置1.引言CANoe的简介CANoe是由VectorInformatikGmbH开发的一款强大工具,广泛应用于汽车网络的开发和测试。它支持多种协议,包括CAN、LIN、FlexRay和Ethernet(如SOME/IP和DoIP)。CANoe不仅提供了图形用户界面(GUI)来配置和监控网络,还支持通过脚本和自动化API进行扩......
  • 如何使用Python调用API数据
    为什么使用Python调用API数据?简洁的语法:Python的简洁性使得编写API调用代码变得直观易懂。强大的库支持:Python拥有如requests这样的库,极大地简化了HTTP请求的发送和响应的处理。数据处理能力:Python的数据处理库,如Pandas,使得数据的分析和处理变得简单。社区支持:Python社区庞大,......