影响范围:0.85.0600 - 任何未修复版本通杀
差不多两年前卡宝宝技能比较流行,那会很多人都被卡,方法也被公开了:
利用宠物打坐卡调引擎教程
今天来研究一下他的实现原理、以及修复的大概思路。
录制封包
先录制封包,给用门派技能给宝宝加一个状态:
38021A0000B1000080BF4C01FFFFFFFF993A00003B000000000080BF000080BF
客户端回调:{56,2,26,0,0,177,0,0,128,191,76,1,255,255,255,255,153,58,0,0,59,0,0,0,0,0,128,191,0,0,128,191}
再角色自己打坐一下:
38021A0000B2000080BF2300FFFFFFFF993A0000FFFFFFFF000080BF000080BF
客户端回调:{56,2,26,0,0,178,0,0,128,191,35,0,255,255,255,255,153,58,0,0,255,255,255,255,0,0,128,191,0,0,128,191}
分析封包
***付费内容***
十六进制拆分
给宝宝加一个状态:
38021A0000B1000080BF4C01FFFFFFFF 993A(玩家ID翻转十六进制为3a99,转换为十进制为15001) 0000 3B00(宝宝ID:003B,3B转换后位59) 0000000080BF000080BF
自己打坐:
38021A0000B2000080BF2300FFFFFFFF 993A(玩家ID) 0000 FFFF FFFF000080BF000080BF
改包993A和3B00互换位置
993A改成3B00,3B00的地方改成993A
给宝宝加一个状态封包修改后,引擎报错:
Assert:
[./AI/AI_Pet.cpp][693][ORESULT AI_Pet::PushCommand_UseSkill(ObjID_t, ObjID_t, FLOAT, FLOAT, FLOAT, GUID_t)][NULL && "AI_Pet::PushCommand_UseSkill...no skill id..."]
Assert:Stack:[./AI/AI_Pet.cpp][707][ORESULT AI_Pet::PushCommand_UseSkill(ObjID_t, ObjID_t, FLOAT, FLOAT, FLOAT, GUID_t)]
[FALSE]Assert:Stack:[./Packets/CGCharUseSkillHandler.cpp][230][static UINT Packets::CGCharUseSkillHandler::Execute(Packets::CGCharUseSkill*, Player*)]
[FALSE]Assert:Stack:[../../Common/Packets/CGCharUseSkill.cpp][49][virtual UINT Packets::CGCharUseSkill::Execute(Player*)][FALSE]./Player/Player.cpp 187 virtual void Player_AtServer::onExecutePacketException(INT, const CHAR*, UINT) (-959595696)(T0=2025-3-4_12:5:54 T1=3089.1520)
ERROR:Player::ProcessCommand...PACKET_EXE_ERROR GUID=3C33612D PacketID=568 (-959595696)(T0=2025-3-4_12:5:54 T1=3089.1520)
ERROR CC2 GUID=3C33612D NeedRemove (-959595696)(T0=2025-3-4_12:5:54 T1=3089.1520)
剩余 22% 内容需要支付 10.00
金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。