找回密码
 registerss
搜索
查看: 21|回复: 0

洱海月 v0-07-0300 封包解析:ID 1101 CGCheckMessage(旧版消息校验请求)

[复制链接]
  • 打卡等级:本地老炮
  • 打卡总天数:603
  • 打卡月天数:1
  • 打卡总奖励:600
  • 最近打卡:2026-10-03 06:32:28
Waylee 发表于 2026-4-14 00:46 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?registerss

×

CGCheckMessage 是当前 Game.exe 中仍保留的一条固定长请求包。现有证据能直接确认它在线上包体里只包含一个 uint32 参数和一段固定 100 字节文本,但当前 /home/ubuntu/Game2 未发现同名协议定义、请求入口或场景处理,因此它更接近旧版消息校验/文本检查相关请求,而不是现役 Lua 主链正在使用的有效封包。

包信息

项目 内容
封包 ID 1101
包名 CGCheckMessage
方向 CG 客户端 -> 服务端
包长 固定 104 字节
专用回包 无专用回包
当前 Lua 协议定义 未发现 packet.CGCheckMessage
当前 Lua 请求入口 未发现 request:CGCheckMessage()
当前 Lua 场景落点 未发现同名场景处理
当前用途 旧版消息校验/文本检查相关请求;现役 Lua 主链未接入

当前 Game.exe 可直接确认:

GetPacketID()   = 1101;
GetPacketSize() = 104;
Read()          = read_u32_check_type + read_char_100_message;
Write()         = write_u32_check_type + write_char_100_message;
Execute()       = 2;

包体结构

按当前 Game.exe 的读写函数,这条包是固定 104 字节:

偏移 长度 字段 类型 含义
0x00 0x04 check_type uint32 消息校验类型或业务子类型;当前现役链路未接入,具体枚举含义无法确认
0x04 0x64 message char[100] 待校验文本或消息内容;固定 100 字节文本槽位

长度规则:

packet_size = 104

字段命名说明:

  • Game.exe 只给出了裸偏移和字节长度,没有直接暴露成员名。
  • 本文把首字段记为 check_type,是基于包名 CheckMessage 做出的保守命名;由于当前现役 Lua 未接入,这个字段不适合继续强行细分为更具体的枚举名。
  • 构造函数会把对象里偏移 0x1C 开始的 0x65 字节缓冲区清零,说明包内的 100 字节文本槽位在本地对象中还预留了额外的结尾零字节;但线上协议本身仍只传输 100 字节。

当前实际行为

  • 当前 Game.exe 明确保留了 CGCheckMessage 的 RTTI、虚表、工厂和固定长读写结构。
  • 当前 Game.exe 的 Execute() 仅是空壳返回 2,请求包类本身没有体现出额外客户端业务逻辑。
  • 当前 /home/ubuntu/Game2 未发现:
    • packet.CGCheckMessage
    • request:CGCheckMessage()
    • 同名 msgagent 入口
    • 同名场景处理函数
  • 当前 Game.exe 里也未检出 GCCheckMessage、CheckMessageResult 一类明显对应的专用回包类名。
  • 因此,按当前证据,这条包更适合归类为客户端残留的旧版消息校验/文本检查请求包,而不是现役服务端已接通的业务协议。
  • “消息校验/文本检查”这一用途判断主要来自包名 CheckMessage 和固定 100 字节文本结构,属于基于命名和结构的推断,不是现役 Lua 主链已经验证的结论。

服务端落点

当前 Lua 项目未发现这条包的正式落点:

  • 未发现协议定义:/home/ubuntu/Game2/services/game/packet.lua
  • 未发现请求入口:/home/ubuntu/Game2/services/msgagent.lua
  • 未发现消息服处理:/home/ubuntu/Game2/msgagent_module
  • 未发现场景服处理:/home/ubuntu/Game2/services/scene/scenecore.lua

因此,CGCheckMessage 在当前版本里没有现役 Lua 服务端处理链可供继续追踪。

关键代码

当前 Game.exe 读包结构

__int64 __fastcall CGCheckMessage_Read(__int64 pkt, __int64 stream)
{
    Read(stream, (char *)(pkt + 24), 4);    // check_type
    Read(stream, (char *)(pkt + 28), 100);  // message[100]
    return 1;
}

当前 Game.exe 写包结构

__int64 __fastcall CGCheckMessage_Write(__int64 pkt, __int64 stream)
{
    Write(stream, pkt + 24, 4);
    Write(stream, pkt + 28, 100);
    return 1;
}

当前 Game.exe 构造与关键返回值

Packets::CGCheckMessage *CreatePacket()
{
    auto *pkt = (Packets::CGCheckMessage *)operator new(0x88);
    if (!pkt)
        return nullptr;
    PacketBaseCtor(pkt);
    pkt->vftable = &Packets::CGCheckMessage::`vftable';
    pkt->check_type = 0;
    memset(&pkt->message, 0, 0x65);
    return pkt;
}

__int64 CGCheckMessage_GetPacketID()   { return 1101; }
__int64 CGCheckMessage_GetPacketSize() { return 104; }
__int64 CGCheckMessage_Execute()       { return 2; }

结论

  1. CGCheckMessage 的封包 ID 是 1101,当前 Game.exe 中固定长度为 104 字节。
  2. 这条包的结构已经可以确认是 uint32 check_type + char[100] message。
  3. 当前 Temp_Release_v0-07-0300 的 Lua 服务端没有接入这条协议,也未发现明显对应的专用回包。
  4. 因此,它应归类为“客户端保留的旧版消息校验/文本检查请求包”,不是当前 Lua 主链正在使用的有效封包。
  5. 由于现行服务端没有落点,check_type 的具体枚举含义当前不宜继续强行细化。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

QQ|手机版|雪舞知识库 ( 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 )|天天打卡

GMT+8, 2026-10-4 11:26 , Processed in 0.062132 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表