64位内核第一讲,和32位内核的区别

双击调试配置请查看 连接: https://www.cnblogs.com/aliflycoris/p/5877323.html

一丶编译的区别.

首先,还是使用WDK7.1.7600编写. 但是编译的时候,要使用x64来编译. 其代码框架不变.

1.驱动加载

  驱动加载的程序还是使用普通的驱动加载即可.但是64位(win7),微软推出了两种新的方式.

1.DSE

2.KPP

  DSE: 这个机制是 驱动强制签名,也就是说你编写的驱动,都要进行签名.才可以加载.

  KPP: 内核补丁保护, 比如我们说的SSDT表,(ring3 -> ring0 中专表)在XP下是可以HOOK的,现在,这些都被保护了,只要你更改了系统的核心源码,直接蓝屏.

2.去掉KPP保护.

在编写的64为内核驱动, 如果我们的系统是安全模式启动,则没有DSE保护.也就是说不用签名.

现在有工具可以直接去使用.

第一个选项是,点击之后,你的系统启动则是在安全模式启动.

第二个选项是, 点击之后,你的驱动可以添加一个测试签名.

3.注意的问题

如果进行了上面来了两个步骤,我们的驱动还是不能加载,那么这也是一个坑. 微软说了,在PE文件中,你的驱动必须有签名检查.

正确的姿势:

  首先,编写驱动的source文件加上命令行选项.

  LINKER_FLAGS = /INTEGRITYCHECK

且必须放在最下面, 加了这个选项,那么你的驱动,可以使用微软提供的HOOK函数了.

二丶64位GDT表

首先,地址变大了,变成了48位的地址,其高位是FFFF,属于是符号扩展.

IDT 也是变大了.

其内核中的结构体也变大了.

不光这个结构体,还有里面的,有兴趣的自己解析一下查看.

三丶SSDT表的寻找,以及SSDT加密

我们知道 ring3 -> ring0 会通过SSDT表进行中专,

其EIP 会存放在 msr寄存器中.  xp下是174 175 176

现在查看AMD的CPU指令,会发现. 进0环会调用SystemCall命令.

其MSR寄存器是在 C0000081  C0000082 C0000083

其EIP会存放在82里面.

那么我们可以 使用指令.

rdmsr C0000082

读取三环进0环的地址. 对其解析.

因符号文件没有下载完全.所以还暂时没有办法解析.

SSDT加密算法是 模块首地址 + 当前表中的地址>>4  .我们要计算地址的时候.只需要将SSDT表中的内容的函数地址<<4位加上模块首地址即可.

转载于:https://www.cnblogs.com/iBinary/p/8395870.html

64位内核第一讲,和32位内核的区别相关推荐

  1. 64位处理器_电脑操作系统的32位和64位有什么区别

    想买个新电脑,不知道买 64 位还是 32 位?买了一套视频剪辑软件,发现电脑根本安装不了?这些到底是为什么? 对于 Windows7 及以上版本,我们能够很明显知道自己电脑操作系统是 64 位还是 ...

  2. win10、win7系统64位oracle11g安装教程以及32位plsql连接教程

    win10.win7系统64位oracle11g安装教程以及32位plsql连接教程 转载cxin917 最后发布于2016-02-05 14:16:55 阅读数 24354  收藏 展开 win10 ...

  3. openssl在64位的机器上编译32位的库

    64位的linux机器编译32位的openssl # tar -xzf openssl-1.0.2f.tar.gz # cd openssl-1.0.2f # mkdir /usr/local/ope ...

  4. 服务器系统都是64位的吗,云服务器32位跟64位的区别吗

    云服务器32位跟64位的区别吗 内容精选 换一换 Windows操作系统与Linux操作系统没有好坏之分,只有适合不适合.请根据业务需求选择Windows或Linux的操作系统.华为云提供了5个版本, ...

  5. 计算机哪里看到32位还是64位,如何看电脑是32位还是64位?

    哪里看电脑系统是32位还是64位?windows系统有32位和64位两种不同的位数,在安装软件的时候,也会有所选择,不少朋友不知道怎么查看自己电脑的位数 Win10查看方法: 方法一: 1.在桌面上, ...

  6. 如何在64位的Linux中运行32位的应用程序

    大部分Linux发行套件都有针对x86_64处理器的版本.比较典型的x86_64的处理器有ADM Athlon II和英特尔Xeon.因为这些Linux发行套件都有自己专用的软件源,这些软件源会为提供 ...

  7. 64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多

    前言: cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推.32位操作系统针对的32位的CPU设计.64位操作系统针对的64位的CPU设计.操 ...

  8. 【Python】Python代码在64位电脑上打包发布32位exe程序的一种方法(使用PyCharm)

    1. 背景 现在的电脑大多都是64位的,开发者安装的 Python 也多是64位的,所以使用 pyinstaller打包出的exe也是64位的. 有时候用户的电脑是古老的windows7 32位系统, ...

  9. 无法安装64位office,因为已有32位版本

    这里写自定义目录标题 1.无法安装64位office,因为已有32位版本 2."无法安装64位office,因为已有32位版本"解决方案 3.若要运行此您必须首先安装.net fr ...

最新文章

  1. 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
  2. left join 后边的on条件 小记
  3. 低代码平台是“业务上云”走向万千企业的最后一公里
  4. android进程优先级的计算
  5. 在php中type有几种属性,HTML表单之input元素的23种type类型
  6. Nginx常用命令有哪些?
  7. java怎么打增量包_eclipse实现JavaWeb应用增量打包
  8. 3 个月如何从小白到 Python 高手?清华博士带你入门带你飞!
  9. 哪个相机可以拍gif动图_入门级微单相机哪家强?索尼微单A6400评测来了!
  10. 在MVC中要实现Ajax
  11. logistic和logitraw
  12. AutoAnswer使用指南(QQ、微信自动接听)
  13. 【消费者心理与行为(第6版)】第7章 消费者的需要与购买动机
  14. uniapp小程序 安卓和ios时间兼容性问题解决方案
  15. gitee注册新用户收不到验证码, 不管是手机还是邮箱都收不到验证码解决方案
  16. mysql2008安装虚拟机_在虚拟机xp系统中安装SQL Server2008的方法
  17. AI:2020年6月24日北京智源大会演讲分享之知识智能专题论坛——11:30-12:00唐杰 教授《CogDL:An Extensive Research Toolkit for Deep Le》
  18. 青蛙过河(二分+并查集)
  19. 架设传奇私服时提示此服务器满员的解决方法
  20. EI漏录的会议文章,如何申请EI数据库补录!

热门文章

  1. docker部署项目 入门版
  2. Ubuntu 18.0.4 安装Selenium 详细流程(亲测有效)
  3. Athentech Perfectly Clear中文版
  4. httpwatchv11.1.46.0免费版
  5. adobe Photoshop CS6 MAC中文版
  6. deep learning:RBM公式推导+源码 ----- C++
  7. Psscor2 - 微软内部的SOS升级版(知道.net3.5)
  8. A Network-based End-to-End Trainable Task-oriented Dialogue System
  9. 笔记:django is not a registered namespace错误
  10. 如何使用定时器settimeout、setInterval执行能传递参数的函数(转)