[源码] 驱动源码(内核级)修改物理虚拟网卡MAC地址【驱动+源码】

快来注册~

您需要 登录 才可以下载或查看,没有账号?注册账号

x
QQ截图20240418100818.png
QQ截图20240418100857.png


实现原理
  • 本项目通过在内核层对ndis和netio的虚函数进行HOOK,实现对MAC地址的底层获取和劫持。
技术解释
  • 在用户模式(r3层)获取MAC地址时,无论是通过何种方法,最终都会通过NtDeviceIoControlFile函数进入内核态。微软提供的封装函数位于iphlpapi模块中,此外,还可以通过NtDeviceIoControlFile的IOCTL_NDIS_QUERY_GLOBAL_STATS操作码来获取MAC地址。
  • 当NtDeviceIoControlFile进入内核态后,会通过IRP(I/O Request Packet)分派机制执行nsiproxy-netio-ndis,最终由ndis从已加载在内核的网卡驱动设备列表中枚举出在系统启动时加载到内存的MAC值,并返回到应用层。
  • 值得注意的是,IOCTL_NDIS_QUERY_GLOBAL_STATS可以返回8字节的MAC地址、0x104字节的MAC地址以及一些网卡信息。通过irphook可以方便地篡改IOCTL_NDIS_QUERY_GLOBAL_STATS获取的内容。
  • iphlpapi获取MAC地址的另一种方法是通过GetAdaptersInfo,该方法在进入IRP后同样会经过nsiproxy-netio-ndis,并最终调用ndisNsiEnumerateAllInterfaceInformation内核函数。这个函数会一次性返回所有网卡的所有信息。
开发起因
  • 在分析某大厂驱动文件时,我遇到了一种难以捉摸的内核HOOK技术。在排除使用虚拟化技术后,我几乎翻遍了整个内核,却找不到任何挂钩的痕迹。在长达两个多月的研究中,我逐渐发现了内核中许多可以挂钩的地方,现在分享的只是其中一种。
  • 除了ntoskrnl之外,其他与硬件操作相关的驱动(如网卡、硬盘等外设驱动)几乎到处可以进行HOOK。虽然这些核心驱动受到PG(PatchGuard)的监视,但仍有空间对其进行修改。在研究期间,我甚至在内核层中发现了不下十处未被PG监视的可挂钩区域。
使用方法
  • 易语言的调用源码、驱动源码以及成品都已经打包在压缩包中。用户只需安装驱动后点击修改即可。
特殊说明
  • 由于源码是从完整工程中临时拆分出来的,因此代码可能显得有些混乱。
  • 本项目在Windows 10上测试正常,但在Windows 7上可能需要对WDK(Windows Driver Kit)进行修改后重新编译驱动。

源码开发者:精易.雨过天晴
游客,如果您要查看本帖隐藏内容请回复



免责声明:
资源盒论坛发布的一切资源、模型和注册信息及软件的源码教程仅限用于学习和研究目的;
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站资源来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
如果您喜欢该程序/源文件,请支持正版软件,购买/注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
若本站侵犯了您的权益请联系站长进行删除处理E-mail:190183740@qq.com;
这个家伙很懒,没有设置签名~
回复

使用道具 举报

回答|共 2 个

chenxueyou

chenxueyou 发表于 2024-4-22 20:54:52 | 显示全部楼层

666666666666666
这个家伙很懒,没有设置签名~
回复 支持 反对

使用道具 举报

dadaodan

dadaodan 发表于 2024-11-14 10:01:16 | 显示全部楼层

学习一下
这个家伙很懒,没有设置签名~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

资源盒致力于软件下载、办公素材、技术教程、软件源码、学习交流分享为一体的资源盒子。我们提供最新最全面的资源,包括软件类资源、工程文件素材下载、海量技术网络教程以及各种实用的教程。

联系客服 进入论坛