Re: [闲聊] reddit有人分享让对手断线方法(已修复

楼主: KeepHard (0.0)   2022-02-08 16:22:12
简单翻
大意:原PO三年前发现一个可以让对手断线的BUG,用BBrode这个ID上传说#1,后来回报给
暴雪,半年后BUG被修复。
三年前,我跟妳各位一样沉迷炉石,各种炉石网站我都会逛,当时甚至想写炉石AI,
那时候有个人在hearthsim.info写了很多教学我看了很多,还有当时的dogdog的实况,
学他玩了那时候最有趣的排组APM priset
然后接下来我找到一个地方,教你怎么怎么解开封包,然后我学了一些东西,做出了像是
把自己的卡牌动画加速,所以我一回合可以出超多牌,Topsy Turvy Priest当时就用这套
完全不用担心动画速度,只要记得怎么出combo(有个combo sim)。
接下来几周我用32/1野猪上传说。这套我看不懂没玩过ㄏㄏ
接下来呢? 我继续看封包有什么,一开始我把所以卡变成有动画的(金卡)然后把金卡边框
拿掉,说真的满美的,然后还想说做一个mod让其他人能玩(虽然我后来都没做)。
但后来我发现一篇文章提到,一个方法可以去查对手的牌。
(原文下面有附上说明,省略)
我试了一下发现不太好用,所以我继续研究那篇文章提到的其他东西
1.查看不属于你的牌组? 0
2.在竞技场用自己的牌组? 0
3.选竞技场中三选一以外的牌? 0
4.创建一套可以加入多张你没有的卡或是怪卡(像是标准的英雄或是英雄能力的卡) 有囉
结果在配对的时候他认为你的卡不属于标准,所以配对不到对手 GG
5.还有一堆类似的,但都没什么用。
然后我就发现这个FindGame的要求
byte[] array = Guid.NewGuid().ToByteArray();
long currentFsgId = FiresideGatheringManager.Get().CurrentFsgId;
bnet.protocol.game_master.Player player = new
bnet.protocol.game_master.Player();
Identity identity = new Identity();
identity.SetGameAccountId(gameAccountId);
player.SetIdentity(identity);
player.AddAttribute(ProtocolHelper.CreateAttribute("type",
(long)bnetGameType));
player.AddAttribute(ProtocolHelper.CreateAttribute("scenario",
(long)scenarioId));
player.AddAttribute(ProtocolHelper.CreateAttribute("brawl_library_item_id",
(long)brawlLibraryItemId));
player.AddAttribute(ProtocolHelper.CreateAttribute("deck", deckId));
player.AddAttribute(ProtocolHelper.CreateAttribute("aideck", aiDeckId));
player.AddAttribute(ProtocolHelper.CreateAttribute("request_guid", array));
player.AddAttribute(ProtocolHelper.CreateAttribute("fsg_id", currentFsgId));
GameProperties gameProperties = new GameProperties();
AttributeFilter attributeFilter = new AttributeFilter();
attributeFilter.SetOp(AttributeFilter.Types.Operation.MATCH_ALL);
attributeFilter.AddAttribute(ProtocolHelper.CreateAttribute("GameType",
(long)bnetGameType));
gameProperties.SetFilter(attributeFilter);
gameProperties.AddCreationAttributes(ProtocolHelper.CreateAttribute("type",
(long)bnetGameType));
gameProperties.AddCreationAttributes(ProtocolHelper.CreateAttribute("scenario",
(long)scenarioId));
gameProperties.AddCreationAttributes(ProtocolHelper.CreateAttribute("brawl_library_item_id",
(long)brawlLibraryItemId));
BattleNet.FindGame(gameProperties, new bnet.protocol.game_master.Player[] {
player });
看起来没什么不过用看看就知道了
我先送出这段,然后发现我自己断线了,算是一个BUG没什么用途。
接下来创另一个帐号,然后把代码里面的gameAccountID换成我原来的帐号ID
挖!我在另一个帐号玩我原来帐号的那场游戏
再度把上面那串请求送出,我又断线了
等等好像发现了什么
我们知道对手的ID吗? YES
我们知道对手的DeckID吗? no
怎办
嘿嘿,你玩单人游戏的时候DeckID=0
所以
1.用一个mod每5秒就送出
gameAccountId = GameState.Get().GetOpposingSidePlayer().GetGameAccountId();
bnetGameType = BnetGameType.BGT_VS_AI; scenarioId = 0xBA2 /*Boom Labs*/;
deckId = 0;
把他丢进Assembly里面
2.开一个新帐号,取名叫BBrode。
3.从rank50开始
4.用这个mod跑12小时
5.Legend#1
6.用HackerOne回报给暴雪
类似第三方的黑客回报悬赏网站
7.赚钱
8.半年后修复
后面就是原po的感谢还有跟当年被BBrode给大屠杀的各位道歉
然后RIP Hearthstone
作者: starjack2001 (李也鴉信)   2022-02-08 17:09:00
我手边有两台设备 一台桌电一台笔电 桌电的主机离笔电距离不到180公分同样用无线网络,但只要用桌电打炉石就会一直断线跳出笔电从来没这种状况同样有下载hs后来我断线了一个下午之后开始实测,我的mc 服务器、discord 机器人、twitch跟yt 实况全部都连得好好的,但桌电就是会断线

Links booklink

Contact Us: admin [ a t ] ucptt.com