令Win32应用程序跳入系统零层

众 所 周 知, 在Windows95/98 的Win32 on Intel x86 体 系 中 利 用 了 处 理 器 的 三 环 保 护 模 型 中 的 零 环(Ring0, 最 高 权 限 级 别) 和 三 环(Ring3, 最 低 权 限 级 别)。 一 般 应 用 程 序 都 运 行 在Ring3 下, 受 到 严 格 的" 保 护", 只 能 规 矩 地 使 用Win32API。 如 果 我 们 想 进 行 一 些 系 统 级 的 操 作, 例 如 在 嵌 入 汇 编 中 使 用 诸 如"Mov EAX,CR0", 或 像 在DOS 下 那 样 调 用 一 些 必 不 可 少 的 系 统 服 务( 如BIOS,DPMI 服 务) 而 用"Int xx", 都 会 导 致" 非 法 操 作"。 但 这 种 能 力 有 时 是 必 不 可 少 的, 一 到 这 种 时 候Microsoft 就 " 建 议 编 写 一 个VxD"。VxD 大 家 早 有 所 闻 了, 在VxD 里, 不 但 可 以 执 行CPU 的 所 有 指 令, 而 且 可 以 调 用VMM( 虚 拟 机 管 理 器) 和 其 他VxD 提 供 的 上 千 个 系 统 级 服 务。 获 得 这 一 能 力 的 最 本 质 原 因 在 于 它 运 行 在Ring0, 与 系 统 内 核 同 一 级 别。 但 是 它 体 系 的 复 杂 性、 开 发 工 具 的 不 易 获 得、 帮 助 文 档 的 不 完 备, 使Microsoft 排 除 了 一 大 批 程 序 员 和 竞 争 对 手。 而 将 在Windows2000(Windows98 也 开 始 支 持) 中 取 代VxD 的WDM 对Win95 程 序 员 也 是 个 噩 梦, 它 需 要 了 解Windows NT 核 心 驱 动 模 型。

----有 没 有 简 单 一 些 的 办 法 呢 ? 我 们 可 以 令 一 个 普 通Win32 应 用 程 序 运 行 在Ring0 下, 从 而 获 得VxD 的 能 力 吗 ? 答 案 是 肯 定 的。 下 面 我 们 就 简 述 一 下 这 一 技 巧, 有 关Intel x86 保 护 模 式 的 基 础 知 识 请 大 家 看 有 关 书 籍。

时间: 2024-09-30 15:18:46

令Win32应用程序跳入系统零层的相关文章

文件的输入和输出-win32应用程序问题关于文件

问题描述 win32应用程序问题关于文件 // ConsoleApplication3.cpp : 定义控制台应用程序的入口点.//#include ""stdafx.h""#include#include#includeint N1N2kk1kk2kk3;struct couse * head1;struct student * head2;struct couse//课程信息结构体{ int num1; char name1[20]; int score; in

Win32应用程序(SDK)设计原理详解_C 语言

一般来说所谓的Win32应用程序开发,就是在C语言的层面上,直接使用Win32 API(Application Programming Interface:系统开放出来,给程序员使用的接口.)来开发Windows应用程序或者系统程序.虽然现在直接用Win32 API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的必经之路. 所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的.下面是进行直接的WIN32

一个win32汇编语言程序示例

首先我们看一个"复杂"的Win32汇编程序程序用来显示一个消息框--------------------------------------------------;文件名:3.asm .386.model flat ,stdcall NULL equ 0MB_OK equ 0 ExitProcess PROTO :DWORDMessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD includelib kernel32.libincludelib u

win7电脑提示文件不是有效的win32应用程序怎么办?

win7电脑提示文件不是有效的win32应用程序怎么办?   win7系统 第一种情况:因为兼容问题导致.解决方法如下: 咱们找到无法打开的文件,然后右键点击,在下滑菜单中选择属性,在弹出来的窗口中,咱们将界面切换到兼容性这一栏,然后勾选上以兼容模式运行,点击确定退出窗口. win7系统 第二种情况:因为文件关联错误导致.解决方法如下: 1.首先,有可能是病毒在作祟,因此,咱们运行电脑中的杀毒软件进行全盘杀毒,确保电脑中没有病毒的隐患. 2.因为这里需要涉及到修复注册表的操作,小编建议大家可以下

不是有效Win32应用程序的解决方法

有用户在双击安装某个软件时,经常会弹出"XXX.EXE不是有效Win32应用程序"的错误提示.当然,有时即使我们双击运行任意一个EXE格式的可执行文件,同样会出现这样的错误提示.那么如何才能够避免系统出现不是有效Win32应用程序问题呢. 如果仅仅是在安装某些软件时,才弹出错误信息,这说明我们安装的程序包不完整或者是程序安装不成功,此时可从该程序官方网站下载未被修改的"原 装"程序安装包,并双击之,就可以顺利完成该程序的安装操作.不过,如果是在双击运行任意一个EXE

vs2013 server2003-不是有效的win32应用程序

问题描述 不是有效的win32应用程序 本人在vs2013下编译的程序,将exe在server 2003上运行提示不是有效的win32应用程序,请问是什么原因??在debug和release配置中都是现实的win32,在win7的64和32上都能跑 解决方案 首先,没有安装.net framework的电脑是不能直接运行.net程序的,除非你在安装程序中打包了.net framework安装包. 其次,所谓向下兼容,也不一定能保证使用更高版本的.net framework所编写的.net程序就能

web.xml-关于jsp跳入servlet的问题

问题描述 关于jsp跳入servlet的问题 求救,为什么会报这个错误,应该没有配错啊,后来用注解的也不行. ![![![ ![![![ ![![![![![![ 解决方案 你的配置都没错.错在web头了,xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ,,这两个不能掉换顺序.我复制我下面这个去用看看 xsi:schemaL

python中使用rpy2调用R出现DLL加载错误,不是有效win32位程序

问题描述 python中使用rpy2调用R出现DLL加载错误,不是有效win32位程序 win7 64位系统 R和python都是32位 解决方案 这个dll的依赖是否有问题 用depends查看一下 解决方案二:

绕过 Windows 10 Cloud 限制 成功运行 Win32 应用程序

微软正在研究 Windows 的一个轻量级版本,称为 "Windows Cloud".虽然这个版本的 Windows 的官方细节很少,但是这款轻量级操作系统的截图已经出现,这款操作系统将只运行在 Windows 应用商店中看到的应用程序. 事实上,虽然有些人称这款操作系统是一个 "新的 Windows RT",一个名为 Longhorn 的 Twitter 用户已经设法绕过 Windows 10 Cloud 系统对 Win32 应用程序的封锁,安装运行完全正常版本的