上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 37 下一页
摘要: 相对于外部绘图技术的不稳定性,内部绘制则显得更加流程与稳定,在`Dx9`环境中,函数`EndScene`是在绘制`3D`场景后,用于完成将最终的图像渲染到屏幕的一系列操作的函数。它会将缓冲区中的图像清空,设置视口和其他渲染状态,执行顶点和像素着色器,最后在后台缓冲区中生成一张完整的渲染图像,然后将其呈现到屏幕上,完成一次绘制操作。而`EndScene`是`IDirect3DDevice9`第`43`个函数,我们通过对该函数进行挂钩,并将该函数绘制之前的流程劫持到自身进程内的`MyEndScene`函数内做图形的增加工作,当我们增加好所需功能后再将该函数指向原来的函数入口,此时`EndScene`函数再次渲染则会出现我们所新增的功能,利用这种方式即可实现屏幕图形绘制效果,至于笔者是如何确定该函数是第43个的,读者可以在`IDirect3DDevice9`上面右键查看定义,至此即可看到函数所在位置; 阅读全文
posted @ 2023-10-24 09:42 lyshark 阅读(450) 评论(0) 推荐(1) 编辑
摘要: 组播模式相比单播模式可以提高网络的效率和带宽利用率,因为组播数据包只需要发送一次,就可以被多个接收者接收,而不需要每个接收者都单独发送一份数据包。这在需要同时向多个接收者发送相同数据的场景下特别有用,如视频会议、在线教育、流媒体等。组播模式可以减少网络拥塞,降低网络延迟,并且可以减少网络中的冗余数据。通过构建组播服务器端与客户端,并配合键盘鼠标控制接口,当服务器端执行一个操作时客户端同步执行,通过此方法读者可轻易的实现一个简单的镜像服务器,当服务器规模庞大而主机系统版本相同时,该功能可实现服务器端执行一次客户端即可实现批量部署的效果。 阅读全文
posted @ 2023-10-24 08:43 lyshark 阅读(363) 评论(0) 推荐(0) 编辑
摘要: WSASocket无管道反向`CMD`,与无管道正向`CMD`相反,这种方式是在远程主机上创建一个`TCP`套接字,并绑定到一个本地地址和端口上。然后在本地主机上,使用`WSASocket`函数连接到远程主机的套接字,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,本地主机就可以通过网络连接到远程主机的套接字,发送`CMD`命令并获取命令输出结果。这种方式称为无管道反向`CMD`,因为`CMD`进程的输入输出是通过套接字而非管道进行的。 阅读全文
posted @ 2023-10-23 08:52 lyshark 阅读(370) 评论(0) 推荐(0) 编辑
摘要: WSASocket 无管道正向CMD,使用`WSASocket`函数创建一个TCP套接字,并绑定到一个本地地址和端口上。然后使用`CreateProcess`函数创建一个新的`CMD`进程,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,客户端可以通过网络连接到这个套接字,发送`CMD`命令并获取命令输出结果。这种方式称为无管道正向`CMD`,因为`CMD`进程的输入输出是通过套接字而非管道进行的。WSASocket 函数用于创建重叠IO套接字,重叠 `I/O(Overlapped I/O)`是一种异步 `I/O(Asynchronous I/O)`机制,它可以在执行 `I/O`操作时同时进行其他的操作或处理,提高了系统的并发性和效率。 阅读全文
posted @ 2023-10-23 08:39 lyshark 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 本章内容涉及使用`Socket API`和`CMD`命令行工具实现本地`CMD`命令执行、无管道正向`CMD`和无管道反向`CMD`三种功能。执行本地`CMD`实现使用`CreateProcess`函数创建一个新的`CMD`进程,并将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出。无管道正向`CMD`和无管道反向`CMD`使用`WSASocket`函数创建`TCP`套接字,并将`CMD`进程的标准输入、输出和错误输出重定向到套接字的句柄上,通过网络连接实现远程命令执行功能。首先来实现一个`CMD`命令行运行功能,通过使用`CreatePipe`创建匿名管道,并使用`CreateProcess`函数创建一个新的`CMD`进程,然后将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出。这样就可以通过当前进程的输入输出来执行`CMD`命令并获取命令输出结果。 阅读全文
posted @ 2023-10-22 10:08 lyshark 阅读(1143) 评论(0) 推荐(1) 编辑
摘要: C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。 阅读全文
posted @ 2023-10-21 15:05 lyshark 阅读(344) 评论(0) 推荐(0) 编辑
摘要: C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。 阅读全文
posted @ 2023-10-21 15:04 lyshark 阅读(324) 评论(0) 推荐(0) 编辑
摘要: C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。 阅读全文
posted @ 2023-10-21 15:03 lyshark 阅读(344) 评论(0) 推荐(0) 编辑
摘要: C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。 阅读全文
posted @ 2023-10-21 15:01 lyshark 阅读(332) 评论(0) 推荐(0) 编辑
摘要: C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。 阅读全文
posted @ 2023-10-21 15:00 lyshark 阅读(402) 评论(0) 推荐(0) 编辑
摘要: C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。 阅读全文
posted @ 2023-10-21 14:59 lyshark 阅读(385) 评论(0) 推荐(0) 编辑
摘要: ARP (Address Resolution Protocol,地址解析协议),是一种用于将 `IP` 地址转换为物理地址(`MAC地址`)的协议。它在 `TCP/IP` 协议栈中处于链路层,为了在局域网中能够正确传输数据包而设计,由协议数据单元和对应的操作命令组成。`ARP` 既可以由操作系统处理,也可以由网卡处理。该协议的作用是通过一个局域网上的互联网协议(IP)地址来查询对应的物理硬件地址,如数据包发送到路由器时,ARP 协议将使用嵌入在数据包中的目的 IP 地址查找对应的物理地址,路由器根据获取的 MAC 地址转发数据包到下一个网络。 阅读全文
posted @ 2023-10-21 08:37 lyshark 阅读(873) 评论(0) 推荐(1) 编辑
摘要: dpkt项目是一个`Python`模块,主要用于对网络数据包进行解析和操作。它可以处理多种协议,例如`TCP`、`UDP`、`IP`等,并提供了一些常用的网络操作功能,例如计算校验和、解析`DNS`数据包等。由于其简单易用的特性,`dpkt`被广泛应用于网络安全领域,例如流量分析、漏洞利用、入侵检测等。使用该库可以快速解析通过各类抓包工具抓到的数据包,从而提取分析包内的参数。在分析数据包之前我们需要抓取特定数据包并保存为`*.pcap`格式,通常情况下这种数据包格式可通过`WireShark`等工具抓取到,当然也可以使用上一篇提到的`Scapy`库实现,该库中存在一个`sniff`函数,该函数可以实现网络抓包功能,如下一个演示案例我们分别通过`sniff(count=2)`函数抓取两个数据包并使用`wrpcap()`函数将其保存到文件内,当需要分析时可通过调用`rdpcap()`函数打开数据包即可实现分析。 阅读全文
posted @ 2023-10-20 18:48 lyshark 阅读(1187) 评论(0) 推荐(0) 编辑
摘要: 端口扫描是一种网络安全测试技术,该技术可用于确定对端主机中开放的服务,从而在渗透中实现信息搜集,其主要原理是通过发送一系列的网络请求来探测特定主机上开放的`TCP/IP`端口。具体来说,端口扫描程序将从指定的起始端口开始,向目标主机发送一条`TCP`或`UDP`消息(这取决于端口的协议类型)。如果目标主机正在监听该端口,则它将返回一个确认消息,这表明该端口是开放的。如果没有响应,则说明该端口是关闭的或被过滤。 阅读全文
posted @ 2023-10-20 08:52 lyshark 阅读(1037) 评论(0) 推荐(3) 编辑
摘要: PeFile模块是`Python`中一个强大的便携式第三方`PE`格式分析工具,用于解析和处理`Windows`可执行文件。该模块提供了一系列的API接口,使得用户可以通过`Python`脚本来读取和分析PE文件的结构,包括文件头、节表、导入表、导出表、资源表、重定位表等等。此外,PEfile模块还可以帮助用户进行一些恶意代码分析,比如提取样本中的字符串、获取函数列表、重构导入表、反混淆等等。PEfile模块是Python中处理PE文件的重要工具之一,广泛应用于二进制分析、安全研究和软件逆向工程等领域。由于该模块为第三方模块,在使用之前读者需要在命令行下执行`pip install pefile`命令安装第三方库,当安装成功后即可正常使用,如下所示则是该模块的基本使用方法,读者可自行学习理解。 阅读全文
posted @ 2023-10-19 21:16 lyshark 阅读(1117) 评论(0) 推荐(2) 编辑
摘要: Ping 使用 `Internet` 控制消息协议(`ICMP`)来测试主机之间的连接。当用户发送一个 `ping` 请求时,则对应的发送一个 `ICMP Echo` 请求消息到目标主机,并等待目标主机回复一个 `ICMP Echo` 回应消息。如果目标主机接收到请求并且网络连接正常,则会返回一个回应消息,表示主机之间的网络连接是正常的。如果目标主机没有收到请求消息或网络连接不正常,则不会有回应消息返回。Ping的实现依赖于`ICMP`协议,Internet控制消息协议(Internet Control Message Protocol,简称 ICMP)是一种在`IP`网络上发送控制消息的协议。主要是用于在 `IP` 网络上进行错误处理和诊断。ICMP协议是运行在网络层的协议,它的主要作用是向源主机和目标主机发送控制消息,帮助网络诊断和监控。这些控制消息通常是由网络设备(如路由器、交换机、防火墙等)生成或捕获,并在整个网络传输。 阅读全文
posted @ 2023-10-19 08:34 lyshark 阅读(726) 评论(0) 推荐(1) 编辑
摘要: 在之前的代码中我们并没有对套接字进行加密,在未加密状态下我们所有的通信内容都是明文传输的,这种方式在学习时可以使用但在真正的开发环境中必须要对数据包进行加密,此处笔者将演示一种基于时间的加密方法,该加密方法的优势是数据包每次发送均不一致,但数据包内的内容是一致的,当抓包后会发现每次传输的数据包密文是随机变化的,但内容始终保持一致,也就是说两个拥有相同内容的数据被加密后,数据包密文不同,其主要运用了基于当前时间戳的通信机制。 阅读全文
posted @ 2023-10-18 20:57 lyshark 阅读(810) 评论(0) 推荐(0) 编辑
摘要: 对于网络通信中的服务端来说,显然不可能是一对一的,我们所希望的是服务端启用一份则可以选择性的与特定一个客户端通信,而当不需要与客户端通信时,则只需要将该套接字挂到链表中存储并等待后续操作,套接字服务端通过多线程实现存储套接字和选择通信,可以提高服务端的并发性能,使其能够同时处理多个客户端的请求。在实际应用场景中,这种技术被广泛应用于网络编程、互联网应用等领域。该功能的具体实现思路可以总结为如下流程;在服务端启动时,创建套接字并进行绑定,然后开启一个线程(称为主线程)用于监听客户端的连接请求。主线程在接收到新的连接请求后,会将对应的套接字加入一个数据结构(例如链表、队列、哈希表等)中进行存储。同时,主线程会将存储套接字的数据结构传递给每个子线程,并开启多个子线程进行服务,每个子线程从存储套接字的数据结构中取出套接字,然后通过套接字与客户端进行通信。 阅读全文
posted @ 2023-10-18 08:46 lyshark 阅读(700) 评论(1) 推荐(1) 编辑
摘要: 首先我们来实现一个`DNS`查询功能,该功能的目的是传入一个网站域名自动将该域名解析为对应的`IP`地址,该功能的实现依赖于`gethostbyname`函数,该函数将主机名作为参数,并返回一个指向`hostent`类型结构的指针,结构包含有关主机的信息。结构包含许多字段,其中最重要的是`h_name`和`h_addr_list`。`h_name`是主机名,`h_addr_list`是一个指向具有主机`IP`地址的地址列表的指针。 阅读全文
posted @ 2023-10-17 09:30 lyshark 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 网络上的文件传输功能也是很有必要实现一下的,网络传输文件的过程通常分为客户端和服务器端两部分。客户端可以选择上传或下载文件,将文件分块并逐块发送到服务器,或者从服务器分块地接收文件。服务器端接收来自客户端的请求,根据请求类型执行对应的操作,并根据发送的文件名或其他标识来确定要传输的文件。在实现文件传输之前,需要先打开要传输的文件,并获取文件的大小信息,也可以通过其他方式获取文件的信息。在客户端和服务器端都准备就绪后,可以通过套接字来发送文件数据。在传输文件的过程中,可以将文件分解为若干个数据包进行传输,以减少数据传输中的丢包或传输错误。每个数据包的长度可以根据实际情况进行选择,通常选择`1024`字节或更大,也可以设置成更小的值。传输文件的过程中,还需要实现一定的错误处理机制,例如检测传输过程中的超时、丢包、不完整数据等情况,并在必要时进行错误重传或协商其他解决方案。 阅读全文
posted @ 2023-10-17 09:11 lyshark 阅读(1469) 评论(0) 推荐(3) 编辑
摘要: 通常情况下我们在编写套接字通信程序时都会实现一收一发的通信模式,当客户端发送数据到服务端后,我们希望服务端处理请求后同样返回给我们一个状态值,并以此判断我们的请求是否被执行成功了,另外增加收发同步有助于避免数据包粘包问题的产生,在多数开发场景中我们都会实现该功能。Socket粘包是指在使用TCP协议传输数据时,发送方连续向接收方发送多个数据包时,接收方可能会将它们合并成一个或多个大的数据包,而不是按照发送方发送的原始数据包拆分成多个小的数据包进行接收。 阅读全文
posted @ 2023-10-16 18:49 lyshark 阅读(862) 评论(0) 推荐(2) 编辑
摘要: 在上述内容中笔者通过一个简单的案例给大家介绍了在套接字编程中如何传递结构体数据,本章将继续延申结构体传输,在某些时候例如我们需要传输一些当前系统的进程列表信息,或者是当前主机中的目录文件,此时就需要使用循环结构体传输功能,循环传输结构体的关键点在于,客户端发送结构体数据之前需要通过一次通信来告诉服务端需要接收的次数,当服务端接收到次数时则可利用接收计数器依次循环接收数据直到客户端完整所有数据包的发送。 阅读全文
posted @ 2023-10-16 09:01 lyshark 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 当在套接字编程中传输结构体时,可以将结构体序列化为字符串(即把结构体的所有成员打包成一个字符串),然后将字符串通过套接字传输到对端,接收方可以将字符串解析为结构体,然后使用其中的成员数据。这种方法通常被称为序列化(Serialization)和反序列化(Deserialization),本章中我们可以采用将一个结构体序列化为一个纯字符串,然后将该字符串通过套接字传输给对端,当对端收到后只需要将字节序强制转换为对等的结构体指针即可实现对该结构的解析。 阅读全文
posted @ 2023-10-16 08:59 lyshark 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 组播通信是一种基于UDP协议的网络通信方式,它允许发送方将消息同时传递给多个接收方。在组播通信中,发送方和接收方都会加入一个共同的组播组,这个组播组对应一个特定的IP地址,所有加入该组播组的主机都能够接收到发送方发送的消息。组播通信可以有效地减少网络流量和网络负载,因为在传统的点对点通信方式下,每个消息都需要单独传输到每个接收方,而在组播通信中,每个消息只需要传输一次,就可以同时传递给多个接收方。在使用组播模式时,需要在套接字上使用`setsockopt()`函数来设置套接字的`IP_MULTICAST_IF`选项,指定本地主机的出站接口地址,用于发送组播数据包。此外,还可以设置`IP_ADD_MEMBERSHIP`选项,将套接字加入到一个特定的组播组中,以便接收该组播组中的数据包。 阅读全文
posted @ 2023-10-15 09:46 lyshark 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 在进行驱动开发之前,您需要先安装适当的开发环境和工具。首先,您需要安装`Windows`驱动开发工具包(WDK),这是一组驱动开发所需的工具、库、示例和文档。然后,您需要安装`Visual Studio`开发环境,以便编写和调试驱动程序。在安装WDK和`Visual Studio`之后,您还需要配置适当的项目设置,以便能够正确编译和构建驱动程序。 阅读全文
posted @ 2023-10-14 20:00 lyshark 阅读(548) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 37 下一页

loading... | loading...
博客园 - 开发者的网上家园