220 likes | 451 Views
第一章. 理论与工具. 概述部分. 1.1 Windows 概述 1.1.1 Windows 简介 Windows 是一种基于图形界面的多任务操作系统。为这个环境开发的程序有着相同的外观和命令结构。对用户来说,这使得学习使用 Windows 应用程序变得容易了。 为了帮助开发 Windows 应用程序, Windows 提供了大量的内建函数以方便地使用弹出菜单、滚动条、对话框、图标和其他一些友好的用户界面应该具有的特性。. 1.1.1 Windows 简介.
E N D
第一章 理论与工具
概述部分 • 1.1 Windows概述 • 1.1.1Windows简介 • Windows是一种基于图形界面的多任务操作系统。为这个环境开发的程序有着相同的外观和命令结构。对用户来说,这使得学习使用Windows应用程序变得容易了。 为了帮助开发Windows应用程序,Windows提供了大量的内建函数以方便地使用弹出菜单、滚动条、对话框、图标和其他一些友好的用户界面应该具有的特性。
1.1.1Windows简介 Windows运行应用程序以硬件无关的方式来处理视频显示、键盘、鼠标、打印机、串行口以及系统时钟。最值得注意的Windows特性就是其标准化的图形用户界面。统一的界面使用图片或图标来代表磁盘驱动器、文件、子目录以及其它操作系统的命令和动作。统一的用户界面也为程序员带来了好处。例如,你可以很方便地使用常见菜单和对话框的内建函数。所有的菜单都具有相同风格的键盘和鼠标接口,因为是Windows而不是程序员在实现它。
1.1.2 Windows的发展历史 • 下表列出了这20年来Windows的发展情况和发布年月等相关信息。
1.2 Windows系统结构 • 1.2.1总体结构 下图1-1是一个简化版本的总体结构。请记住,这个图只是一个基本结构,它并没有显示任何特定内容(例如,网络组件和各种类型设备驱动程序的层次并没有显示)。
1.2.2 关键的系统组件 • 我们已经看过了Windows的高层体系结构,现在我们来深入地研究Windows的内部结构,以及每个关键的操作系统组件所扮演的角色。图1-2是一个关于 Windows系统核心结构和组件的图,它比本章前面给出的结构图(见图1-1)更加详细和完整。请注意,它仍然没有显示所有的组件,特别是没有显示网络组件。
1.2.2 关键的系统组件 图1-2 Windows系统核心结构和组件
1.3 理论基础和术语 • 1.3.1 Windows API Windows应用编程接口(API)是针对Windows操作系统家族的系统编程接口,大致可以分以下七类: • 基本服务(Base Services) • 组件服务(Component Services) • 用户界面服务(User Interface Services) • 图形和多媒体服务(Graphics and Multimedia Services) • 消息和协作(Messaging and Collaboration) • 网络(Networking) • Web服务(Web Services)
1.3.2 Windows服务 Windows服务也称为Windows Service,它是Windows操作系统和Windows网络的基础,属于系统核心的一部分,是一种可随 Windows 操作系统启动而启动的,在后台运行且通常不和用户产生交互的程序。它无法通过双击来运行,类似于 Unix 守护进程(daemon processes),当用户注销时它也不会停止,它支持着整个Windows的各种操作。诸如DNS客户端、打印程序、Windows更新服务、计划任务、Windows时间服务、告警器等服务,它们关系到机器能否正确运行。如果不能适当地管理这些服务,就会影响到机器的正常操作。
1.3.3 内核模式与用户模式 为了安全,Windows使用内核模式和用户模式两种处理器模式。内核模式和用户模式是由操作系统定义、利用特定CPU的安全分级能力实现的。内核模式与用户模式对于CPU来说,其本质区别是运行的安全级不同,对于操作系统来说,除了其运行的安全级、权限不同外,最重要的是通过内核模式和用户模式的划分来实现操作系统的安全体系。内核模式用行于最高安全级,其中运行的是一切代码被认为TCB的一部分,用户模式利用API向底层系统申请服务。
1.4 Windows内核分析工具与资源 • 1.4.1 Windows内核源代码分析工具 (1)源代码分析工具Doxygen (2)源代码阅读工具Source Insight • 1.4.2 Windows内核探测工具 (1)Windbg (2)SoftICE
WRK实验环境搭建 • 1.1 WRK 的安装与设置 关于WRK的安装与设置详细请看试验指导书 • 1.2 调试环境设置 Microsoft 公司的Debugging Tools for Windows 是一款功能十分强大的调试器,其中包含图形用户界面的调试器WinDbg,支持操作系统内核级调试,并且支持C 语言源代码级调试,可以使用源代码设置各种断点。WinDbg 的使用需要双机环境,宿主机运行调试器,目标机运行被调试的操作系统。运行WinDbg 时,主机和目标机一般通过无Modem 串行电缆通过串行口通讯。 借助于VMware 软件,可以在同一台计算机上的主机和虚拟机之间建立串行通信连接,从而实现调试。
1.2 调试环境设置 (1)下面为虚拟机增添一个串口:单击VMware 的“VM”菜单,选择“Settings…”命令,在出现的对话框中选择“Add…”按钮,在接下来出现的Add Hardware Wizard 向导中依次选择增加Serial Port,串口类型为选择“Output tonamed pipe”,命名管道的设置可以采用VMware 提供的缺省值,如下图所示。
1.2 调试环境设置 单击上图中的“Advanced>>”按钮,在出现的对话框中选中“Yield CPU onpoll”,如下图所示。
1.2 调试环境设置 • 单击上图中的“完成”按钮,就为虚拟机增加了一个串口。 为了调试目标操作系统,必须设置WinDbg 的启动参数,为此可用创建一个新的WinDbg 快捷方式,其参数设置如下: "D:\Program Files\Debugging Tools for Windows\windbg.exe" -b –k com:pipe,port=\\.\pipe\com_1,baud=115200,reconnect -y D:\Symbols\WindowsWRK;srv*D:\Symbols\WindowsWRK*http://msdl.microsoft.com/download/symbols -srcpath "E:\SourceFile\WRK1.2\base"
1.2 调试环境设置 • 其中各个参数的意义: -b——一旦主机目标机之间建立起连接,立刻中断目标机 -k——内核调试 com——设置连接目标机的通信端口(此处为命名管道)和波特率(此处为115200) -y——设置符号文件路径 -srcpath——设置源文件路径 为了在调试时WinDbg 能够找到WRK 内核的符号文件,必须把编译WRK时生成的符号文件wrkx86.pdb 复制到主机的符号文件目录中。 为了对目标机进行调试,必须在目标机操作系统中增加新的启动选项。启动虚拟机,编辑boot.ini 文件,增加一个具有如下参数的引导选项: /kernel=wrkx86.exe /hal=halmacpi.dll /debug /debugport=com1 /baudrate=115200 修改后的boot.ini 文件的内容如下图所示。
1.2 调试环境设置 修改好boot.ini 文件后请关闭虚拟机。用WinDbg 调试目标操作系统的步骤如下:启动WinDbg,如下图所示。
1.2 调试环境设置 从图中可用看出,WinDbg 正在等待与目标机建立连接。 (2)启动虚拟机,在出现的三个引导选项中,选择“WRK 1.2 [debugger enabled]”,如下图所示。
1.2 调试环境设置 (3)随着虚拟机操作系统的启动,主机和目标机之间建立起了连接。连接一旦建立, WinDbg 就会立刻中断目标机的操作系统,并调出断点所在的源文件。连接建立后,WinDbg 的反应如下图所示。
1.2 调试环境设置 (4)在WinDbg 中按下F5 键,恢复目标机操作系统的运行。 (5)在目标机运行过程中,在WinDbg 中按下CTRL+BREAK 键,则立刻中断目标机的操作系统,从而可用对目标机进行各种调试工作。在调试过程中,按下F5 键,则恢复目标机操作系统的运行。