随着Internet技术的应用和普及,我们已经进入了信息化社会,由于大多数应用程序都是运行在网络环境下,编程就成了确保在21世纪立足的关键技能之一,而Windows操作系统又是程序员使用最广泛的应用程序开发系统。今天的文章,我们汇总了windows网络编程的相关内容,供需要的小伙伴参考学习。Windows 网络编程- Windows 网络编程:应用程序与驱动程序的通信 虽然应用程序处在操作系统的用户态,而驱动程序处在操作系统的内核态,但是它们之间是必须通信的,应用程序的执行都是依赖于操作系统内核的。 Windows 网络编程:系统服务描述表 System Service Descriptor Table(系统服务描述表)的作用是把用户层的Win32 API和内核层的API建立一个关联。 Windows 网络编程:驱动程序之进程遍历 枚举进程不能在用户态下进行,需要到内核态下进行,这样就必须使用驱动程序来完成。先用WinDbg完成一次手动的枚举过程,再通过代码来完成。 Windows 网络编程:驱动程序之 Hello World 驱动都是要加载入内核的,我们要做的很多事情也需要在内核下完成,要想在内核中实现功能就需要编写驱动模块。 Windows 网络编程:加壳与脱壳 壳是一种较为特殊的软件。壳分为两类,一类是压缩壳,另一类是加密壳。当然,还有介于两者之间的混合壳。 Windows 网络编程:引导区解析 写一个程序来简单地解析一下引导区。在整个过程中,编写程序不是难点,难点在于引导区的各个数据结构和各结构之间的数据关系。 Windows 网络编程:目录监控工具 通过一个简单的例子来介绍如何监控某目录及目录下文件的变动情况。 Windows 网络编程:U盘防御软件 通过U盘来传播病毒通常是使用操作系统的自动运行功能,并配合U盘下的Autorun.inf文件来实现的。如果让操作系统不自动运行移动磁盘,或者保证移动磁盘下不存在Autorun.inf文件,那样通过U盘感染病毒的几率就小很多了。 Windows 网络编程:专杀工具 专杀工具是针对某一个或某一类的病毒、木马或蠕虫等恶意软件开发的工具。专业的杀毒软件需要专业的反病毒公司来进行开发,而专杀工具可能是由反病毒公司开发,也可能是由个人来进行开发。 Windows 网络编程:行为监控工具开发 有一种流行的防病毒软件被称作HIPS,中文名字叫做主机防御系统,比如EQ。该软件可以在进程创建时、有进程对注册表进行写入时或有驱动被加载时,给用户予以选择,选择是否拦截进程的创建、是否拦截注册表的写入、是否拦截驱动的加载等功能。 Windows 网络编程:隐藏DLL文件 隐藏进程的方法是把要在进程中完成的功能放在DLL文件中完成,然后将DLL文件注入到其他进程当中,从而达到隐藏进程的目的。现在要做的是隐藏进程中的DLL文件,当把DLL文件注入到远程进程后,可以将DLL也隐藏掉。操作系统在进程中维护着一个叫做TEB的结构体,这个结构体是线程环境块。 Windows 网络编程:钩子函数 钩子函数是Windows消息处理机制的一部分,通过设置"钩子",应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。 Windows 网络编程:导入地址表钩子(IAT HOOK) 在可执行文件中使用其他DLL可执行文件的代码或数据时称为导入,或者称为输入。当PE文件被加载时,Windows加载器会定位所有的导入的函数或数据。这个定位是需要借助于导入表来完成的。导入表中存放了使用的DLL的模块名称,及导入的函数。 Windows 网络编程:内联钩子(Inline Hook) 介绍了Inline HOOK的原理,并通过两个例子学习了Inline Hook的用法。一个例子是对本进程的HOOK,另一个例子是对其他进程的HOOK。在对其他进程的HOOK中,演示了如何HOOK CreateProcessW()函数,并且从中学习了如何拦截应用程序进程被创建的过程,又强调了对函数栈平衡的重要性。 Windows 网络编程:写一个能够显示密码的程序 用调试API针对CrackMe来编写一个显示密码的程序。 Windows 网络编程:调试 API 在Windows中有这么一些API函数是专门用来进行调试的,这些函数被称作为Debug API,或者是调试API。利用这些函数可以进行调试器的开发,调试器通过创建有调试关系的父子进程来进行调试,被调试进程的底层信息、即时的寄存器、指令等信息都可以被获取,进而用来分析。 Windows 网络编程:文件补丁和内存补丁 补丁是指对于大型软件系统(如微软操作系统)在使用过程中暴露的问题(一般由黑客或病毒设计者发现)而发布的解决问题的小程序。人编写程序不可能十全十美的,所以软件也免不了会出现BUG,而补丁是专门修复这些BUG的,因为原来发布的软件存在缺陷,发现之后另外编制一个小程序使其完善,这种小程序俗称补丁。补丁是由软件的原来作者制作的,可以访问网站下载补丁。 Windows 网络编程:破解与调试API函数 调试API是系统留给用户进行程序调试的接口,其功能非常强大。 Windows 网络编程:PE文件添加节区 添加节区在很多场合都会用到,比如在加壳中,在免杀中都会经常使用到对PE文件添加一个节区。添加一个节区的方法有4个步骤,第1个步骤是在节表的最后面添加一个IMAGE_SECTION_HEADER,第2个步骤是更新IMAGE_FILE_HEADER中的NumberOfSections字段,第3步是更新IMAGE_OPTIONAL_HEADER中的SizeOfImage字段,最后一步则是添加文件的数据。当然了,前3个步骤是没有先后顺序的,但是最后一个步骤一定要明确如何改变。 Windows 网络编程:地址转换器 PE文件有3种地址,分别是VA(虚拟地址)、RVA(相对虚拟地址)和FileOffset(文件偏移地址)。3种地址的转换如果始终使用手动来计算那是非常累的,因此通常的做法是借助工具来完成。可以使用LordPE来计算这3种地址的转换,现在来编写一个对这3种地址进行转换的工具。 Windows 网络编程:查壳工具 在PE文件结构中大多用的都是偏移地址,因此,只要偏移地址和实际的数据相符,那么PE文件格式有可能是嵌套的。也就是说PE文件是可以变形的,只要保证其偏移地址和PE文件格式的结构基本就没多大问题。 Windows 网络编程:PE查看器 写PE查看器并不是件复杂的事情,只要按照PE结构一步一步地解析就可以了。简单地解析其中几个字段内容,显示一下节表的信息。 Windows 网络编程:远程线程 关于远程线程的知识,我们从3个例子来学习,一个是DLL的注入,一个是DLL的卸载,一个是不依赖DLL的注入代码,3个例子的原理是一样的。 Windows 网络编程:DLL编程 DLL(Dynamic Link Library,动态链接库)是一个可以被其他应用程序调用的程序模块,其中封装了可以被调用的资源和函数。动态链接库的扩展名一般是.DLL,不过有时也可能是其他的。DLL文件也属于可执行文件,只不过它是依附于EXE文件来被执行的。一个DLL文件可以被多个EXE文件加载。 Windows 网络编程:进程与线程 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象。 Windows 网络编程:启动服务项 服务是一种在操作系统启动时就启动的进程。在操作系统启动时有两种程序会一起随着系统启动,一种是普通的Win32程序,另一种是驱动程序。这里讨论的并不是要如何编写一个系统的服务,而是编写一个如何可以显示出这些随系统启动而启动的服务项。 Windows 网络编程:注册表操作 注册表是Windows操作系统的一个重要的数据库,里面记录了系统几乎所有的信息。当然,由于注册表的功能非常强大,因此,注册表对于病毒、木马来说是非常有利用价值的地方。而对于反病毒软件来说,注册表是其需要加强守卫的地方。注册表,是一个正义与邪恶的必争之处。 Windows 网络编程:AutoRun 免疫程序 每当我们打开U盘时,看到有一个AutoRun.inf文件时都会不由地倒吸口凉气,"该死!又中病毒了!"。是的,有一种病毒程序通过AutoRun.inf文件使其自动运行起来,想必这不用做过多的介绍每一位都非常清楚。网上有很多免疫工具,现在一些修改版的操作系统里面也会提供这样一个免疫的小工具。它免疫的原理是建立一个不被删除的文件AutoRun.inf文件夹,以防止病毒生成一个运行病毒的AutoRun.inf。 Windows 网络编程:文件操作 对于操作任何文件,我们最先的操作是对文件的打开,操作结束时为了释放资源要进行关闭。我们依次学习如何使用这些API函数,然后完成一个简单的小例子。从"文件操作"开始,我们要接触MFC方面的编程,但不会很难,都是一些对界面和控件之类的使用。 Windows 网络编程入门实例:C/S模式的简单木马 C/S模式的木马的工作方式和网上聊天的工作方式没什么差别,都是基于TCP/IP协议的通信,都是在传递信息。不同的是,木马的客户端向服务器端发送的内容是控制命令,服务器端收到控制命令执行相应的功能,并将执行结果反馈给客户端,这就是远程控制。如果客户端加一些隐藏进程,复制自身到系统目录,然后自动启动……那么服务端就是一个木马了。 Windows 网络编程基础知识 通信模型、Winsock、Winsock的相关函数、字节顺序。Windows 网络编程-