网络游戏外挂制作之我所见(7)

原创 2004年02月22日 23:14:00
在本章中,我们主要来研究一下封包的制作和发送,同样,我们所采用的方法是Delphi+winsock2来制作。在以前说过在Delphi中只封装了winsock1,winsock2需要自已封装一下,我在此就不多介绍如何封装了。
下面就一步步实现我们的封包封装与发送吧:
首先,我们应该知道,封包是分两段的,一段是IP,一段是协议(TCP,UDP,其他协议),IP就像邮政编码一样,标识着你的这个封包是从哪里到哪里,而协议里记录着目标所要用到的包的格式及校验等,在网络游戏中的协议一般都是自已定义的,要破解网络游戏最重要的是学会破解网络游戏的协议网络游戏协议破解,为了不影响现运行的网络游戏的安全,我在此会以UDP协议为例,介绍一下网络协议的封包与发送的全过程。
接下来,我们就可以开始看看整个封包全过程了:
   1)我们要起动sock2,这时个要用到的WSAStartup函数,用法如下:
INTEGER WSAStartup(
                  wVersionRequired: word,
                  WSData: TWSA_DATA
                 );
在程序中wVersionRequired我们传入的值为$0002,WSData为TWSA_DATA的结构。
   2)使用socket函数创建并得到socket句柄; 用法如下:
INTEGER socket(af: Integer,
              Struct: Integer,
              protocol: Integer
             );  
注意的是在我们的程序封包中饱含了IP包头,所以我们的Struct参数这里要传入的参数值为2,表示包含了包头。该函数返回值为刚刚创建的winsocket的句柄。
   3)使用setsockopt函数设置sock的选项; 用法如下:
INTEGER setsockopt(s: Integer,
                  level: Integer,
                  optname: Integer,
                  optval: PChar,
                  optlen: Integer
                 );
在S处传入的是Socket句柄,在本程序里level输入的值为0表示IP(如果是6表示TCP,17表示UDP等~),OptName里写入2,而optval的初始值填入1,optlen为optval的大小。
   4)接下来我们要分几个步骤来实现构建封包:
 1、把IP转换成sock地址,用inet_addr来转换。
Longint  inet_addr(
                  cp: PChar
                 );
 2、定义包的总大小、IP的版本信息为IP结构:
    总包大小=IP头的大小+UDP头的大小+UDP消息的大小,
    IP的版本,在此程序里定义为4,
 3、填写IP包头的结构:
     ip.ipverlen := IP的版本 shl 4;
     ip.iptos := 0;                // IP服务类型
     ip.iptotallength := ;         // 总包大小
     ip.ipid := 0;                 // 唯一标识,一般设置为0
     ip.ipoffset := 0;             // 偏移字段
     ip.ipttl := 128;              // 超时时间
     ip.ipprotocol := $11;         // 定义协议
     ip.ipchecksum := 0 ;          // 检验总数
     ip.ipsrcaddr := ;             // 源地址
     ip.ipdestaddr := ;            // 目标地址
 4、填写UDP包头的结构:
     udp.srcportno := ;            //源端口号
     udp.dstportno := ;            //目标端口号
     udp.udplength := ;            //UDP包的大小
     udp.udpchecksum :=  ;         //检验总数
 5、把IP包头,UDP包头及消息,放入缓存。
 6、定义远程信息:
     remote.family := 2;
     remote.port :=;               //远程端口
     remote.addr.addr :=;          //远程地址

   5)我们用SendTo发送封包,用法如下:  
INTEGER sendto(s: Integer,
              var Buf: Integer,
              var len: Integer,
              var flags: Integer,
              var addrto: TSock_Addr;
              tolen: Integer
             );  
在S处传入的是Socket句柄,Buf是刚刚建好的封包,len传入封包的总长度刚刚计算过了,flag是传入标记在这里我们设为0,addto发送到的目标地址,在这里我们就传入remote就可以了,tolen写入的是remote的大小。
 
   6)到了最后别忘记了用CloseSocket(sh)关了socket和用WSACleanup关了winsock。

最后要说的是这种发送方式,只能发送完全被破解的网络协议,如果要在别人的程序中间发送数据就只有用APIHOOK或在winsock2做中间层了。如果大家还有什么问题需要和我讨论,请发邮件到microprogramer@hotmail.com或加QQ:24259132。

[四种]网络游戏外挂的制作方法

1、动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标、键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式。(这种外挂完全是垃圾,TMD,只要会一点点API的人都知...
  • liujiayu2
  • liujiayu2
  • 2015年05月14日 15:36
  • 1660

网络游戏外挂编写初级教程

做自己喜欢的!  ------ 明天你来自己做外挂 随着网络游戏的日益火爆,很多玩家都投身到游戏中。目前很多玩家都依赖于一些游戏的外挂程序来进行游戏。那么做一个游戏的外挂程序是否是一件很困难的事呢?...
  • liujiayu2
  • liujiayu2
  • 2015年05月14日 15:41
  • 1124

网络游戏外挂制作

在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎么回事。就拿了一些来研究,小有心得,拿出来与大家共享,外挂无非就是分几种罢了(依制作难度): 1、动作式,...
  • u010258235
  • u010258235
  • 2013年10月18日 12:13
  • 740

网络游戏外挂制作技术浅谈

网络游戏外挂制作技术浅谈2007-01-27 21:05外挂无非分以下几种(依制作难度):1、动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标、键盘等,使游戏里的人物进行流动或者攻击,最...
  • shaozhanyu
  • shaozhanyu
  • 2013年10月23日 16:27
  • 525

外挂制作必备工具下载.

外挂制作必备工具下载. 工具下载: peid 0.94    用于查壳,知道什么壳就可以脱壳拉. http://www.pediy.com/tools/unpack/File_analyse...
  • liujiayu2
  • liujiayu2
  • 2016年06月22日 18:47
  • 3176

简单游戏外挂制作教程

在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎么回事。就拿了一些来研究,小有心得,拿出来与大家共享,外挂无非就是分几种罢了(依制作难度):  1、动作式...
  • liujiayu2
  • liujiayu2
  • 2015年05月14日 15:52
  • 4379

网游外挂之制作流程

很多人都对网游外挂的制作很感兴趣,在这篇文章里,我向大家简单介绍一下一款网游外挂的大致制作流程。  首先,我想说明几点: 第一,这篇文章并不是具体教你如何写外挂,只是带你大致浏览一下网游外挂的制作...
  • hwt0101
  • hwt0101
  • 2013年08月26日 10:38
  • 2655

Android 源码系列之<十>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(上)

说起外挂特别是玩游戏的小伙伴估计对它很熟悉,肯定有部分小伙伴使用过,至于为什么使用它,你懂得(*^__^*) ……我最早接触外挂是在大二的时候,那时候盛行玩QQ农场,早上一睁眼就是打开电脑先把自己的菜...
  • llew2011
  • llew2011
  • 2016年10月24日 17:55
  • 7325

网络游戏外挂编写基础

要想在修改游戏中做到百战百胜,是需要相当丰富的计算机知识的。有很多计算机高手就是从玩游戏,修改游戏中,逐步 对计算机产生浓厚的兴趣,逐步成长起来的。不要在羡慕别人能够做到的,因为别人能够做的你也...
  • li744831579
  • li744831579
  • 2013年04月23日 20:19
  • 1023

Java外挂开发之内存修改器(类似CE)

最近闲着蛋疼,无聊之中用CE耍了一哈游戏,发现挺好用的,于是就想,我自己能不能写个内存修改器呢?于是乎,这个软件就诞生了! 当然我只会Java,C++嘛,了解了解,嘿嘿,所以这个工具也是用Java写的...
  • qq969422014
  • qq969422014
  • 2016年12月09日 21:44
  • 6120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络游戏外挂制作之我所见(7)
举报原因:
原因补充:

(最多只允许输入30个字)