1 / 210

第 1 章 计算机信息系统安全概述

第 1 章 计算机信息系统安全概述. 1.1 计算机信息系统的定义 1.2 计算机信息系统安全简介 1.2.1 计算机信息系统安全的定义 1.2.2 信息系统自身的安全脆弱性 1.2.3 对信息系统安全的威胁 1.3 Windows 信息系统安全机制简介 1.3.1 Windows 2000 安全机制简介 1.3.2 SQL Server 2000 安全机制简介 1.4 Windows 信息系统面临的安全威胁 1.4.1 安全威胁之系统破解 1.4.2 安全威胁之计算机病毒 1.4.3 安全威胁之恶意攻击.

rowena
Télécharger la présentation

第 1 章 计算机信息系统安全概述

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第1章 计算机信息系统安全概述 1.1 计算机信息系统的定义 1.2 计算机信息系统安全简介 1.2.1 计算机信息系统安全的定义 1.2.2 信息系统自身的安全脆弱性 1.2.3 对信息系统安全的威胁 1.3 Windows信息系统安全机制简介 1.3.1 Windows 2000安全机制简介 1.3.2 SQL Server 2000安全机制简介 1.4 Windows信息系统面临的安全威胁 1.4.1 安全威胁之系统破解 1.4.2 安全威胁之计算机病毒 1.4.3 安全威胁之恶意攻击

  2. 1.1 计算机信息系统的定义 信息系统是指用于采集、处理、存储、传输、分发和部署信息的整个基础设施、组织结构、人员和组件的总和。 信息系统 (Information System)是指由计算机及其相关和配套的设备、设施(含网络)构成的,按照一定的应用目标和规则对信息进行采集、加工、存储、传输、检索等处理的人机系统。

  3. 1.2 计算机信息系统安全简介 1.2.1 计算机信息系统安全的定义 信息系统安全定义为:确保以电磁信号为主要形式的、在计算机网络化(开放互联)系统中进行自动通信、处理和利用的信息内容,在各个物理位置、逻辑区域、存储和传输介质中,处于动态和静态过程中的机密性、完整性、可用性、可审查性和抗抵赖性,与人、网络、环境有关的技术安全、结构安全和管理安全的总和。

  4. 1.2.2 信息系统自身的安全脆弱性 1.硬件组件 信息系统硬件组件的安全隐患多来源于设计,主要表现为物理安全方面的问题。 2.软件组件 软件组件的安全隐患来源于设计和软件工程中的问题。 3.网络和通信协议 (1)缺乏对用户身份的鉴别 (2)缺乏对路由协议的鉴别认证 (3)TCP/UDP的缺陷

  5. 1.2.3对信息系统安全的威胁 1.基本威胁 (1)信息泄露 (2)完整性破坏 (3)服务拒绝 (4)未授权访问 2.威胁信息系统的主要方法 (1)冒充 (2)旁路控制 (3)破坏信息的完整性 攻击者可以从以下三方面破坏信息的完整性: 篡改:改变信息流的次序、时序、流向、内容和形式。 删除:删除消息全部或其中一部分。 插入:在消息中插入一些无意义的或有害的消息。

  6. (4)破坏系统的可用性 (5)重放 (6)截取和辐射侦测 (7)陷门 (8)特洛伊木马 (9)抵赖 3.威胁和攻击的来源 (1)内部操作不当 (2)内部管理不严造成系统安全管理失控 (3)来自外部的威胁和犯罪 ① 黑客 ② 信息间谍 ③ 计算机犯罪

  7. 1.3 Windows信息系统安全机制简介 1.3.1 Windows 2000安全机制简介 Windows NT 4.0的不足 Windows NT应用于企业级服务时,如果不使用那些繁冗的附加软件产品,便无法提供分布式SSO(单点登录)服务。委派功能(将针对限定账号集合的有限管理优选权指派给另一用户的能力)则更是少得可怜。同样无法借助平面化Windows NT域就组织层次和管理结构进行适当规划。Windows NT 4.0也没有为和用户账号有关的应用程序专用信息提供存储位置。而Windows NT所具备的PKI功能(最多只能算雏形状态)则仅被限定于Web环境,并只能面向基于Microsoft Exchange Server的通信任务提供部分支持,但PKI功能本身却没有实现全面集成化。

  8. 首先,Microsoft在围绕Win2K展开设计工作的过程中,秉承了多项旨在弥补Windows NT 4.0自身缺陷的技术意图,该公司将这种操作系统定位于终极电子商务支持平台。 其次,Win2K在很大程度上依赖于行业标准和相关协议。 再次,Microsoft还需要提供一个有助于降低应用程序开发成本的软件系统平台。 最后,为应对电子商务所提出的挑战,Win2K已具备了在整个操作系统内面向PKI提供技术支持的能力。

  9. 1.AD组件AD堪称Win2K操作系统的旗舰级组件,主要用来克服Windows NT 4.0在目录功能方面存在的伸缩性、扩展性、开放性和管理能力问题。 AD为操作系统存储账号及控制策略信息。AD依赖操作系统控制对AD对象的访问。 操作系统对AD中对象强制实施许可进入。操作系统的授信信息存放在AD中。

  10. 2.CryptoAPI组件 CryptoAPI的设计目标在于,面向基于使用可安装加密服务提供程序之操作系统的全部应用程序及其他相关组件提供针对低级加密服务的一站式“采购”模式 CryptoAPI为应用程序提供一站式“采购”服务

  11. 3.证书服务器 证书服务器,主要用来针对证书的申请、签发、公布和管理任务提供CA所应具备的基本功能特性。 证书服务器可面向Exchange Server提供许可证码身份验证和安全MIME(S/MIME)集成特性 。 管理人员必须为针对证书服务器配置实施操控而以手工方式就文本文件进行编辑。证书服务器缺乏对于PKI企业级使用需求来说是至关重要的管理特性。证书服务器具备在其他第三方目录中实现证书发布的能力。

  12. 4.身份验证服务 SSPI(Security Support Provider Interface)将通过另一种API提供身份验证服务。客户端/服务器应用程序不仅需要对访问服务器的客户端执行身份验证,而且,有时甚至需要对访问客户端的服务器实施验证。 SSPI在身份验证服务中所扮演的角色

  13. 5.加密服务 Win2K所配备的EFS则允许你仅仅通过选中一个复选框的简单操作即可在文件系统层对相关文件进行加密。EFS可借助面向用户和应用程序的完全透明度对加密和解密任务进行处理。 Win2K主要凭借IPSec面向用户和应用程序提供充分透明度,进而跨越网络系统对数据资料加以保护。IPSec可面向TCP/IP通信提供身份验证、机密性、数据完整性和筛选服务。 IPSec在Win2K体系结构中所处位置

  14. 1.3.2 SQL Server 2000安全机制简介 SQL Server是Microsoft公司开发的大型数据库软件,Microsoft为SQL Server建立了一种既灵活又强大的安全管理机制,SQL Server的安全机制是与下层的Win2K操作系统结合在一起的,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面的管理。 1.验证方法选择 验证是指检验用户的身份标识;授权是指允许用户做些什么。 构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。

  15. 2.Web环境中的验证 IIS 5.0,可以用四种方法验证用户: 第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的Win2K账户;第二种方法是让所有网站使用Basic验证;在客户端只使用IE 6.0、IE 5.0浏览器的情况下,你可以使用第三种验证方法。你可以在Web网站上和虚拟目录上都启用Win2K验证;第四种方法是如果用户都有个人数字证书,你可以把那些证书映射到本地域的Win2K账户上。

  16. 3.设置全局组 构造安全策略的下一个步骤是确定用户应该属于什么组。 控制数据访问权限最简单的方法是,对于每一组用户,分别地为它创建一个满足该组用户权限要求的、域内全局有效的组。除了面向特定应用程序的组之外,我们还需要几个基本组。基本组的成员负责管理服务器。

  17. 4.允许数据库访问 权限分配给角色而不是直接把它们分配给全局组。 创建了数据库之后,我们可以用sp_grantdbaccess存储过程授权DB_Name Users组访问它。 如果要拒绝数据库访问,我们可以创建另外一个名为DB_Name Denied Users的全局组,授权它访问数据库,然后把它设置为db_denydatareader以及db_denydatawriter角色的成员。

  18. 5.分配权限 实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。 创建好角色之后就可以分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。 接下来我们就可以加入所有SQL Server验证的登录。用户定义的数据库角色可以包含SQL Server登录以及NT全局组、本地组、个人账户 。 由于内建的角色一般适用于整个数据库而不是单独的对象,因此这里建议你只使用两个内建的数据库角色,即db_securityadmin和db_owner。

  19. 6.简化管理 SQL Server验证的登录不仅能够方便地实现,而且与NT验证的登录相比,它更容易编写到应用程序里。但是,如果用户的数量超过25,或者服务器数量在一个以上,或者每个用户都可以访问一个以上的数据库,或者数据库有多个管理员,SQL Server验证的登录便不容易管理了。由于SQL Server没有显示用户有效权限的工具,要记住每个用户具有哪些权限以及他们为何要得到这些权限就更加困难。即使对于一个还要担负其他责任的小型数据库管理员,简化安全策略也有助其减轻问题的复杂程度。因此,首选的方法应该是使用NT验证的登录,然后通过一些精心选择的全局组和数据库角色管理数据库访问。

  20. 1.4 Windows信息系统面临的 安全威胁 1.4.1 安全威胁之系统破解 1.Windows系统登录密码破解简介 (1)删除SAM文件(仅适合于Windows 2000) (2)修改账户密码 (3)穷举法破解账户密码

  21. 2.文件级加密破解简介 (1)Office文件加密与破解 (2)FoxMail账号加密与破解 3.软件注册码破解简介 注册码加密保护的原理比较简单,即要求软件安装者必须输入正版软件才拥有的一组字码(字符或数字的组合),经软件验证通过后方可完成安装。注册码的验证方式根据不同的软件各有不同,有的是直接明文放在软件中,有的经过加密或变形后再进行比较,还有的需要通过网络申请注册码,然后再进行验证。不管通过哪种验证方式,注册码的破解均有一定的规律可循,即通过反汇编工具追踪软件的验证过程,在找到验证规律的基础上实现破解。

  22. 1.4.2 安全威胁之计算机病毒 1.计算机病毒的基本特征 (1)传染性 (2)隐蔽性 (3)破坏性 (4)可触发性 2.计算机病毒的发展趋势 (1)网络成为计算机病毒传染的主要载体; (2)传统病毒日益减少,网络蠕虫成为最主要和破坏力最大的病毒类型; (3)恶意网页的泛滥; (4)病毒与木马技术相互结合,出现带有明显木马特征的病毒; (5)传播方式多样化; (6)跨操作系统的病毒; (7)手机病毒、信息家电病毒的出现。

  23. 3.计算机反病毒技术的发展趋势 (1)适当增加杀毒软件的功能 (2)杀毒软件的技术革新 (3)操作系统的稳固性 (4)企业病毒解决方案和个人病毒防范

  24. 1.4.3 安全威胁之恶意攻击 1.源IP地址欺骗攻击 假设同一网段内有两台主机A和B,另一网段内有主机X。B 授予A某些特权。X 为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机 B发送一个带有随机序列号的SYN包。主机B响应,回送一个应答包给A,该应答号等于原序列号加1。然而,此时主机A已被主机X利用拒绝服务攻击“淹没”了,导致主机A服务失效。结果,主机A将B发来的包丢弃。为了完成三次握手,X还需要向B回送一个应答包,其应答号等于B向A发送数据包的序列号加1。此时主机X 并不能检测到主机B的数据包(因为不在同一网段),只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B。如果猜测正确,B则认为收到的ACK是来自内部主机A。此时,X即获得了主机A在主机B上所享有的特权,并开始对这些服务实施攻击。

  25. 要防止源IP地址欺骗行为,可以采取以下措施来尽可能地保护系统免受这类攻击:要防止源IP地址欺骗行为,可以采取以下措施来尽可能地保护系统免受这类攻击: (1)抛弃基于地址的信任策略 阻止这类攻击的一种十分容易的办法就是放弃以地址为基础的验证。这将迫使所有用户使用其他远程通信手段,如telnet、ssh、skey等等。 (2)使用加密方法 在包发送到网络上之前,我们可以对它进行加密。虽然加密过程要求适当改变目前的网络环境,但它将保证数据的完整性、真实性和保密性。 (3)进行包过滤 可以配置路由器使其能够拒绝网络外部与本网内具有相同IP地址的连接请求。而且,当包的IP地址不在本网内时,路由器不应该把本网主机的包发送出去。

  26. 2.源路由欺骗攻击 假设主机A享有主机B的某些特权,主机X想冒充主机A从主机B(假设IP为aaa.bbb.ccc.ddd)获得某些服务。首先,攻击者修改距离X最近的路由器,使得到达此路由器且包含目的地址aaa.bbb.ccc.ddd的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗向主机B发送源路由(指定最近的路由器)数据包。当B回送数据包时,就传送到被更改过的路由器。这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据。 为了防范源路由欺骗攻击,一般采用下面两种措施: 1.对付这种攻击最好的办法是配置路由器,使它抛弃那些由外部网进来的却声称是内部主机的报文。 2.在路由器上关闭源路由。用命令no ip source-route。

  27. 3.拒绝服务攻击 SYN Flood常常是源IP地址欺骗攻击的前奏,又称半开式连接攻击。每当我们进行一次标准的TCP连接就会有一个三次握手的过程,而SYN Flood在它的实现过程中只有三次握手的前两个步骤,当服务方收到请求方的SYN并回送SYN-ACK确认报文后,请求方由于采用源地址欺骗等手段,致使服务方得不到ACK回应,这样,服务方会在一定时间内处于等待接收请求方ACK报文的状态,一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,则服务器的系统可用资源、网络可用带宽急剧下降,将无法向其他用户提供正常的网络服务。

  28. 为了防止拒绝服务攻击,我们可以采取以下的预防措施:为了防止拒绝服务攻击,我们可以采取以下的预防措施: 1.建议在该网段的路由器上做一些配置的调整,这些调整包括限制Syn半开数据包的流量和个数。 2.要防止SYN数据段攻击,我们应对系统设定相应的内核参数,使得系统强制对超时的Syn请求连接数据包复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的Syn请求数据包。 3.建议在路由器的前端做必要的TCP拦截,使得只有完成TCP三次握手过程的数据包才可进入该网段,这样可以有效地保护本网段内的服务器不受此类攻击。 4.对于信息淹没攻击,我们应关掉可能产生无限序列的服务来防止这种攻击。

  29. 4.网络嗅探攻击 网络嗅探就是使网络接口接收不属于本主机的数据。计算机网络通常建立在共享信道上,以太网就是这样一个共享信道的网络,其数据帧头包含目的主机的硬件地址,只有硬件地址匹配的机器才会接收该数据包。一个能接收所有数据包的机器被称为混杂模式节点。通常账户和口令等信息都以明文的形式在以太网上传输,一旦被攻击者在混杂模式节点上嗅探到这些信息,相关的计算机和用户就难以避免被攻击的厄运。 对于网络嗅探攻击,我们可以采取以下措施进行防范: (1)网络分段 (2)加密 (3)一次性口令技术 (4)禁用杂错节点

  30. 5.缓冲区溢出攻击 缓冲区是用户为程序运行时在计算机内存中申请到的一段连续的存储空间,它保存了给定类型的数据。缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。 一般的防范措施包括: (1)程序指针完整性检查 (2)堆栈的保护 (3)数组边界检查 (4)利用工具软件发现漏洞并修补

  31. 第2章 基础知识简介 2.1 Windows系统的注册表 2.2 Visual C++编程基础 2.3 汇编语言编程及反汇编调试 2.4 Windows系统驱动程序开发

  32. 2.1 Windows系统的注册表 2.1.1 注册表的结构 注册表的外部形式是Windows目录下的两个二进制文件System.dat和User.dat,内部组织结构是一个类似于目录管理的树状分层的结构。 对于树枝,我们把它叫做“项”,对于树叶,叫做“值项”。值项包括三部分:值的名称、值的数据类型以及值本身。

  33. Windows系统的注册表有5种数据类型,它们是: REG_BINARY:二进制值(B)。 REG_DWORD:DWORD值(D)。 REG_EXPAND_SZ:可扩展字符串(E)。 REG_MULTI_SZ:多重字符串(M)。 REG_SZ:数据字符串(S)。

  34. 注册表的根键主要包括5大根键,即: HKEY_CURRENT_USER:包含当前登录用户的配置信息的根目录。用户文件夹、屏幕颜色和“控制面板”设置存储在此处。该信息被称为用户配置文件。 HKEY_USERS:包含计算机上所有用户的配置文件的根目录。HKEY_CURRENT_USER是HKEY_USERS的子项。 HKEY_LOCAL_MACHINE:包含针对该计算机(对于任何用户)的配置信息。 HKEY_CLASSES_ROOT:是HKEY_LOCAL_MACHINE\Software的子项。此处存储的信息可以确保当使用Windows资源管理器打开文件时,将使用正确的应用程序打开对应的文件类型。 HKEY_CURRENT_CONFIG:包含本地计算机在系统启动时所用的硬件配置文件信息。

  35. 1.HKEY_LOCAL_MACHINE根键 HKEY_LOCAL_MACHINE根键中存放的是用来控制系统和软件的设置。 (1)HARDWARE子键 该子键包含了系统使用的浮点处理器、串口等有关信息。 DESCRIPTION:用于存放有关系统信息。DEVICEMAP:用于存放设备映像。 RESOURCEMAP;用于存放资源映像。 (2)SAM子键 (3)SECURITY子键 该子键位于HKEY_LOCAL_MACHINE\Security分支上,该分支只是为将来的 高级功能而预留的。 (4)SOFTWARE子键 该子键中保留的是所有已安装的32位应用程序的信息。 (5)SYSTEM子键 该子键存放的是启动时所使用的信息和修复系统时所需的信息,其中包 括各个驱动程序的描述信息和配置信息等 。

  36. 2.HKEY_CLASSES_ROOT根键 “单用户类注册”(per-user class registration) HKEY_CLASSES_ ROOT主键与当前注册使用的用户有关,它实际上是HKEY_CURRENT_USER\SOFTWARE\Classes和HKEY_LOCAL_MACHINE\SOFTWARE\Classes的交集。如果两者的内容有冲突,则HKEY_CURRENT_USER\SOFTWARE\Classes优先。 (1)同一台计算机上的不同用户可以分别定制不同 的Windows 2000。 (2)提高了注册表的安全性。 (3)支持漫游类注册。

  37. 3.HKEY_CURRENT_CONFIG根键 如果你在Windows中设置了两套或者两套以上的硬件配置文件(Hardware Configuration file),则在系统启动时将会让用户选择使用哪套配置文件。而HKEY_CURRENT_CONFIG根键中存放的则是当前配置文件的所有信息。

  38. 4.HKEY_USERS根键 该根键保存了存放在本地计算机口令列表中的用户标识和密码列表,即用户设置。每个用户的预配置信息都存储在HKEY_USERS根键中。HKEY_USERS是远程计算机中访问的根键之一。其内容取决于计算机是否激活了用户配置文件,若未激活用户配置文件,则可以看到称为.DEFAULT的单一子键,该子键包括和所有用户相关的各种设置,并且和\Windows下的USER.DAT文件相配合。若激活了用户配置文件并且正确地执行了登录,则还有一个“用户名”的子键,该用户名为用户登录的名称。

  39. 5.HKEY_CURRENT_USER根键 HKEY_CURRENT_USER根键中保存的信息(当前用户的子键信息)与HKEY_ USERS\.Default分支中所保存的信息是相同的。任何对HKEY_CURRENT_USER根键中的信息的修改都会导致对HKEY_USERS\.Default中子键信息的修改,反之也是如此。 HKEY_ CURRENT_USER下面有7个子键: AppEvents:这个子键里登记已注册的各种应用事件。 ControlPanel:它里面涉及控制面板设置有关的内容。 InstallLocationsMRU:Windows安装路径的有关信息。 Keyboardlayout:关于键盘设置的信息。 Network:有关网络设置的信息。 RemoteAccess:安装IE时建立的子关键字,包含该应用程序的有关信息。 Software:用户安装软件的有关信息。

  40. 2.1.2 注册表的操作 1.注册表的备份 点击注册表编辑器的“文件”菜单,再点击“导出”选项,在弹出的对话框中输入文件名“regedit”,将“保存类型”选为“注册表文件”,再将“导出范围”设置为“全部”,接下来选择文件存储位置,最后点击“保存”按钮,就可将系统的注册表保存到硬盘上。同样,如果点击“导入”选项,选择要导入的注册表文件,就可以完成整个注册表的还原。 2.注册表项目的还原单击程序界面“文件”项下拉菜单中的“导入”命令,程序会给出一个对话框,在其中的文件列表窗口中选择需要还原的文件名,之后单击“打开”按钮确定即可。 3.向注册表中添加新的项或子项启动注册表编辑器,在程序左边的树形列表窗口中选择将在其下添加新项的项或子项。单击程序界面菜单条中的“编辑”项,并从关联的下拉菜单中选择“新建”命令,在出现的窗口中的“项名称”文本框中输入需要添加的新项名称,对于指定类别,可根据自己的需要设置,当然如果不添加也可以。最后单击确定按钮,返回程序界面即可。

  41. 4.以关键字方式查找 首先在注册表编辑器界面中选择需要扫描的项或子项所在窗口,单击界面菜单条“编辑”项下拉菜单中的“查找”命令。在“查找内容”文本框中输入需要查找的内容关键字,并选择相应的扫描控制方式,之后,单击“查找下一个”按钮确定即可。 5.删除注册表中无用的子项或值项首先在程序界面中找到需要删除项目所在的主项窗口,然后定位需要删除的值项,一般对于软件注册项都包括在HKEY_CURRENT_USER项下的Software子项中。单击程序界面菜单条“编辑”项下拉菜单中的“删除”命令或者是直接按下“Delete”键,程序会给出删除确认对话框,单击“Yes”按钮确认即可。

  42. 6.设置注册表项的权限 首先在程序界面窗口中选择需要指定权限的项,单击界面“编辑”项下拉菜单,从中选择“权限”命令,在“名称”列表框中选择需要设置权限的用户或组,如果暂时还没有添加,可单击“添加”按钮,在关联的“选择用户、计算机或组”设置界面中选择需要添加的对象。在界面中的“权限”项列表框中设置允许当前选择对象的使用权限,其中包括“读取”和“完全控制”(读写)。此外,当点“高级”项,程序会给出针对当前授权注册表项访问控制设置,其中包括了更加严密的授权设置,如是否允许查询数值、设置数值、创建子项、枚举子项、通知、创建链接、删除、写入DAC、写入所有者、读取控制等,根据自己的需要选择即可。

  43. 2.2 Visual C++编程基础 2.2.1 Visual C++概述 Visual C++(以下简称VC++)是微软开发的一套C/C++编译器,它包含了综合的微软基本类库(Microsoft Foundation Class Library),使得开发Windows应用程序变得简单而高效。它提供有复杂的资源编辑器,可以编辑对话框、菜单、工具栏、图像和其他许多Windows应用程序的组成元素。它还有一个非常好的集成开发环境——Developer Studio,用它可以在编写C++程序时对程序的结构进行可视化的管理。

  44. 2.2.2 MFC简介 MFC中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序。 MFC的基本结构是层次结构。该层次结构包容了Windows API中的用户界面部分,并使你能够很容易地以面向对象的方式建立Windows应用程序。MFC库的主要优点是效率高。 当使用 MFC 时,首先编写的代码是用来建立必要的用户界面控制并定制其外观。

  45. 2.2.3 Windows消息机制简介 一个消息由一个消息名称(UINT)和两个参数(WPARAM,LPARAM)组成。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息。 一个消息必须由某一个窗口来接收。作为程序员,在窗口的进程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。 系统将会为每一个进程维护一个消息队列,所有属于该进程的消息都会被放入队列中。 2.2.4 Visual C++编程示例

  46. 2.3 汇编语言编程及反汇编调试 2.3.1 Win32汇编与Masm32 Win32汇编是指32位Windows平台下的汇编语言,它可以调用Windows的API,用Win32汇编写Windows应用程序类似于用C/SDK编程。 Win32汇编没有进行那么多的封装,更接近系统的底层,使用起来更加灵活,能做到许多高级语言无法做到的事(如代码重定位)。汇编程序生成的可执行文件体积小,执行速度快,可用于软件的核心程序段,以提高软件性能。 与计算机硬件密切相关的驱动程序开发,计算机病毒的分析与防治、软件加密解密、软件调试等方面都会用到Win32汇编的知识。

  47. 1.MASM32简介 MASM32就是一个用于Win32汇编的软件包,它包括汇编编译器Ml.exe、资源编译器Rc.exe、32位链接器Link.exe和一个简单的IDE环境QEDITOR.exe。

  48. 2.MASM32与其他Win32汇编开发工具的比较 Win32汇编最好的选择还是MASM32,它可以支持高级语法,使汇编编程更简单。同时它还集成了与之配套的链接器和资源编译器,不需要自己逐个搜集。另外,用它附带的IDE进行。总之,使用MASM32可以方便、快捷地开发出一个汇编程序,是很适合初学者的一个开发平台。

  49. 2.3.2 MASM32编程示例 2.3.3 W32Dasm与静态反汇编 静态反汇编是指把PE等格式的可执行文件反汇编为类似汇编源文件的文本文件,其中的机器指令码用汇编助记符来表示。 W32Dasm是一个著名的静态反汇编分析工具,它除了能将应用程序反汇编为汇编源程序,还提供许多相关信息及便捷的操作以帮助对程序的静态调试,另外还有简单的动态调试功能。

More Related