文章目录
一、LSP是什么(Layered Service Providers,分层服务提供者)
简单来说,LSP是微软公司提供的位于Windows环境下的编程接口,其目的提供第三方用户进行网络数据包的HOOK的标准接口。LSP是位于RING3层的一个HOOK框架,另外需要注意的是从Windows8、Windows Server 2012 开始,这个框架已经不再被微软所推荐,取而代之的是另外一个框架——Windows Filtering Platform,WPF,这也是网游加速器的第三种技术,之所以暂时不研究这个技术是因为从从MSDN及其其他网站上看WPF这个框架似乎是需要使用内核编程的相关知识,似乎不太好去动它。
二、文章背景
大家知道,在国内由于存在无望长城,在玩一些国外游戏的时候(特别是烂橘子、Xbox)等一些游戏的时候,如果不接专线,一般都需要使用各种网游加速器。网游加速器可以使用如下形式进行加速:
- 更改数据包的路由;
- 使用类似于Net的方式修改端IP地址来起到更改包路由的作用;
无论使用哪一种方法,网游加速器的客户端需要解决一个根本的问题:如何将一个独立的进程的网络通信包的路由进行更改?这个问题我之前进行了很多思考,我自认为有如下几种解决方式:
- 入侵游戏进程并HOOK对应的通信函数,这种方式理论上可行,但是实际上直接修改游戏进程的内存和外挂的实现方式极其相似,很容易导致账号的误封;另外直接修改程序内存很容易导致不稳定,还有一个原因就是进行如此敏感的操作,必然需要用户进行手动操作,而在现行的加速器中并没有看到对应的提示;
- 修改网络路由表;
- 通过Windows提供的编程接口来进行处理,如浏览器代理可通过设置
http_proxy
、https_proxy
环境变量来设置代理
以上的方式都是自己的一些猜想,通过网络上查看了一些资料,文章的出处留在了本文的最后,非常感谢这些大牛提供的帮助。我看到的几篇文章有不同的地方,但是发现现行的网游加速器一般都采用几重技术来保证加速器的正常运行,这些技术一般包括:
- LSP技术;
- HOOK技术;
- WFP技术;
- VPN技术;
另外还有通过创建虚拟网卡来实现的,但是无论哪一篇文章,都提到了LSP作为实现加速的首选。因此我就准备研究一下这个技术到底是什么玩意。另外网络上似乎并没有从零开始的教程,所以自己也准备好好写一下。
三、程序编译
我个人认为学习一个新的技术的首要前提是将程序先跑起来,所以这次系列文章的第一步是先将环境搭起来。
3.1 系统环境
首先列一下我成功编译了的环境: