修改模型开始游戏。
互联网用户使用的各种信息服务,最终都可以归结为IP包中的信息传输。IP包不仅包括要传输的数据信息,还包括目的IP地址、源IP地址和一些相关的控制信息。当路由器收到一个IP包时,它会根据包中的目的IP地址项查找路由表,并根据查找结果将IP包发送到相应的端口。收到这个数据包后,下一个IP路由器将继续转发它,直到它被发送到目的地。路由器可以通过路由协议交换路由信息,从而更新路由表。
那么我们关心的只是IP包中的数据信息。我们可以使用许多工具来监控网络,以拦截客户端和服务器之间交换的数据。在这里,我将向你介绍其中的一位:WPE。
如何使用WPE:执行WPE时有几个函数可供选择:
选择游戏选择你想在内存中屏蔽的程序,你只需要双击程序名。
痕迹追踪功能。用于跟踪捕获程序发送和接收的数据包。WPE必须先点击要跟踪的节目名称,然后才能使用此项。按播放键开始捕获程序发送和接收的数据包。您可以随时按下||,暂停跟踪,然后在需要继续时再次按下||。按方块停止捕获数据包,并显示所有捕获的数据包内容。如果不按方形停止键,跟踪动作会根据选项中的设定值自动停止。如果您没有获得数据,请尝试将选项调整到Winsock版本2。WPE和教练设置显示至少16位。
过滤器过滤功能。用于分析捕获的数据包并对其进行修改。
发送数据包发送数据包功能。允许你发送假数据包。
教练制造者制造修改器。
选项设置功能。让您调整WPE的一些设置。
滤波器的详细教学
-当过滤器启动时,按钮ON将显示为红色。-当您启动过滤器时,您可以随时关闭此窗口。过滤器将保持其原始状态,直到您再次按下开/关按钮。-只有当过滤器启用按钮关闭时,您才能勾选过滤器前面的复选框进行编辑和修改。-当您想要编辑过滤器时,只需双击过滤器的名称。
正常模式:
示例:
当你玩街霸Online【最终格斗Online版】的时候,你使用了两次火球术并且击中了对方,那么你将会捕获到以下数据包:SEND-& gt;0000 08 14 21 06 01 04发送->;0000 02 09 87 00 67 FF A4 AA 11 22 00 00 00 00 00 SEND->;0000 03 84 1109 1109发送->;0000 0A 09 c 1 10 00 00 FF 52 44 SEND->0000 0A 09 c 1 10 00 00 66 52 44
你的第一个火球减少对方生命值16滴[16 = 10h],你观察到第四个和第五个包的位置4有一个值10h,应该在这里。
你观察到10h之前的0A 09 C1在两个包中都没有变化,可见这三个值是发出火球的关键。
所以你在搜索栏[搜索]填0A 09 C1 10,然后在修改栏[修改]的位置4填FF。这样,当你再次发射火球的时候,FF会替换掉之前10的火球,也就是攻击力255的火球!
高级模式:
举例:你在一个游戏里,不想用真名,但是想用修改过的假名发给对方。使用TRACE后,你会发现你的名字出现在一些数据包中。假设你叫影子,换算成65 438+0 6就是[53 68 665 438+0 64 6F77]。而你打算用Moon代替他[6D6F6E2020]。1)发送->;0000 08 14 21 06 01 04 2)发送->;0000 01 06 99 53 68 61 64 6F 77 00 01 05 3)发送->;0000 03 84 1109 1109 4)发送->;0000 0A 09 c 1 10 00 53 68 61 64 6F 77 00 11 5)发送->0000 0A 09 c 1 10 00 00 66 52 44
但如果你仔细看,你的名字并没有出现在每一个包的同一个位置。
-在第二个数据包中,名称出现在第四个位置。-在第四个数据包中,名称出现在第六个位置。
在这种情况下,你需要使用高级模式——你填写搜索列【搜索】:53 68 61 64 6f77【请从位置1开始填写】——你要从原来名字阴影的第一个字母开始替换新名字,那么你要选择从找到值的位置开始替换连续值。-现在,填入[[MODIFY]000: 6D6f6E2020的位置[这是对应的位置,即从原搜索列的+001位置开始]-如果要从包的第一个位置开始修改值,请选择[[从包的开头]]。
稍微了解TCP/IP协议的人都知道,互联网是把信息和数据打包后再发出去的。每个数据分组被分成报头信息和数据信息。报头信息包括数据包的发送地址和到达地址。数据信息包括我们在游戏中相关操作的各种信息。然后在我们拦截数据包之前,我们需要知道游戏服务器的IP地址和端口号。其实最简单的就是看有没有SERVER的配置文件。INI在我们的游戏目录中。你可以在这个文件中查看某个游戏服务器的IP地址,比如金庸传,那么除此之外,我们还可以在DOS中使用命令NETSTAT。
NETSTAT命令的作用是显示网络连接、路由表和网络接口信息,可以让用户知道当前有哪些网络连接在运行。或者你可以使用特洛伊马客星等工具来检查网络连接。工具有很多,看你喜欢用哪一个了。
NETSTAT命令的一般格式是:NETSTAT [option]
命令中选项的含义如下:-a显示所有套接字,包括正在被监控的套接字。-c将每隔1秒再次显示,直到用户将其中断。-i显示所有网络接口的信息。-n用网络IP地址替换名称,显示网络连接。-r以与“route -e”相同的格式显示核心路由表。-t显示TCP协议的连接。-u显示UDP协议的连接。-v显示正在进行的工作。
三:如何分析我们截获的数据包?
首先,我们将WPE截获的数据包保存为文本文件,然后打开它。这时我们会看到以下数据(这里以金庸群英会中PK店员客户端发来的数据为例进行说明):
第一个文件:SEND-& gt;0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1B发送->;0010 17 12 DD 34 12 12 12 17 12 0E 12 12 12 12 12 12 12 9B发送->;0000 E6 56 1E f 1 29 06 17 12 3B 0E 17 1A发送->;0000 E6 56 1B C0 68 12 12 12 5A发送->;0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12发送->;0000 E6 56 17 C9 12
第二个文件:SEND-& gt;0000 83 33 68 47 1B 0E 81 72 76 76 77 76 76 02 7E发送->;6D发送->0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3发送->;0000 83 33 7E A5 21 77 77 77 3F发送->;0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77 SEND->0000 83 33 72 AC 77
我们发现两个PK店主的数据格式是一样的,但是内容不一样。我们是PK的NPC。为什么会不一样?原来金庸大侠传输的数据包在网络上传输之前都是加密的,所以我们面临的问题是如何将密文解密成明文,然后进行分析。
因为一般的数据包加密都是异或运算,所以我们先说说什么是异或。简单来说,XOR就是“同为0,不同为1”(这是针对二进制逐位的)。比如0001和0010异或,我们逐位比较,异或结果是0011,计算方法是:0065438。那么异或结果的第四位是0,0,0001的第三位是0,0,0010的第三位是0,按照“同为0,不同为1”的原则,异或结果的第三位是0,0010。0001的1位是1,0010的1位是0,所以异或结果的1位得到1,也就是0011。异或运算以后会遇到很多,可以先熟悉一下,对分析很有帮助。
我们继续看上面两个文件。按照常理,数据包里的数据不会全是有价值的。游戏开发的时候会预留一些字节空间给以后的扩展,也就是说数据包里会有一些“00”字节。观察以上文件,会发现第一档有很多“12”,第二档有很多“77”。这是不是意味着我们说的是“00”?推理到这里,我们开始行动吧!
我们将第一个文件与“12”进行异或运算,将第二个文件与“77”进行异或运算。当然,手工计算很麻烦。我们用“M2M 1.0加密包分析工具”来计算就方便多了。得到以下结果:
第一个文件:1 SEND->;0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09发送->;0010 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 00 89 2 SEND->0000 F4 44 0C E3 3B 13 05 00 29 1C 05 08 3发送->;0000 F4 44 09 D2 7A 00 00 00 48 4发送->;0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 00 5 SEND->;0000 F4 44 05分贝00
第二个文件:1发送-& gt;0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09发送->;0010 05 00 70 6B 00 00 00 00 00 05 00 05 00 00 00 1A 2发送->0000 F4 44 0C E3 3B 13 05 00 29 1C 05 84 3发送->;0000 F4 44 09 D2 56 00 00 00 48 4发送->;0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 00 5发送->;0000 F4 44 05分贝00
哈,两份文件大部分是一样的,说明我们的推理是正确的,以上就是我们需要的明文!
接下来就是找出一些关键字节的含义,这就需要截取大量的数据进行分析。
首先,我们会发现每个包都是以“F4 44”开头的,第三个字节是变化的,但是变化是很有规律的。让我们来看看每个包的长度。你发现什么了吗?对了,第三个字节是包的长度!通过拦截大量的数据包,我们判断第四个字节代表一个指令,也就是客户端告诉服务器做什么。例如,向服务器请求的战斗指令是“30”,而战斗中的移动指令是“D4”。接下来需要分析第一个包“F4 44 65438+f 0306 c 79 f 605 01 01 0001 75 09 0500 CF 26 00000000 005 000 1 000 000 000 89”。应该有一个NPC通知服务器你的PK,那我们先找找这个店员的代码在哪里。我们来PK另一个落水狗(就是大理客栈外的那个):SEND-& gt;0000 F4 44 1F 30 D4 75 F6 05 01 00 01 00 01 00 01 75 09发送->;001005008 a 19000001100200000 c0根据常识分析,虽然游戏中NPC的种类不会超过65535(FFFF),但是他们在开发时不会把自己限制在单词的范围内,不利于游戏的扩展,所以我们会用双字来看。通过对比“店员”和“小土豆”这两个袋子,重点放在“6C 79 F6 05”和“CF 26 00 00”上。(比较容易,但是不能太慢,呵呵)再来看看后面的包装。在后面的包里,应该有NPC码,比如移动包。游戏是允许观看比赛的,所以服务器必须知道NPC的移动坐标,并广播给其他观看比赛的玩家。在第四个包的后面“发送-& gt;0000 F4 44 10DA 01DB 6C 79 F6 05 02 27 35 010000“我们又看到了“6C 79 F6 05”,初步断定是调酒师的代号!(这个分析包含了大量的工作。你可以用WPE截取数据,自己分析。)
第一个包的分析暂时放在这里(我们暂时不需要完全清楚里面的信息)
让我们来看看第四个包“SEND-& gt;0000 f44 10da 01 db 6 c 79 f 605027 35 010000”,然后拦截PK黄狗的包。(二狗就出来了。)看包的格式:SEND-& gt;0000 F4 44 1A DA 02 0B 4B 7D F6 05 02 27 35 01 00 00发送->;F8 05 02 27 36 01 00 00 00
根据上面的分析,黄狗的代码是“4 b 7 df 605”(100040011),但是如何区分两个黄狗服务器呢?看“eb03f 805”(100140011),就是最后一个代码加100000,呵呵,这样服务器就可以识别两只黄狗了。我们会通过敌人在野外截获的数据包来确认,确实如此。
然后,这个包的格式要明确:第三个字节是包的长度,“DA”是指令,第五个字节是NPC的数量。从第七字节开始的10字节代表一个NPC的信息,多一个NPC意味着10字节。
如果你玩过网金,一定知道随机遇到敌人有时候会出现援军。让我们利用游戏的这种强化,让有强化的NPC出现在每一场战斗中。
通过战斗中援军截获的数据包,我们会发现服务器发出了这样一个数据包:F4 44 12 e 9 b 03 f 805 02 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00(这里简单以黄狗的代码为例)。然后,让我们使用单机代理技术来欺骗客户端和服务器!
好了,打电话到NPC的工作已经完成了一半。接下来的事情,如何修改和发送数据包,我们在下一节继续讲解。
四:如何冒充“客户端”,将我们需要的数据包发送到“服务器”?
这里我们需要使用一个工具,它位于客户端和服务器之间,它的工作是接收和转发数据包。这个工具叫做代理。如果代理的工作只是单纯的接收和转发,那是没有意义的,但是请注意,所有的数据包都要通过它来传输,这一点在这里意义重大。我们可以对接收到的数据包进行分析,要么直接转发,要么修改后转发,要么憋着,甚至伪造我们需要发送的数据包。
下面继续讲如何同时欺骗服务器和客户端,即修改包和伪造包。通过我们上一节的分析,我们已经知道了打多个NPC的包格式,那就动手吧!
首先需要找到客户端发来的数据包,找到战斗的特征,也就是第1个请求战斗的数据包。我们寻找“F4 44 1F 30”的特征,这个特征不会改变。当然,我们需要解密,以后再找。找到后,说明客户端在找服务器打架。我们不会移动和转发这个包。继续向下搜索。这时候就不容易找到特征码了。我们先找“DA”,它是客户端发送NPC信息数据包的指令。那么可能其他包也有“da”。没关系。让我们看看前三个字节中是否有“F4 44”。找到之后,我们的工作就开始了!
我们决定要玩的NPC的数量。这个数字不能很大,因为网金的包长是用一个字节来表示的,所以一个包可以有255个字节。正如我们上面分析的,增加一个NPC需要增加10字节,所以大家通过计算知道,打20个NPC比较合适。
然后我们要分析计算客户端原来的NPC码,因为增加的NPC码要加上100000。然后计算我们添加的NPC码,并将其组合成一个新的数据包。注意代表要修改的包长度的字节,然后转发给服务器。这一步,写程序的时候注意算法,以免造成很大的延迟。
上面我们欺骗了服务器端,欺骗客户端很简单。
在发送上述数据包后,我们根据新添加的NPC码构造一个数据包,并立即将其发送给客户端。格式为“F4 44 12 E9 NPC代码02 00 00 03 00 00 00 00 00 00 00 00 00 00 00”。我们为每个新加入的NPC构造这样一个包,按顺序发给客户端,客户端就会被我们骗了。很简单。
以后的战斗我们就不管其他的了,爱怎么打就怎么打,呵呵。
以上需要一定的编程基础,但不难。就算你不会编程,我相信你继续读下去也会有所收获。
五:如何用计算机语言编写单机代理?
上一章我们已经讲解了agent的原理,大家对agent有了初步的了解。现在我将教你如何用计算机语言编写你自己的代理。考虑到简单明了,我们选择VB,因为用VB写代理只需要一点代码。
代码如下:
私有子窗体_Load()戴笠。LocalPort = "1234 "服务器。RemotePort = "1234 "服务器。戴笠。监听结束Sub
专用子戴笠_连接请求(ByVal requestID As Long)服务器。连接客户端。接受请求的Sub
private Sub Client _ data arrival(ByVal bytes total As Long)Dim clientto server()As Byte Client。GetData ClientToServer服务器。SendData ClientToServerEnd Sub
private Sub Server _ data arrival(ByVal bytes total As Long)Dim ServerToClient()As Byte Server。GetData ServerToClient客户端。将数据服务器发送到客户端Sub
Form_Load()的进程表示程序启动时要做的一些初始化操作。戴笠。LocalPort = "1234 "设置监听端口服务器。RemotePort = "1234 "设置连接到游戏服务器的端口(与监听端口相同)。remote host = " 211.100 . 20 . 20。设置游戏服务器戴笠的IP地址。侦听本地连接请求。这时候你只需要把游戏的服务器列表的IP改成127.0.0.1,那么游戏的客户端程序就会和我们的代理连接。我们的代理将调用以下进程:private Sub daili _ connection request(byval request id为long) server.connect代理客户端将客户端连接到服务器. acceptrequest id接受客户端的连接请求End Sub。
客户端向服务器发送数据时,会调用以下过程:private sub client _ data arrival(byval bytes total as long)dim client to server()as byte变量定义。请求存储数据的空间,客户端。GetData ClientToServer,客户端接收这些数据的连接,在这里我们可以添加自己的代码,修改包,然后发送到服务器。
服务器的连接。SendData ClientToServer将这些数据发送到服务器端Sub。
服务器向客户端发送数据时,会调用以下过程:private subserver _ data arrival(byval bytestotal as long)dim server to client()as byte变量定义。请求存储数据的空间。服务器。GetData ServerToClient服务器连接以接收数据。在这里,我们可以添加自己的代码,修改数据包,然后将其发送给客户端。
客户。将数据服务器发送到客户端结束订阅
其他语言写的基本原理也差不多,只是可能麻烦一点,因为VB本身有一个MSWINSCK。OCX控件,封装了WINDOWS的网络操作,界面非常简单,推荐大家使用。
六:如果单机代理受阻,如何利用底层技术接手游戏的合约?
在WINDOWS系统中,网络通信的任务是由一个叫WSOCK32.DLL的人完成的(在系统目录下)。每当游戏运行时,他都会自动调用这个动态链接库,因为WINDOWS系统中文件的搜索顺序是程序目录>:系统目录>路径中设置的目录,所以我们有机会替换WSOCK32。DLL的游戏系统,并调用我们的WSOCK32.DLL,使我们有绝对控制权的游戏包。有人问:“我们该怎么办?”只要我们自己写一个WSOCK32.DLL放在游戏目录里就可以了。当然,我们自己写一个WSOCK32.DLL是不现实的,因为我们的网络通信要处理很多底层的事情,比如从网卡读取比特流,所以我们选择调用系统的WSOCK32.DLL来完成这个功能。
WSOCK32.DLL有很多输出函数,函数如下:_ wsafdisasset accept accept x a recvaasend bind closesocketclosecketinfo connectdn _ expand enumprotocolsa enumprotocolsw getacceptxsackaddrsgeta。addressbyname a getaddressbyname w gethostbyaddr gethostbyname gethostbyname GetNameByTypeA getnamebytype getnetbyname getpeername getprotobbyname getprotob ynnumber getservbyname getservbyport getservice a getservice w getsockname getsockopt gettypebyname a gettypebyname w htonl htons inet _ addr inet _ network ine t _ ntoa ioctl socket listen MigrateWinsockConfiguration nploadnamespstartup ntohs rcmd recv VF
这里并不是所有的函数都需要修改,因为我们只关心发送和接收包,所以只需要修改send和recv两个函数,前者是发送包,后者是接收包。我们在这两个功能的处理中加入自己的代码,完成包的识别、修改和转发的功能。
七:如何分析委托人的相关信息?
作为一个插件,你大部分时间都要分析包,但是因为有些功能是客户端识别的,所以分析客户端的程序也很重要。分析客户端首先需要你懂汇编指令(只要懂,要求很低),其次是能熟练使用一些工具,然后剩下的就是运气和游戏公司的漏洞了。(哈,并不总是成功的。)我一步一步教你。
第8086章组装说明
注:埃克斯、BX、CX...、EAX、EBX、ECX...这些都是CPU存储数据的地方。
1.数据传输指令的作用:它们在存储器和寄存器之间、寄存器和输入/输出端口之间传输数据。1.通用数据传输指令。MOV传输字或字节。MOVSX首先扩展符号,然后传输它们。MOVZX首先扩展零,然后传输它们。PUSH将单词推入堆栈。从堆栈中弹出单词。普莎推AX,CX,DX,BX,Sp,BP,Si,Di依次推入栈中。POPA依次将Di、Si、BP、SP、BX、DX、CX和AX推出堆栈。Pushed将EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI依次推入堆栈。POPAD推动EDI、ESI、EBP、ESP和EBX。EAX依次弹出堆栈。BSWAP交换32位寄存器中字节的顺序。XCHG交换字或字节。(至少有一个操作数是寄存器,段寄存器不能用作操作数)CMPXCHG比较和交换操作数。(第二个操作数必须是累加器AL/AX/EAX) XADD先交换,再累加。(结果在第一个操作数中)XLAT字节查找表转换。BX指向一个256字节表的开头,AL是表的索引值(0-255,即0-FFH);返回AL是查找表的结果。([BX+艾尔]-& gt;铝)
2.I/O端口传输指令。输入/输出端口输入。(语法:in accumulator,{port number │DX}) OUT I/O端口输出。(语法:OUT {port number │DX},accumulator)当I/O端口由immediate mode指定时,其范围为0-255;当寄存器DX指定时,范围为0-65535。
3.目的地址传送指令。LEA加载有效地址。例子:LEA DX,string将偏移地址存储在DX中。LDS来传递目标指针,并将指针内容加载到DS中。例子:LDS SI,string将段地址:偏移地址存储在DS:SI中。LES来传递目标指针,并将指针内容加载到ES中。例子:LES DI,string将段地址:偏移地址存储在ES:DI中。LFS来传递目标指针,并将指针内容加载到FS中。例子:LFS迪,弦乐;将段地址:偏移地址存储在FS:DI中。LGS来传递目标指针,并将指针内容加载到GS中。例子:LGS迪,弦乐;将段地址:偏移地址存储在GS:DI中。LSS传送目标指针,并将指针内容加载到SS中。例子:LSS迪,弦乐;将段地址:偏移地址保存到SS:DI。
4.标志转移指令。LAHF国旗注册转让,载入国旗进入啊。SAHF标志寄存器进行传送,并将AH的内容加载到标志寄存器中。PUSHF标志被放入堆栈。POPF国旗被放在堆栈上。PUSHD 32位标志被放入堆栈。POPD 32位标志被放入堆栈。
第二,算术运算指令ADD加法。带进位加法的ADC。INC加1。AAA附加ASCII码调整。带十进制调整的DAA加法。减法。SBB用借位减法。十二月减去1。NEC否定(负0)。CMP比较。(两个操作数相减,只修改标志位,不发回结果)。AAS减法的ASCII码调整。DAS减法的小数调整。MUL无符号乘法。IMUL整数乘法。以上两项,结果送回AH和AL(字节运算),或者DX和AX(字运算),AAM乘法的ASCII码调整。无符号除法。IDIV整数除法。以上两项,结果送回:商送回AL,余数送回AH,(字节。Or商返回AX,余数返回DX,(字运算)。AAD司ASCII码调整。CBW字节被转换成单词。(AL中字节的符号扩展为AH) CWD字转换为双字。(AX中单词的符号扩展为DX) CWDE单词转换为双字。(AX中单词的符号引申为EAX) CDQ双字引申。
第三,逻辑运算指令和AND运算。或或运算。异或XOR运算。不是倒置。测试测试。(两个操作数进行AND运算,只修改标志位,不发回结果)。SHL逻辑向左移动。萨尔算术向左移动。(=SHL) SHR逻辑右移。SAR算法向右移动。(=SHR) ROL循环向左移动。ROR循环向右移动。RCL通过进位循环向左移动。RCR正好通过进位周期。以上八条移位指令的移位次数可以达到255次。移位一次时,可以直接使用操作码。1次,则移位次数由寄存器CL给出,如MOV CL,04 SHL AX,CL。
四、字符串指令DS:SI源字符串段寄存器:源字符串索引。ES:DI目标字符串段寄存器:目标字符串索引。CX重复计数器。AL/AX扫描值。d标记0表示SI和DI应在重复操作中自动递增;1表示。z标志应自动递减,以控制扫描或比较操作的结束。MOVS弦传输。(MOVSB传输字符。MOVSW传输文字。MOVSD传输双字。)CMPS字符串比较。(CMPSB比较字符。CMPSW比较词语。)SCAS字符串扫描。将AL或AX的内容与目标字符串进行比较。比较结果反映在标志位中。LODS被载入字符串。源字符串中的元素(字或字节)被逐个加载到AL或AX中。(LODSB传输字符。LODSW传送文字。LODSD传输双字。)STOS救了绳子。这是LODS的逆过程。代表用于CX/ECX
动词 (verb的缩写)程序转移指令1 >;无条件分支指令(长分支)JMP无条件分支指令调用程序calls 2 >/RETF程序return . 2 >;条件分支指令(短分支,在-128到+127的距离内)(当且仅当(SF XOR OF)=1,OP1循环控制指令(短分支)当循环CX不为零时循环,当loop/loopzcx不为零且标志Z=1时循环,当loop/loopzcx不为零且标志Z=0时循环,当JCXZ CX为零时分支,当jecx中断指令INT中断指令变成溢出中断IRET中断返回5 >;处理器控制HLT处理器暂停,直到出现中断或复位信号。当芯片引线测试为高时,WAIT使CPU进入等待状态。ESC切换到外部处理器。锁阻塞了总线。NOP为空。STC设置进位标志。CLC清除进位。