好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

网络安全编程基础精编版.pptx

65页
  • 卖家[上传人]:ahu****ng1
  • 文档编号:145188803
  • 上传时间:2020-09-17
  • 文档格式:PPTX
  • 文档大小:1.82MB
  • / 65 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三章 网络安全编程基础,3.1 网络安全编程概述 3.2 C语言发展的4个阶段 3.3 网络安全编程,,第1页,,内容提要,网络安全编程主要涉及的是操作系统编程,在Windows平台下,目前主要采用C/C++语言 本章将介绍Windows操作系统的基本原理以及C语言的四个发展阶段,每一阶段都用典型的案例说明 详细说明在网络安全领域如何使用C/C++语言实现Socket编程、注册表编程、定时器编程、驻留程序编程和多线程编程2,,网络安全编程概述,从理论上说,任何一门语言可以在任何一个操作系统上编程,C语言可以在Windows下编程,同样也可以在Linux下编程 编程是一项比较综合的工作,除了熟练使用编程工具以外,还要了解系统本身的内部工作机理和编程语言3,,Windows内部机制,Windows是一个“基于事件的,消息驱动的”操作系统在Windows下执行一个程序,只要用户进行了影响窗口的动作(如改变窗口大小或移动、单击鼠标等)该动作就会触发一个相应的“事件” 系统每次检测到一个事件时,就会给程序发送一个“消息”,从而使程序可以处理该事件 每次检测到一个用户事件,程序就对该事件做出响应,处理完以后,再等待下一个事件的发生。

      4,,八个基本概念,与Windows系统密切相关的八个基本概念分别是: 窗口、程序、进程、线程 消息、事件、句柄、API与SDK5,,1、窗口,窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多人都误以为只有具有标题栏、状态栏、最大化、最小化按钮这样标准的方框才叫窗口 其实窗口的概念很广,例如按钮和对话框等也是窗口哦,只不过是一种特殊的窗口罢了6,,2、程序,通常说的程序都是指一个能让计算机识别的文件 接触得最多的是以exe或者com作为扩展名的文件7,,3、进程,进程就是应用程序的执行实例(或称一个执行程序),进程是程序动态的描述 一个以exe作为扩展名的文件,在没有被执行的时候称之为应用程序,当用鼠标双击执行以后,就被操作系统作为一个进程执行了 当关机或者在任务栏的图标上单击鼠标右键选“退出”时,进程便消亡,彻底结束了生命 进程经历了由“创建”到“消亡”的生命期,而程序自始至终存在于你的硬盘上,不管计算机是否启动8,,4、线程,线程是进程的一个执行单元,同一个进程中的各个线程对应于一组CPU指令、一组CPU寄存器以及一个堆栈 进程本来就具有动态的含义,是通过线程来体现的。

      9,,5、消息,消息是应用程序和计算机交互的途径,在计算机上几乎做每一个动作都会产生一个消息 鼠标被移动会产生WM_MOUSEMOVE消息,鼠标左键被按下会产生WM_LBUTTONDOWN的消息,鼠标右键按下便产生WM_RBUTTONDOWN消息等等10,,事件 句柄:,6、事件 从字面意思就可以明白它的含义,如在程序运行的过程中改变窗口的大小或者移动窗口等,都会触发相应的“事件”,从而调用相关的事件处理函数 7、句柄: 单单一个“柄”字便可以解释它的意思了,句柄是一个指针,通过句柄就可以控制该句柄指向的对象编写程序总是要和各种句柄打交道的,句柄是系统用来标识不同对象类型的工具,如窗口、菜单等,这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来11,,8、API与SDK,API是英文Application Programming Interface 的缩写,意思是“应用程序接口”,泛指系统为应用程序提供的一系列函数接口 在编程的时候可以直接调用,而不必知道其内部实现的过程,只知道它的原型和返回值就可以了 SDK是英文Software Development Kit的缩写,意思是“软件开发工具包”,微软提供了许多专门的SDK开发包,比如DirectX开发包和语音识别开发包等等。

      12,,学习Windows下编程,学习语言,选择语言和工具是第一步,而且是非常重要的一步工作,目前的编程语言那么多,有C、C++、C#、Java和汇编语言等等 虽然有很多语言,只要精通一门就够了从实用的角度来讲,C/C++是最好的选择,而微软公司的Visual C++和Insprise公司(原Borland公司)的C++ Builder是其相应开发工具的两大主流13,,开发工具,在开发工具上,选择比较流行的VC++6.0,而且最好是英文版本,主界面如图3-2所示14,,学习编程需要经历三大步,学习编程需要经历三大步:一、读程序;二、写程序;三、积累功能代码段 1、读程序 在没有阅读过一份完整的源代码之前,别指望能写出有多好的程序!读程序必须具备一定的语言基础知识,基础知识主要是指语法知识,最起码要能读懂程序的每一行意思有没有程序的设计思想,在这个时期并不重要,只要具备一定的语法基础就可以了 学一门语言并不需要刻意去记条条框框的语法,看代码的时候,遇到了不明白的地方再去查相关的资料,补充基础知识再配合源程序的思路,这时的理解才是最深刻的 2、写程序 刚开始写程序,不要奢望一下子写出很出色的程序来,“万丈高楼平底起”,编程贵在动手,只要动手去写就可以了。

      此外,还要依照自身的能力循序渐进地写,开始的时候写一点功能简单的、篇幅短小的代码,力求简洁、完整,然后在此基础上进行扩充,一点点的添加功能 3、积累功能代码 积累非常的重要,将平时自己写的和自己已经读通的程序分类保存起来,建一个属于自己的代码库,需要相关功能的时候,就到代码库中找相关的代码这样既提高编码的效率又提高了正确率15,,选择编程工具,目前流行两大语法体系:Basic语系和C语系同一个语系下语言的基本语法是一样两大语系如图3-3所示 C语系中,目前两大语言如日中天:C++和JavaC++适宜做系统软件的开发、Java更适宜做网络应用开发 虽然VC++.NET已经面世很久了,但是C++的开发工具目前主流依然是VC++6.0和C++ Builder6.0 Java流行的开发工具比较多,比如:IBM公司的Visual Age和Websphere Studio,Insprise公司JBuilder等等16,,VC++6.0,VC++是基于C/C++的集成开发工具,目前最常用的版本是VC++6.0VC++有一套集成开发工具,其中包括各种编辑器、编译工具、集成调试器等等在编写程序的过程中,各种操作都可以通过单击相应的菜单完成。

      17,,新建的是一个控制台程序,可以看到许多工程类型,这里新建的是一个控制台程序,选择“Win32 Console Application”,选择工程存放的路径,然后输入工程名“proj3_1”,然后点击按钮“OK”出现的界面如图3-5所示 在图3-5的界面下选择创建工程的模板,选择空模板“An empty project”,点击按钮“Finish”,出现工程总结窗口,如图3-6所示18,,编程工具的使用,案例名称:编程工具的使用 程序名称:proj3_1.cpp #include void main() cout <

      20,,C语言发展的四个阶段,C语言经过不断的发展,在编程体系中可以将其分成四个阶段 1、面向过程的C语言 2、面向对象的C++语言 3、SDK编程 4、MFC编程(Microsoft Foundation Class:微软基类库)21,,面向过程的C语言,C语言功能非常强大,Linux/Unix操作系统就是用C语言写的, C语言直接调用操作系统提供的API函数可以编写非常前大的程序 C和C++的最主要区别是:C语言中没有类的概念,C++在C的语法基础上引入了类(Class),所以C++和C的语法是基本相同的面向过程编程,最基本的程序用C语言编写如proj3_2.cpp所示 案例名称:使用C语言编程 程序名称:proj3_2.cpp #include main() printf(Hello DOSn); ,,,22,,案例3-1 读取命令行参数,main函数是程序的主函数,程序执行的时候先从main函数开始 该函数可以带参数,第一个参数是int型的,第二个参数是字符指针,具体使用方法如proj3_3.cpp所示 案例名称:读取命令行参数 程序名称:proj3_3.cpp #include int main(int argc, char *argv ) int i; for (i = 1; i < argc; i++) printf(%sn, argvi); return 0; ,,,23,,面向对象的C++语言,面向对象程序设计语言可以将一些变量和函数封装到类(Class)中,当变量被类封装后,称之为属性或者数据成员,当函数被类封装后,称之为方法或者成员函数。

      定义好的一个类,然后定义一个类的实例,这个实例就叫做对象,在C++中可以用类定义对象,使用方法如程序proj3_4.cpp所示24,,在C++中使用类,案例名称:在C++中使用类 程序名称:proj3_4.cpp #include class person public: int heart; char *name; int run()//定义成员函数run() heart=heart+20; return heart; ;,,,25,,,void main() int iRunStop; person ZhangSan; ZhangSan.name = 张三; ZhangSan.heart = 72; cout<<姓名:<

      案例名称:调用C库函数 程序名称:proj3_6.cpp #include #include int main() DeleteFile(C:test.txt); printf(删除成功n); return 0; ,,,27,,编写窗口应用程序,案例名称:编写对话框 程序名称:proj3_7.cpp #include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) MessageBox (NULL, TEXT (Hello, Windows!), TEXT (HelloMsg), MB_OK) ; return 0 ; ,,,,28,,编写窗口应用程序,参数一:hInstance 是当前实例的句柄句柄是windows编程极其重要的概念它是一个整数,用于标识程序、窗口和资源等在这里hInstance表示应用程序本身 参数二:hPrevInstance总是为NULL,在Windows早期版本中,当多次同时运行同一个程序时,系统会创建该程序的多个“实例”,同一程序的所有实例共享代码和内存。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.