【关于RA3新平台】距离新平台建成仅有一步之遥

player_4645 2021-2-20 13622

这是一只咕了一年的鸽子

但是咕咕一年也是有好处的

这不就给你们带来一个新平台(半成品)

(好吧其实是我三个星期做的)(我们至今仍未知道RAT平台的下落)


好了,下面是它的试用情况(alpha):


用的方法是局域网方式,而非五角星形式(旁边躲着的就是主程序,不过啥也没写不用看了,后期再补UI)

不过可惜,可喜的也就到这里就结束了,这个链接超时是我一直一直难以理解的情况

是哒,这就是传说中的半成品(聊个天)哈哈哈哈


咳,好吧,其实这个贴是求助帖,以上是我画的花里胡哨的流程图(谁看得懂啊喂)


测试数据:

*用wpe抓包得RA3纯sendto/recvfrom组成,无TCP/WSA链接

*用自制的小工具测试得包头去除正常,而且RA3的聊天系统正常也说明转发正常

*在内外网条件(不计延迟)的情况下均反应灵敏,无明显卡顿现象,应该不是延迟问题

*多次测试均无法加入房间,均为连接超时

*在加入房间(未显示超时)时,无论是房主发言还是访客发言,对方均不能收到

*加入房间时,客户端数据正常(甚至贼多,半秒钟十多条数据)


额外测试:(因为这个东西理论上是可以去搞任意游戏的)

*DuckGame+SmartSteam:Smartsteam直接注入未响应,把我客户端都带蹦了,duckgame注入之后找不到房间

*CS1.6:数据发送正常,找不到房间,wpe测试纯sento/recvfrom

(这玩意有点玄学:如A-游戏(9000)向8000(均指端口)发送请求,B-客户端收到这条请求后,向8000转发请求,此时wpe没抓到这个包,指cs没收到,而RA3是收到了也当成没收到,大雾,这两怎么回事)

*MC1.8:当场。。。。注入失败(雾)

最后于 2021-8-15 被player_4645编辑 ,原因:
最新回复 (11)
  • player_4645 2021-2-20
    0 引用 2
    总之,主要是想吸引来研究过RA3局域网机制的大佬解答一下()
  • player_4645 2021-2-21
    0 引用 3
    陵点捌伍 研究是好的,不过如果机制还是使用局域网的方式的话,那应该是竞争不过浩方平台的
    你不还是用着“竞争不过RA3吧”的RAT么
    只要局域网联机出来了,包括rank评级、小房间联机、mod地图传输、创意工坊一系列都可以挂载在上面,不过前提的核心就在这个问题上,先保证联机()
  • player_4645 2021-2-21
    0 引用 4


    新的测试数据:

    *使用【服务器分配的客户ID】作为虚拟IP的最后一位(也就是,如果服务器分配你的客户ID为2,那你的IP就是192.168.1.2),进不去房间(这是昨天的测试)

    *使用【对方内网IP】作为虚拟IP,还是一样的进不去房间(我还想着RA3会不会验证IP是否正确来着)

    *用wpe抓包,发现RA3的数据【全部】都是向整个局域网广播的,这条情况也符合了我软件的记录(我原本还以为我搞错了)

    *用了点神奇的操作:客户端每收到个包,客户端主动卡住0.5秒,模拟ping500的情况(别问怎么不搞个3秒,那是因为RA3收包的时候客户端阻塞,一个延迟居然把操作界面都卡死了,房间都加不进去,大雾),在局域网内进行联机测试,连接成功,说明RA3对延迟的要求并不算高,而且没有时间戳验证(或许吧)(甚至还可以开游戏,不过开起来的时候那个读条我实在看不下去,直接关了游戏,于是就没有截图了。)

    *另一平台虎克联机进房成功(没开游戏,懒得测了,能进房就行,不过听说这个不能传图来着),正在试图加作者好友,不过希望渺茫,2012年的平台,而且没有直接开源(雾)

  • player_4645 2021-2-21
    0 引用 5
    player_4645 新的测试数据:*使用【服务器分配的客户ID】作为虚拟IP的最后一位(也就是,如果服务器分配你的客户ID为2,那你的IP就是192.168.1.2),进不去房间(这是昨天的测试)*使用【对方内网IP】作 ...
    雾,超链接炸了,补上“神奇的操作”的连接:https://gchat.qpic.cn/gchatpic_new//--98B53C372A0DA79DB33ED926C0A14848/0
  • player_4645 2021-2-26
    0 引用 6
    Myn 查了查 你的意思是说这个是用的IPX协议?
    好多。。。先回复这个吧,后来我也查了,发现红警用的听说是IPX协议,但是我百度了一圈,找到的结果是IPX还是使用sendto/recvfrom函数,所以我的hook应该仍然生效才对,但对方没有加进房间就很奇怪。。。。(查了一圈都没明白IPX协议专用的API函数是什么。。。模模糊糊查出来个应该还是sendto)
  • player_4645 2021-2-26
    0 引用 7
    Myn 不太理解, 如果是局域网的话, 理论上说只要让所有用户都能互相通信就可以了。 所以说你只要在用户发包的时候外面加一层, 收包的时候把外面那层脱掉, 局域网就能实现吧 “用wpe抓包得RA3纯s ...
    我发包收包的时候在数据包头添加数据是为了确认来源与目标(好吧其实没怎么听懂你的意思)

    估计游戏不使用TCP的方式,因为TCP数据包太大了,不适合RA3这种一秒钟传一百个数据包(抓包的时候我都蒙了,而且那个时候我还没在建造东西,只是为了保持两个玩家的互相连接居然每秒钟要传输一百个数据包)
    然后对面卡自己进行不下去的话。。或许是由RA3自行进行了阻塞?(反正我用WPE没抓到TCP包,注入也没弹出信息框提示,如果大佬你抓得到还请告诉我)
    WSA的话按照下面的说法(网上找的)
    winsock1版的函数  无WSA前缀
    winsock2版的函数  加了WSA 前缀
    大概是说winsock的版本不同使用的函数不同,而我没有HOOK WSA的那两个,因为同样没抓到这种数据包。。
  • player_4645 2021-2-26
    0 引用 8
    ~rank评级其实是分为录像自动上传和游戏内显示,并不是像“排位赛”那样(如果可以的话也不是不能做),只是在游戏一开始给玩家一个了解对手实力的依据(虽说改个ID就能避免,这些功能以后再细细思索)
    ~小房间联机是给群P的玩家一个隔离空间,作为一个附加功能而非主要功能,实现起来不算复杂,只是先做好联机才有资格说这些。
    ~mod地图传输和创意工坊呢,则是有了平台才会有地图的存在,我是打算将一切地图全部收集,避免某些地图只在某个群才有,无法广泛传播的情况,然后玩家可以一键式下载,并且房主可以选择mod地图,然后传输给玩家(利用平台),这样的话,地图将拥有更大的可变性(我就是因为mod地图不能传输而不做mod地图的一类)
  • player_4645 2021-2-26
    0 引用 9

    这里是源码,易语言编写(之前没有发出来也是因为觉得这个语言太小众了的原因)

    程序没有做多少注释,而且代码逻辑也是非常混乱,如果要实现我这个软件的功能,直接参照上面的思路自己动手就好

    程序主软件:

    客户端DLL.e(TD-LINK-DLL.dll)
    客户端.e(TD-LINK.exe)
    服务器.e(服务器.exe)
    --------------------
    其他的东西一些是易语言编译残留和源码备份,另一些是测试用软件以及旧版保留
    首次运行请到 客户端.e-连接服务器 函数修改服务器IP。
    (因为软件处于Alpha状态,许多地方存在非人性化设计,而我打算以联机实现为主,不修,咕)

    使用的一些知识如下,还希望帮助各位想搭建新平台的:

    APIHOOK
    DLL注入
    网络位置与IP+端口的转换(这一点我被坑了老久,因为sendto使用的不是IP+端口的方式,还得先转换一遍)


    上传的附件:
  • player_4645 2021-2-27
    0 引用 10
    Myn 好奇去抓了个包 确实是局域网广播 但是是udp啊
    雾,我说的就是udp广播,udp使用sendto函数,因此我hook了sendto函数,没什么问题的亚子
  • player_4645 2021-8-15
    0 引用 11

    感谢 提供思路:

    :我发现你的启动器启动之后ip是不变的,浩方的会变成浩方那个ip


    于是我抱着试一试的心态找了一下,发现了RA3使用的另一个API:gethostbyname(),浩方也是修改了这里

    于是我进行了以下尝试:(局域网下)

    1.只转发数据包:一切正常

    2.增减数据包(添加与去除转发包头但不转发):一切正常

    3.修改发送者ip:能大厅聊天但进不去房间,且大厅出现重名(2个人有4个名字)(发这个帖子的时候就卡在这里了)

    4.修改本机的ip为虚拟ip:重名消失,忘记能不能进去房间了

    本来想再试一次再回来截图的,但刚刚整了贼久也没修好bug,反而用不了了,就没有办法截图和验证房间能不能进去了

    但是测试的时候有两个很大的问题:(修改成虚拟IP后)

    1.进入大厅、退出房间的时候加载特别久,而且游戏未响应,但卡顿的时候并没有接收到包和发送包

    2.只开一个客户端,进入大厅没有发送数据包,却收到了两个【空白的】数据包,开浩方的话没有收到这种数据包

    也就是收到那两个长度=0的数据包,然后游戏就开始未响应了,未响应十来秒,什么事也不干(不收包、不发包),然后自己又好了,很奇怪


    另外,枯了,易语言没有hostent结构体,求一个c大佬帮我讲解一下,百度看不懂T_T(刚刚修那么久就是在修这个bug)

    最后,因为本人(已经)开学了,所以项目将被持续搁置。。。。。


    如果有任何人希望继续完成这个项目,可以使用guest用户copy一份代码

    https://www.tdstudio.top/!/#LINK/view/head/TD-LINK-TEST/TEST_2

    以及(测试用工具-小型的udp发送器-n-客户端.exe)

    https://www.tdstudio.top/!/#LINK/view/head/TD-LINK-TEST/%E6%B5%8B%E8%AF%95%E7%94%A8%E5%B7%A5%E5%85%B7

  • player_4645 2021-8-15
    0 引用 12
    另外,如果只是新平台的话,基于【虚拟局域网】的n2n(由
    • RAT红警社区
      13
        登录 注册 QQ登录(不可用)
返回