文章目录

  • 一、 原理
  • 二、代码编写
    • 一些准备
    • HOOK.h:
    • EptHook.cpp
    • 处理HOOK和UnHOOK的VmCall
    • 处理EptViolation
  • 测试:
  • 本章代码

一、 原理

EPT无痕HOOK的原理其实很简单,就是操作EPT,把要HOOK的函数的对应的页面的pte属性改成只能读写,不能执行,把函数页面复制一份,在复制出来的页面做HOOK,页面属性为只能执行

执行的原函数页面的时候,会触发EptViolation进入host,把原函数所在页对应pte的物理地址改成HOOK的页面,也就是复制出来的页面,属性是只能执行
读写被HOOK函数页面的时候,会触发EptViolation进入host,把原函数所在页对应pte的物理地址改成原函数的页面,属性是能读写不能执行

为什么不直接HOOK原函数页,读写复制出来的页面呢?
HOOK原函数页,在退出的时候还得改回来,而HOOK复制出来的就不用再去改

[VT虚拟化驱动]利用EPT实现无痕HOOK相关推荐

  1. [VT虚拟化驱动]安装DPC回调检测CPU对VT的支持

    文章目录 前言 一.驱动基本框架 二.安装DPC回调 三.检测CPU对VT的支持 本章代码 def.h: DriverEntry.cpp util.cpp 前言 对于VT的介绍网上有很多详细的介绍,这 ...

  2. VT虚拟化驱动入门教程

    VT有着比操作系统还高的权限,因此可以用于做一些看起来很厉害的操作,包括应用与过游戏保护及写调试器 关于本教程: 使用C++及少量汇编编写 代码尽量精简易懂 测试环境 : WIN10 1903,WIN ...

  3. [VT虚拟化驱动]正式启动VT

    文章目录 前言 一.vmlaunch 二.VmExitHandle 三.退出VT 四.本章代码 前言 本章开始真正实现一个最简单的VT框架,当然,只是能跑起来一个VT驱动了,没有并包括EPT,EPT后 ...

  4. [VT 虚拟化] 资料整合

    请转到以下链接食用 (* ̄(oo) ̄) intel:x86架构VT虚拟化(一):基本概念和流程简介 intel:x86架构VT虚拟化(二):核心代码入门介绍 intel:x86架构VT虚拟化(三):x ...

  5. KVM半虚拟化驱动--virtio概述和基本原理(四)

    一. virtio概述 KVM是必须使用硬件虚拟化辅助技术(如Intel VT-x.AMD-V)的hypervisor,在CPU运行效率方面有硬件支持,其效率是比较高的:在有Intel EPT特性支持 ...

  6. 关于Windows10 VT虚拟化无法开启

    事情经过是这样子,我白天把windows10 更新到了2004版本,然后折腾了一下windows沙盒(sandbox),完后写代码的时候发现Android模拟器打不开,或者一打开就说我VT没有开启就终 ...

  7. 终于理解了VT虚拟化技术的作用!(内详)

    原文出处: http://news.sanhaostreet.com/New ... 6261759506062.shtml 呵呵!黑友们是不是看到这么长的文章已经开始头晕了啊?!呵呵 不好意思!可原 ...

  8. android 虚拟技术打开,雷电安卓模拟器VT虚拟化打开方法教程

    雷电模拟器怎么开启VT模式?相信有很多小伙伴都知道VT虚拟化技术能给我们带来什么,下面就来说说雷电安卓模拟器启动VT的方法吧! 雷电安卓模拟器VT虚拟化打开教程 开启VT需要进入BOIS进行设置.首先 ...

  9. 惠普服务器之开启虚拟化功能吗,VT虚拟化是什么?惠普主板怎么开启VT虚拟化?...

    如果想要对惠普品牌主板开启vt虚拟化技术的话,可以先确认自己的电脑是不是支持vt虚拟化功能.如果可以那么在电脑开机的时候可以使用快捷方式进入BIOS设置.详细内容请见下文~ 什么是VT虚拟化? Int ...

  10. 怎么查看服务器主板开启虚拟化,主板BIOS中VT虚拟化怎么开启

    太多人问到怎么开启intel Virtualization Technology选项,这是主板中的虚拟化技术,不过很多用户不太清楚,主板bios设置中VT虚拟化技术选项怎么开启,,所以特地做此经验分享 ...

最新文章

  1. 使用sourceInsight 提高代码编写效率
  2. 7 = 350 000 000 ?!
  3. Linux 小知识翻译 - 「补丁」(patch)
  4. [二]RabbitMQ-客户端源码之AMQConnection
  5. 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享
  6. bzoj2547 [Ctsc2002]玩具兵 dp+二分匹配
  7. 95-910-330-源码-FlinkSQL-Calcite-Flink结合Calcite
  8. 【Kafka】kafka 卡死 Discovered coordinator xx:9092 (id: xxx rack: null) for group xxx
  9. php数组连起来,PHP 数组的拼接重组
  10. 【日常】Mac安装Homebrew
  11. 综合应用WPF/WCF/WF/LINQ之二十七:代码生成器之DBMLToProcedure
  12. AngularJS 之 ng-model
  13. 2013第44周日小结
  14. gbase mysql数据库_mysql/gbase数据库全库库表记录数统计
  15. JasperReport导出Excel锁定行或列
  16. 【转载】:马家寨:揭开陈圆圆携吴三桂后裔隐藏与繁衍真相
  17. Android 设置桌面背景
  18. Flask项目之手机端租房网站的实战开发(一)
  19. 关于libsvm的PCA和 网格寻优
  20. 大话数据结构 -- 查找

热门文章

  1. 2018年视频云服务市场格局进入整合阶段,阿里云视频云位居市场竞争力领导者的位置
  2. vue组件开发之仿CSDN发布博客时面包屑标签和checkbox选中效果
  3. ong拼音汉字_汉语拼音中ong怎么读
  4. 阿里云达摩院视觉AI介绍
  5. 重新定义RPA,重塑智能生产力 | 云扩科技RPA论坛成功举办
  6. python与数据挖掘 分类和预测
  7. 图解CSS3 Flexbox属性
  8. 播布客视频PIT专用播放器MBOO2015
  9. 什么时候线程会进入Waitting状态?
  10. Neo4j之导入CSV大文件 periodic commit