• c++驱动源码文件目录

  • 易语言调用驱动示例代码

  • Windows驱动程序是一种特殊的系统程序,它可以访问和控制系统资源,并且不受其他应用程序的限制。它可以获取系统资源,进行更深入的系统控制,包括读取其他进程的内存以及修改其他进程内存。Windows驱动程序可以被用于不少有用的操作,例如实现系统的高级安全性保护、增强系统的性能、自动执行某些指定的任务,甚至还可以实现一些资源的共享。其中,读取其他进程内存以及修改其他进程内存是Windows驱动程序的一项重要功能。Windows驱动程序可以使用系统API来读取其他进程的内存,也可以使用系统API来修改其他进程的内存。使用系统API来读取其他进程的内存,可以获取进程的信息,例如进程的句柄、线程的ID、进程的ID,以及系统提供的其他信息。使用系统API来修改其他进程的内存,可以更改进程的状态,例如修改进程的优先级,改变进程的代码段和数据段,以及系统提供的其他功能。Windows驱动程序可以使用系统API来读取其他进程的内存以及修改其他进程的内存,从而达到实现一些特殊功能的目的,例如实现系统的高级安全性保护、增强系统的性能、自动执行某些指定的任务,甚至还可以实现一些资源的共享。同时,使用Windows驱动程序来读取和修改其他进程的内存也需要严格遵守系统安全规则,以避免发生安全漏洞。

1.加载驱动:

extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING path) {/*关闭未引用参数的警告*/UNREFERENCED_PARAMETER(path);/*指向创建的卸载函数*/pDriver->DriverUnload = DriverUnload;UNICODE_STRING NotExportedFunctionAddress = { 0 }, altitude = { 0 };/*获取未导出函数的地址*/RtlInitUnicodeString(&NotExportedFunctionAddress, L"PsGetProcessWow64Process");pPsGetProcessWow64Process = (PsGetProcessWow64Process)MmGetSystemRoutineAddress(&NotExportedFunctionAddress);RtlInitUnicodeString(&NotExportedFunctionAddress, L"PsGetProcessPeb");pPsGetProcessPeb = (PsGetProcessPeb)MmGetSystemRoutineAddress(&NotExportedFunctionAddress);/*创建注册表回调*/NTSTATUS Status = STATUS_SUCCESS;RtlInitUnicodeString(&altitude, L"321000");Status = CmRegisterCallbackEx((PEX_CALLBACK_FUNCTION)Callback, &altitude, pDriver, NULL, &Cookie, NULL);if (!NT_SUCCESS(Status)) DbgPrint("创建注册表回调失败.\n"); else DbgPrint("驱动已加载.\n");return STATUS_SUCCESS;
}

2.卸载驱动:

extern "C" VOID DriverUnload(PDRIVER_OBJECT pDriver) {UNREFERENCED_PARAMETER(pDriver);/*卸载注册表回调*/CmUnRegisterCallback(Cookie);DbgPrint("驱动已卸载.\n");
}

3.读物理内存:厉害的点在于不修改本身程序的完整性实现写内存

NTSTATUS ReadPhysicalAddress(PVOID address, PVOID buffer, SIZE_T size, SIZE_T* BytesTransferred)
{MM_COPY_ADDRESS Read = { 0 };Read.PhysicalAddress.QuadPart = (LONG64)address;return MmCopyMemory(buffer, Read, size, MM_COPY_MEMORY_PHYSICAL, BytesTransferred);
}

4.写物理内存:

/*写入物理内存*/
NTSTATUS WritePhysicalAddress(PVOID address, PVOID buffer, SIZE_T size, SIZE_T* BytesTransferred)
{if (!address) return STATUS_UNSUCCESSFUL;PHYSICAL_ADDRESS Write = { 0 };Write.QuadPart = (LONG64)address;PVOID map = MmMapIoSpaceEx(Write, size, PAGE_READWRITE);if (!map) return STATUS_UNSUCCESSFUL;RtlCopyMemory(map, buffer, size);*BytesTransferred = size;MmUnmapIoSpace(map, size);return STATUS_SUCCESS;
}

4.切换R3 R3模式已经很牛逼了 最主要的是无痕。

ULONG64 TransformationCR3(ULONG64 cr3, ULONG64 VirtualAddress) {cr3 &= ~0xf;ULONG64 PAGE_OFFSET = VirtualAddress & ~(~0ul << 12);SIZE_T BytesTransferred = 0;ULONG64 a = 0,b = 0,c = 0;ReadPhysicalAddress((PVOID)(cr3 + 8 * ((VirtualAddress >> 39) & (0x1ffll))), &a, sizeof(a), &BytesTransferred);if (~a & 1) return 0;ReadPhysicalAddress((PVOID)((a & ((~0xfull << 8) & 0xfffffffffull)) + 8 * ((VirtualAddress >> 30) & (0x1ffll))), &b, sizeof(b), &BytesTransferred);if (~b & 1) return 0;if (b & 0x80) return (b & (~0ull << 42 >> 12)) + (VirtualAddress & ~(~0ull << 30));ReadPhysicalAddress((PVOID)((b & ((~0xfull << 8) & 0xfffffffffull)) + 8 * ((VirtualAddress >> 21) & (0x1ffll))), &c, sizeof(c), &BytesTransferred);if (~c & 1) return 0;if (c & 0x80) return (c & ((~0xfull << 8) & 0xfffffffffull)) + (VirtualAddress & ~(~0ull << 21));ULONG64 address = 0;ReadPhysicalAddress((PVOID)((c & ((~0xfull << 8) & 0xfffffffffull)) + 8 * ((VirtualAddress >> 12) & (0x1ffll))), &address, sizeof(address), &BytesTransferred);address &= ((~0xfull << 8) & 0xfffffffffull);if (!address) return 0;return address + PAGE_OFFSET;
}

易语言代码示例:

有感兴趣的私聊源码开源(包含c++ 易语言调用驱动方法,以及易语言操作sys程序示例代码)

c/c++/易语言驱动内存无痕读写源码-包含易语言调用示例代码相关推荐

  1. 易企秀手机html5场景源码,仿易企秀V15.1手机网页DIY制作工具完整版开源版源码修复采......

    源码介绍: 源码内附详细安装文档,可轻松搭建网站. 易企秀是一款针对移动互联网营销的手机网页DIY制作工具,用户可以编辑手机网页,分享到社交网络,通过报名表单收集潜在客户或其他反馈信息.用户通过易企秀 ...

  2. uni-app - 文本展开 / 收起折叠功能,支持自定义样式(当文本内容超出规定行数后,展开收起折叠的功能)兼容 H5 / App / 小程序且易用更容易修改的插件组件源码,超详细的示例代码及注释

    前言 网上的组件和教程代码都太乱了,根本无法按照自己的需求修改,而且基本上都有兼容性和功能性 BUG. 本文实现了 多行文本展开与折叠组件,灵活性非常高,只完成了核心功能,可随意自定义样式满足您的需求 ...

  3. C语言项目源码,C语言源码大全

    一.C语言源码大全 C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.尽管 ...

  4. 易语言lsp劫持_易语言网截插件修复源码

    易语言网截插件修复源码.版本 2 .支持库 shell .支持库 eNetIntercept .子程序 _按钮1_被单击 写到文件 (取特定目录 (10) + "/lsp.bat" ...

  5. 易语言linux数据库模块,易语言ADO数据库对象模块源码

    下面我们对易语言ADO数据库对象模块源码文件阐述相关使用资料和易语言ADO数据库对象模块源码文件的更新信息. 易语言ADO数据库对象模块源码 易语言ADO数据库对象模块源码 系统结构:list,取错误 ...

  6. 超级列表框排序mysql,易语言超级列表框排序源码

    易语言超级列表框排序源码.版本 2 .支持库 iext .程序集 窗口程序集1 .程序集变量 集_中文, 文本型, , "0" .程序集变量 集_中文排序, 整数型, , &quo ...

  7. 易语言如何做post服务器,易语言服务器提交post模块源码

    下面我们对易语言服务器提交post模块源码[db:版本]文件阐述相关使用资料和易语言服务器提交post模块源码[db:版本]文件的更新信息. 易语言服务器提交post模块源码 易语言服务器提交post ...

  8. 小红书算法sign php,易语言小红书sign算法源码

    易语言小红书sign算法源码 @397951321.版本 2 .子程序 计算sign, 文本型 .参数 请求参数, HashMap类 .局部变量 A, 文本型, , "0" .局部 ...

  9. 紫微排盘源码php,易语言紫微斗数排盘模块源码

    下面我们对易语言紫微斗数排盘模块源码文件阐述相关使用资料和易语言紫微斗数排盘模块源码文件的更新信息. 易语言紫微斗数排盘模块源码 易语言紫微斗数排盘模块源码 系统结构:紫微斗数排盘,GetStarLe ...

最新文章

  1. 指南:从学者到创业者
  2. Loadrunner错误-26601、-27492、-27727处理方法
  3. 北京大学 微软:预训练模型(Transformer)中的知识神经元
  4. 蚂蚁庄园 php源码,蚂蚁庄园五体投地
  5. opencv imshow plt imshow
  6. 【转】关于动态库和静态库
  7. android之自定义弹框
  8. golang interface 与 反射
  9. Facebook Libra币开发指南---Move语言开发代币智能合约
  10. 性能测试:手机IOS性能测试
  11. oracle重建inventory,Oracle中Inventory目录作用以及如何重建此目录-Oracle
  12. 城市“智慧发展”的核心是人性化
  13. 多地力推企业上云,大力发展工业互联网|中机智库
  14. 爱尔兰哨笛教程(瑞恩牧师)
  15. 二中高考2021成绩查询南阳二中,扩散!南阳市高三二模成绩发布!
  16. 应届生应聘java需要掌握的技能
  17. CVPR 2020 | 跟郎朗媳妇有得一拼的AI,只看弹琴动作,完美复现原声
  18. 开源分布式任务调度系统就选它!
  19. SQL优化 20 连击
  20. MobPush 推送查询API

热门文章

  1. ovirt几种网卡(e1000, rtl8139,virtio)
  2. C#【高级篇】.NET平台调用Win32 API
  3. Windows操作系统内存管理
  4. 解决不能开启win10 5ghz频段热点的问题
  5. 20171010_购买Java的书籍
  6. python scrapy+Mongodb爬取蜻蜓FM,酷我及懒人听书
  7. Python实现Excel改为txt格式
  8. 想要更高效地完成工作?这4款PC软件值得你去尝试
  9. android 去了按键,【联想手机】怎样去除android系统的虚拟按键
  10. python中的translate函数_python中翻译功能translate模块实现方法