首页 - 神途手游 > delphi外挂制作介绍篇

delphi外挂制作介绍篇

发布于:2024-07-17 作者:admin 阅读:90

网络游戏的封包技术是大多数编程爱好者都比较关注的关注的问题之一,在这一篇里就让我们一起研究一下这一个问题吧。

别看这是封包这一问题,但是涉及的技术范围很广范,实现的方式也很多(比如说,VXD,都可以实现),在这里我们不可能每种技术和方法都涉及,所以我在这里以技术作详细讲解,就算作抛砖引玉。

由于大多数读者对封包类编程不是很了解,我在这里就简单介绍一下相关知识:

由于的把内核提供的功能都封装到API里面,所以大家要实现功能就必须通过API,换句话说就是我们要想捕获数据封包,就必须先要得知道并且捕获这个API,从API里面得到封包信息。

VXD:

直接通过控制VXD驱动程序来实现封包信息的捕获,不过VXD只能用于win9X。

是网络编程接口,工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口,是.0提供的服务提供者接口,但只能在下用。

好了,我们开始进入封包式编程吧。

在封包编程里面我准备分两个步骤对大家进行讲解:1、封包的捕获,2、封包的发送。

首先我们要实现的是封包的捕获:

的封装的是1.0版的,很自然就用不成。如果要使用我们要对在里面做一个接口,才可以使用。

1、如何做的接口?

1)我们要先定义.0所用得到的类型,在这里我们以类型做示范,大家可以举一仿三的来实现其他类型的封装。

我们要知道类型会被用于(: word; var : ): ;,大家会发现是引用参数,在传入参数时传的是变量的地址,所以我们对做以下封装:

const

= 256;

= 128;

type

= ^;

=

: Word;

: Word;

: array[0..] of Char;

: array[0..] of Char;

: Word;

: Word;

: PChar;

end;

= ;

2)我们要从.DLL引入的函数,在此我们也是以为例做函数引入:

(: word; var : ):

; ;

const = ’.DLL’;

; name ’’;

通过以上方法,我们便可以对做接口,下面我们就可以用做封包捕获了,不过首先要有一块网卡。因为涉及到正在运作的网络游戏安全问题,所以我们在这里以IP数据包为例做封包捕获,如果下面的某些数据类型您不是很清楚,请您查阅MSDN:

1)我们要起动WSA,这时个要用到的函数,用法如下:

(

: word,

:

);

2)使用函数得到句柄,:=(, ,

); 用法如下:

(af: ,

: ,

:

);

:=(, ,

);在程序里为句柄,,,均为常量。

3)定义类型,跟据我们的网卡IP给类型附值,然后我们使用bind函数来绑定我们的网卡,Bind函数用法如下:

Type

=

: PChar;

End;

Type

=

: Word;

: Word;

:

: array[0..7] of Char;

End;

var

:;

.: = ;

.: = 0;

..: = (’192.168.1.1’);

//这里你自己的网卡的IP地址,而这个函数是的函数。

bind(, , ());

4)用来注册WSA的输入输出组件,其用法如下:

(s:,

: ,

:,

: ,

: ,

: ,

: ,

: ,

:

);

5)下面做死循环,在死循环块里,来实现数据的接收。但是徇环中间要用Sleep()做延时,不然程序会出错。

6)在循环块里,用recv函数来接收数据,recv函数用法如下:

recv (s : ,

:Array[0..4095] of byte,

: ,

flags : ,

);

7)在里就是我们接收回来的数据了,如果我们想要知道数据是什么地方发来的,那么,我们要定义一定IP包结构,用()把IP信息从里面读出来就可以了,不过读出来的是十六进制的数据需要转换一下。

看了封包捕获的全过程序,对你是不是有点起发,然而在这里要告诉大家的是封包的获得是很容易的,但是许多游戏的封包都是加密的,如果你想搞清楚所得到的是什么内容还需要自己进行封包解密。

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。

相关文章