dfs-service-lec1+Windows网络编程基础.pdf

上传人:qwe****56 文档编号:70010810 上传时间:2023-01-14 格式:PDF 页数:53 大小:1.25MB
返回 下载 相关 举报
dfs-service-lec1+Windows网络编程基础.pdf_第1页
第1页 / 共53页
dfs-service-lec1+Windows网络编程基础.pdf_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《dfs-service-lec1+Windows网络编程基础.pdf》由会员分享,可在线阅读,更多相关《dfs-service-lec1+Windows网络编程基础.pdf(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1网络安全编程技术任德斌任德斌四川大学电子信息学院2网络安全编程的背景网站挂马QQ盗号网络流的监控远程监控肉鸡3课程主要内容WindowsWindows网络编程基础网络编程基础socketsocket编程编程高级高级socketsocket编程编程网络安全应用编程网络安全应用编程主机和端口扫描主机和端口扫描数据包的捕获数据包的捕获安全编码WindowsWindows系统安全编程系统安全编程键盘监听键盘监听API HOOK4参考书籍1.1.WindowsWindows网络编程网络编程,罗莉琴,人民,罗莉琴,人民邮电出版社,邮电出版社,201120112.WindowsWindows程序设计程序设

2、计(第第2 2版版),王艳平,王艳平等等,人民邮电出版社,2008(经典)3.3.WindowsWindows核心编程(第五版)核心编程(第五版),Jeffrey Jeffrey,清华大学出版社,清华大学出版社 ,20082008(经典)4.计算机网络应用软件编程技术,吴英,机械工业出版社,20105.TCP/IP网络编程,韩尹圣雨,人民邮电出版社,20145考核方式出勤率:10%课程设计,要求进行软件开发,实现一定的功能,并给出相关的文档,在课程后期要做10分钟左右的报告:40%。1-2人。期末考试:50%6Windows编程学习编程,选择语言和工具是第一步,而且是非常重要的一步,目前的编程

3、语言很多,有C、C+、C#、Java和Python等等。Windows是当今主流的操作系统,也是网络游戏主要的开发平台。不论是网络游戏客户端开发还是服务器端开发,都有很多成功的网络游戏作品运行于Windows操作系统上了解操作系统的特性7第一讲:Windows网络编程基础主要内容:TCP/IPTCP/IP协议基础协议基础WindowsWindows编程基础编程基础81.TCP/IP协议族分层应用层应用层应用层应用层各种应用程序:各种应用程序:各种应用程序:各种应用程序:TelnetTelnet、FTPFTP、WWWWWW、SMTPSMTP负责处理特定的应用程序细节负责处理特定的应用程序细节负责

4、处理特定的应用程序细节负责处理特定的应用程序细节运输层运输层运输层运输层(传输层)(传输层)(传输层)(传输层)网络层网络层网络层网络层(互联网层)(互联网层)(互联网层)(互联网层)链路层链路层链路层链路层(数据连路层(数据连路层(数据连路层(数据连路层/网网网网络接口层)络接口层)络接口层)络接口层)TCPTCP和和和和UDPUDP为两台主机上的应用程序提供为两台主机上的应用程序提供为两台主机上的应用程序提供为两台主机上的应用程序提供端到端的通信端到端的通信端到端的通信端到端的通信IPIP、ICMPICMP和和和和IGMPIGMP处理分组在网络中的活动处理分组在网络中的活动处理分组在网络中

5、的活动处理分组在网络中的活动操作系统中的设备驱动程序、操作系统中的设备驱动程序、操作系统中的设备驱动程序、操作系统中的设备驱动程序、计算机中对应的网络接口卡计算机中对应的网络接口卡计算机中对应的网络接口卡计算机中对应的网络接口卡 处理与电缆的物理接口细节处理与电缆的物理接口细节处理与电缆的物理接口细节处理与电缆的物理接口细节9TCP/IP协议族中不同层次的协议协议族中不同层次的协议用户进程用户进程用户进程用户进程用户进程用户进程用户进程用户进程TCPTCPUDPUDPICMPICMPIPIPIGMPIGMPARPARP硬件接口硬件接口RARPRARP应用层应用层传输层传输层网络层网络层网络接口

6、层网络接口层媒体媒体10数据进入协议栈时的封装过程数据进入协议栈时的封装过程 6 6 2 20 20 4目的地址源地址类型CRC应用数据IP首部 TCP首部应用数据TCP首部用户数据Appl首部用户数据应用数据IP首部 TCP首部以太网帧以太网帧以太网帧以太网帧461500461500字节字节字节字节IPIP数据报数据报数据报数据报TCPTCP段段段段应用程序应用程序应用程序应用程序TCPTCPIPIP以太网以太网以太网以太网驱动程序驱动程序驱动程序驱动程序以太网以太网以太网以太网以太网首部以太网首部以太网首部以太网首部以太网以太网以太网以太网尾部尾部尾部尾部11以太网数据帧的分用过程Teln

7、etTelnetFTPFTPSMTPSMTPSNMPSNMPTFTPTFTPTCPTCPUDPUDPICMPICMPIPIPARPARP以太网驱以太网驱以太网驱以太网驱动程序动程序动程序动程序以太网硬件以太网硬件以太网硬件以太网硬件23232121252516116169696 617171 10800H0800H0806H0806HRARARPRP0835H0835H根据以太网头部中根据以太网头部中根据以太网头部中根据以太网头部中的帧类型进行分用的帧类型进行分用的帧类型进行分用的帧类型进行分用根据根据根据根据IPIP头部中的头部中的头部中的头部中的协议值进行分用协议值进行分用协议值进行分用协

8、议值进行分用根据根据根据根据TCPTCP或或或或UDPUDP头部中的端口头部中的端口头部中的端口头部中的端口号进行分用号进行分用号进行分用号进行分用12ApplicationTCP/UDPIPNetwork AccessApplicationTCP/UDPIPNetwork Access使用下层提供的服务提供上层一些服务13无连接通信不同物理网络之间存在差异通信能力、分组长度、延时允许IP报文从不同路径达到目的地路由器为每个路由器为每个IPIP报文独立选路报文独立选路IP通信不保证可靠性,但灵活性增加多种网络都能满足的通信方式允许多种选路策略(如可靠性、容量、延时)结合应用考虑实际通信策略14

9、1.2 UDP概述 UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和可选的差错检测的功能。虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。发送数据之前不需要建立连接UDP 的主机不需要维持复杂的连接状态表。UDP 用户数据报只有8个字节的首部开销。网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。151.3 TCP概述高层的许多应用需要传输大量的数据可靠的通信服务无法容忍IP 或 UDP提供的无可靠性保证的服务各种应用无法保证完全一致的可靠性方法TCP面向连接的可靠的字节流方式FTP、SMTP、TelnetTCP建

10、立连接过程三次握手三次握手17UDPUDP和和TCPTCP的比较的比较(程序员角度)1.可靠性2.面向连接3.每次发送数据时,是否都需要指定目的IP和端口?4.能否一次接收半个或者多个包?5.是否支持广播或多播?6.安全性18同一系统中不同进程间进行通信时,通过系统分配的进程号(Process ID)就可以惟一标识一个进程。也就是说,要通信的进程只要知道对方的进程号就可以进行通信。而网络情况下进程间的通信问题就要复杂得多,不能只简单地用进程号来标识不同的进程,因为各主机都独立地分配其进程号。为了惟一地标识网络中通信的一个进程(即通信的某一方),就要使用一个如下的三元组:(协议,本地IP地址,本

11、地端口号)2.4 网络应用程序的标识问题19该怎样完整地表示网络中进行通信的两个进程,或一个通信流?(协议,本地地址,本地端口号,远地协议,本地地址,本地端口号,远地地址,远地端口号地址,远地端口号)网络应用程序的标识问题(续)202 Windows2 Windows编程基础编程基础Windows编程的几个概念进程21(1)WindowsWindows编程的几个基本概念与与WindowsWindows系统密切相关的五个基本概系统密切相关的五个基本概念:念:窗口窗口句柄句柄消息、事件消息、事件APIAPI22窗口窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多

12、人都误以为只有具有标题栏、状态栏、最大化、最小化按钮这样标准的方框才叫窗口。其实窗口的概念很广,例如按钮按钮和对话框对话框等也是窗口,只不过是一种特殊的窗口罢了。23句柄WindowsWindows是面向对象的是面向对象的句柄像一个指针句柄像一个指针,通过句柄就可以控制该句柄指向的对象。句柄是系统用来标识不同对象类型的工具。如窗口、菜单等,这些东西在系统中被如窗口、菜单等,这些东西在系统中被视为不同类型的对象,用不同的句柄将视为不同类型的对象,用不同的句柄将他们区分开来。他们区分开来。24“消息”的概念Message:窗口使用 消息 来通信在Windows中应用程序是没有权利直接知道硬件发生了

13、什么变化,只有通过OS来通知。消息是应用程序和计算机交互的途径,在计算机上每做一个动作都会产生一个或多个消息程序建立的每个窗口都有一个相应的窗口消息处理函数改变窗口大小OSmessage应用程序25 Windows的内部机制 Windows是一个“基于事件的,消息驱动的基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作(如改变窗口大小或移动、单击鼠标等)该动作就会触发一个相应的“事件”。系统每次检测到一个事件时,就会给程序发送一个“消息”,从而使程序可以处理该事件。每次检测到一个用户事件,程序就对该事件做出响应,处理完以后,再等待下一个事件的发生。2

14、6WindowsWindows应用程序、操作系统、计应用程序、操作系统、计算机硬件之间的相互关系算机硬件之间的相互关系 应用程序 操作系统 输入输出设备 消息队列 27API 函数应用程序如何通知OS做某些事情的呢?这对应着箭头3API是英文Application Programming Interface 的缩写,意思是“应用程序接口”,泛指系统为应用程序提供的一系列函数接口在编程的时候可以直接调用,而不必知道其内部实现的过程,只知道它的原型和返回值就可以了。#include#include int main()DeleteFile(C:test.txt);printf(删除成功n);ret

15、urn 0;28关于消息及消息队列 操作系统是怎样将感知到的事件传递给应用程序的呢?这是通操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过过消息机制消息机制消息机制消息机制(Message)(Message)来实现的。操作系统将每个事件都包装来实现的。操作系统将每个事件都包装成消息的结构体成消息的结构体MSGMSG来传递给应用程序,来传递给应用程序,MSGMSG结构定义如下:结构定义如下:typedef struct tagMSG HWND hWnd;/目标窗口句柄 UINT message;/消息标识 WPARAM wParam;/消息参数1(附加信息,16位)LPARAM lPar

16、am;/消息参数2(附加信息,32位)DWORD time;/消息发送时间 POINT pt;/消息发送时鼠标的屏幕坐标 MSG;29 Windows Windows中的数据类型中的数据类型WINAPI DWORD MultiThreadProc(LPVOID*lpParaw)typedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE;typedef unsigned short WORD;typedef void *LPVOID;实际上,大部分的Windows基本数据类型都是来自C语言数据类型。数据定义的头文

17、件为windef.h。30Windows编程命名规则使用前缀数据型态cchar或WCHAR或TCHARbyBYTE(无正负号字符)nshortiintx,yint分别用作x坐标和y坐标cx,cyint分别用作x长度和y长度;C代表计数器b或fBOOL(int);f代表旗标wWORD(无正负号短整数)lLONG(长整数)(长整数)dwDWORD(无正负号长整数)fnfunction(函数)sstring(字符串)sz以字节值0结尾的字符串h句柄句柄p指标指标31WindowsWindows消息举例消息举例Windows中用宏定义的方式预定义了系统消息。消息名称消息含义WM_CREATE应用程序创

18、建一个窗口WM_DESTROY一个窗口被销毁WM_MOVE移动一个窗口WM_SIZE改变一个窗口的大小WM_QUERYENDSESSION当用户选择结束对话框或程序自己调用ExitWindows函数WM_QUIT用来结束程序运行或当程序调用postquitmessage函数WM_SHOWWINDOW当隐藏或显示窗口是发送此消息给这个窗口WM_SETFONT当绘制文本时程序发送此消息得到控件要用的颜色WM_SETHOTKEY应用程序发送此消息让一个窗口与一个热键相关连WM_GETHOTKEY应用程序发送此消息来判断热键与某个窗口是否有关联WM_QUERYDRAGICON此消息发送给最小化窗口WM

19、_KEYDOWN按下一个键WM_KEYUP释放一个键32 Windows Windows 消消 息息 机机 制制DefaultWindowProcedureDefaultWindowProcedureMessage LoopMessage LoopSendMessagePostMessageWindowProcedureApp1App1App1 Message QueueApp1 Message QueueApp2 Message QueueApp2 Message QueueApp3 Message QueueApp3 Message QueueEvent33WinMain函数WinMain

20、主函数是基于窗口的应用程序的入口。int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPTSTR lpCmdLine,int nCmdShow)./注册窗口类./创建主窗口./显示并更新主窗口./进入消息循环./程序退出参见教材p204-207,p210,比较麻烦。34 2)基于对话框的编程int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR,int)DialogBoxDialogBox(/用对话框模版创建模态对话框hInstance,/实例句柄(LPCTSTR)IDD_DIALOG,/对话

21、框资源ID号NULL,/父窗口句柄DlgProcDlgProc/消息处理函数);return 0;对话框可以在VC中通过插入资源来获取,并将该资源文件保存后加入项目中。上面WinMain函数中的IDD_DIALOG表对话框的ID。35消息处理函数BOOL WINAPI DlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)switch(message)case WM_INITDIALOG:MyList=GetDlgItem(hDlg,IDC_LIST1);break;case WM_LBUTTONDOWN:SendMessage(

22、MyList,LB_ADDSTRING,NULL,(long)szLText);/向列表框控件中添加文本break;case WM_COMMAND:return 0;36实验目的:基于对话框的编程 要求:有窗口,能捕获鼠标和点击命令的动作。37(3)进程的概念程序程序:计算机指令集合,它以文件的形式存储在磁盘上,是一连串静态的指令。接触最多的是以exe作为扩展名的文件。进程进程:常被定义为一个正在运行程序的实例,拥有自己的虚拟地址空间,拥有自己虚拟地址空间,拥有自己的代码、数据和其它系统资源的代码、数据和其它系统资源。38进程进程就是应用程序的执行实例(或称一个执行程序),进程是程序动态的描述

23、。一个exe文件,在没有被执行的时候称之为应用程序,当被执行以后,就被操作系统作为一个进程执行了。当关机或退出,进程便消亡彻底结束了生命。进程经历了由进程经历了由“创建创建”到到“消消亡亡”的生命期,而程序自始的生命期,而程序自始至终存在于你的硬盘上,不至终存在于你的硬盘上,不管计算机是否启动。管计算机是否启动。39地址空间进程 A0 x12345678进程Bcodecode0 x1234567840Intel CPU 页表系统(简化版)虚拟地址32 bits12因为一个页面的大小=4K bytes因为一个页面的大小=4K bytes 物理内存地址 物理内存地址 Page Table Page

24、 Table4 bytes32-12=20 Memory Manager Unit Memory Manager Unit 页表需要 4 M bytes 页表需要 4 M bytesPage file Page Fault Page Fault 1M个表项 1M个表项41应用程序的启动过程就是进程的创建过程。操作系统是通过调用CreateProcessCreateProcess 函数来创建新的进程,这时系统会创建一个进程内核对象进程内核对象,其使用计数被初始化为1。系统然后会为新的进程创建一个虚拟地址空间虚拟地址空间,加载应用程序运行时所需要的代码和数据。系统接着会为新进程创建一个主线程创建一

25、个主线程,这个主线程通过执行C/C+运行期启动代码开始运行,C/C+运行期启动代码又会调用main 函数。如果系统能够成功创建新的进程和进程的主线程,CreateProcess 函数会返回TRUE,否则返回FALSE。创建进程42创建进程(续)创建进程内核对象创建进程内核对象创建进程内核对象创建进程内核对象一个线程调用CreateProcess1管理管理 Process 的的结构结构管理管理 Process 的的结构结构创建虚拟地址空间创建虚拟地址空间创建虚拟地址空间创建虚拟地址空间加载加载代码代码,数据和数据和 DLL加载加载代码代码,数据和数据和 DLLmain创建线程内核对象创建线程内核

26、对象创建线程内核对象创建线程内核对象1管理管理 Thread 的的结构结构管理管理 Thread 的的结构结构建立建立主线程主线程建立建立主线程主线程main执行执行 C/C+run-timeStartup code执行执行 C/C+run-timeStartup code43 CreateProcess 函数创建一个新的进程和该进程的主线程。新的进程会在父进程的安全上下文中运行指定的可执行文件。函数用法如下:CreateProcess 函数44 char szCommandLine=“cmd”;STARTUPINFO si=sizeof(si);PROCESS_INFORMATION pi;

27、BOOL bRet=CreateProcess(NULL,/不在此指定可执行文件的名字 szCommandLine,/命令行的参数 NULL,/默认进程安全性 NULL,/默认线程安全性 FALSE,/当前进程句柄不可以被子进程继承 CREATE_NEW_CONSOLE,/为新进程创建新的控制台窗口 NULL,/使用本进程的环境变量 NULL,/使用本进程的驱动器和目录&si,/对窗口进行设置&pi);/创建的进程的一些信息 创建进程的一个例子45获取系统中的进程 有时我们需要列出当前正在运行的一系列进程,使用ToolHelp 函数就可以完成这一任务。例:取得一个正在运行的进程列表。(1)使用

28、CreateToolhelp32Snapshot 函数给当前系统内执行的进程拍快照(Snapshot),也就是获得一个进程列表,这个列表中记录着进程的ID、进程对应的可执行文件的名称和创建该进程的进程ID等数据。(2)使用Process32First 函数和Process32Next函数遍历快照中记录的列表。(3)将打印出每个进程的可执行文件的名称和进程ID号。46#include#include /声明快照函数的头文件int main(int argc,char*argv)PROCESSENTRY32 pe32;/在使用这个结构之前,先设置它的大小 pe32.dwSize=sizeof(pe

29、32);/给系统内的所有进程拍一个快照HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);If(hProcessSnap=INVALID_HANDLE_VALUE)printf(CreateToolhelp32Snapshot 调用失败!n);return-1;47 /遍历进程快照,轮流显示每个进程的信息 BOOL bMore=Process32First(hProcessSnap,&pe32);While(bMore)printf(进程名称:%s n,pe32.szExeFile);printf(进程ID号:%

30、u nn,pe32.th32ProcessID);bMore=Process32Next(hProcessSnap,&pe32);/不要忘记清除掉snapshot对象 CloseHandle(hProcessSnap);return 0;48终止进程终止进程终止进程也就是结束程序的执行,让它从内存中卸载。进程终止的原因可能有4 种:(1)主线程的入口函数返回。(2)进程中一个线程调用了ExitProcess 函数。(3)此进程中的所有线程都结束了。(4)其他进程中的一个线程调用了TerminateProcess 函 数。49 ExitProcess 函数只能用来结束当前进程,不能用于结束其他进

31、程。如果需要结束其他进程的执行,可以使用TerminateProcess 函数。注意在对一个进程操作前,必须首先取得该进程的进程句柄。终止其它进程50下面一段代码用来终止一个进程:BOOL TerminateProcessFromId(DWORD dwId)BOOL bRet=FALSE;/打开目标进程,取得进程句柄 HANDLE hProcess =OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwId);If(hProcess!=NULL)/终止进程 bRet =TerminateProcess(hProcess,0);CloseHandle(hProcess)

32、;return bRet;51任务:进程间的守护目的:不让用户结束某个进程方法:关闭失败还是自动重启实现:如何知道被保护进程被关闭?轮询?如何从被保护进程的名称获取它的ID52WaitForSingleObjectWaitForSingleObject 阻塞式的等待函数,只有被等待的对象产被等待的对象产生信号生信号或超时时才会返回。DWORD WaitForSingleObject(HANDLE hHandle,/等待的对象DWORD dwMilliseconds/超时时间);进程或线程关闭时,会发出信号(the objects state is signaled)。实验作业基于窗口的编程进程的枚举和查找进程的守护

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁