64位内核第一讲,和32位内核的区别
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位内核的区别相关推荐
- 64位处理器_电脑操作系统的32位和64位有什么区别
想买个新电脑,不知道买 64 位还是 32 位?买了一套视频剪辑软件,发现电脑根本安装不了?这些到底是为什么? 对于 Windows7 及以上版本,我们能够很明显知道自己电脑操作系统是 64 位还是 ...
- win10、win7系统64位oracle11g安装教程以及32位plsql连接教程
win10.win7系统64位oracle11g安装教程以及32位plsql连接教程 转载cxin917 最后发布于2016-02-05 14:16:55 阅读数 24354 收藏 展开 win10 ...
- openssl在64位的机器上编译32位的库
64位的linux机器编译32位的openssl # tar -xzf openssl-1.0.2f.tar.gz # cd openssl-1.0.2f # mkdir /usr/local/ope ...
- 服务器系统都是64位的吗,云服务器32位跟64位的区别吗
云服务器32位跟64位的区别吗 内容精选 换一换 Windows操作系统与Linux操作系统没有好坏之分,只有适合不适合.请根据业务需求选择Windows或Linux的操作系统.华为云提供了5个版本, ...
- 计算机哪里看到32位还是64位,如何看电脑是32位还是64位?
哪里看电脑系统是32位还是64位?windows系统有32位和64位两种不同的位数,在安装软件的时候,也会有所选择,不少朋友不知道怎么查看自己电脑的位数 Win10查看方法: 方法一: 1.在桌面上, ...
- 如何在64位的Linux中运行32位的应用程序
大部分Linux发行套件都有针对x86_64处理器的版本.比较典型的x86_64的处理器有ADM Athlon II和英特尔Xeon.因为这些Linux发行套件都有自己专用的软件源,这些软件源会为提供 ...
- 64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多
前言: cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推.32位操作系统针对的32位的CPU设计.64位操作系统针对的64位的CPU设计.操 ...
- 【Python】Python代码在64位电脑上打包发布32位exe程序的一种方法(使用PyCharm)
1. 背景 现在的电脑大多都是64位的,开发者安装的 Python 也多是64位的,所以使用 pyinstaller打包出的exe也是64位的. 有时候用户的电脑是古老的windows7 32位系统, ...
- 无法安装64位office,因为已有32位版本
这里写自定义目录标题 1.无法安装64位office,因为已有32位版本 2."无法安装64位office,因为已有32位版本"解决方案 3.若要运行此您必须首先安装.net fr ...
最新文章
- 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
- left join 后边的on条件 小记
- 低代码平台是“业务上云”走向万千企业的最后一公里
- android进程优先级的计算
- 在php中type有几种属性,HTML表单之input元素的23种type类型
- Nginx常用命令有哪些?
- java怎么打增量包_eclipse实现JavaWeb应用增量打包
- 3 个月如何从小白到 Python 高手?清华博士带你入门带你飞!
- 哪个相机可以拍gif动图_入门级微单相机哪家强?索尼微单A6400评测来了!
- 在MVC中要实现Ajax
- logistic和logitraw
- AutoAnswer使用指南(QQ、微信自动接听)
- 【消费者心理与行为(第6版)】第7章 消费者的需要与购买动机
- uniapp小程序 安卓和ios时间兼容性问题解决方案
- gitee注册新用户收不到验证码, 不管是手机还是邮箱都收不到验证码解决方案
- mysql2008安装虚拟机_在虚拟机xp系统中安装SQL Server2008的方法
- AI:2020年6月24日北京智源大会演讲分享之知识智能专题论坛——11:30-12:00唐杰 教授《CogDL:An Extensive Research Toolkit for Deep Le》
- 青蛙过河(二分+并查集)
- 架设传奇私服时提示此服务器满员的解决方法
- EI漏录的会议文章,如何申请EI数据库补录!
热门文章
- docker部署项目 入门版
- Ubuntu 18.0.4 安装Selenium 详细流程(亲测有效)
- Athentech Perfectly Clear中文版
- httpwatchv11.1.46.0免费版
- adobe Photoshop CS6 MAC中文版
- deep learning:RBM公式推导+源码 ----- C++
- Psscor2 - 微软内部的SOS升级版(知道.net3.5)
- A Network-based End-to-End Trainable Task-oriented Dialogue System
- 笔记:django is not a registered namespace错误
- 如何使用定时器settimeout、setInterval执行能传递参数的函数(转)