爐石兄弟更新修復記錄(至2020年11月)


修復基於大神beebee102發出的版本,來源 Chuck Lu的博客園

修復時間為2020年11月,按照順序修復。

1. 修復mono.dll -> mono-2.0-bdwgc.dll

現象/錯誤提示

爐石兄弟與爐石傳說一起閃退

來源

1. wjhwjhn 的博客中的《2020-05-16 記錄對爐石兄弟的修復》

  原文章被整理合並進《爐石兄弟DIY匯總》中

網址: http://blog.wjhwjhn.com/index.php/archives/18/

2. 《2020-05-16 記錄對爐石兄弟的修復》下方評論(hanling1015)

  簡單提到兩個 + 12 改為 + 8
  原文章被合並,評論丟失

3. maxiori 的帖子《發幾張截圖,懂的自然懂》

網址:http://tieba.baidu.com/p/6684018294

具體修復

  1. ns27 - Class276

原來

			this.intptr_0 = this.method_18("mono.dll");
			this.intptr_31 = this.intptr_0 + 522030;
			this.intptr_28 = this.intptr_0 + 91559;
			this.intptr_13 = this.intptr_0 + 226176;
			this.intptr_16 = this.intptr_0 + 91615;
			this.intptr_6 = this.intptr_0 + 78677;
			this.intptr_1 = this.intptr_0 + 102855;
			this.intptr_15 = this.intptr_0 + 230512;
			this.intptr_14 = this.intptr_0 + 224970;
			this.intptr_7 = this.intptr_0 + 73617;
			this.intptr_19 = this.intptr_0 + 120353;
			this.intptr_29 = this.intptr_0 + 162866;
			this.intptr_17 = this.intptr_0 + 525190;
			this.intptr_25 = this.intptr_0 + 389455;
			this.intptr_24 = this.intptr_0 + 385464;
			this.intptr_32 = this.intptr_0 + 389677;
			this.intptr_34 = this.intptr_0 + 384279;
			this.intptr_36 = this.intptr_0 + 382675;
			this.intptr_35 = this.intptr_0 + 91327;
			this.intptr_23 = this.intptr_0 + 428289;
			this.intptr_33 = this.intptr_0 + 378912;
			this.intptr_27 = this.intptr_0 + 515937;
			this.intptr_12 = this.intptr_0 + 176417;
			this.intptr_10 = this.intptr_0 + 176976;
			this.intptr_4 = this.intptr_0 + 77237;
			this.intptr_8 = this.intptr_0 + 107261;
			this.intptr_21 = this.intptr_0 + 231261;
			this.intptr_18 = this.intptr_0 + 522401;
			this.intptr_5 = this.intptr_0 + 733279;
			this.intptr_30 = this.intptr_0 + 91701;
			this.intptr_2 = this.intptr_0 + 733427;
			this.intptr_9 = this.intptr_0 + 162872;
			this.intptr_3 = this.intptr_0 + 91604;
			this.intptr_26 = this.intptr_0 + 383139;
			this.intptr_22 = this.intptr_0 + 385556;
			this.intptr_20 = this.intptr_0 + 91570;
			this.intptr_11 = this.intptr_0 + 401933;

修改為

			this.intptr_0 = this.method_18("mono-2.0-bdwgc.dll");
			this.intptr_1 = this.intptr_0 + 199840;
			this.intptr_2 = this.intptr_0 + 203968;
			this.intptr_3 = this.intptr_0 + 203984;
			this.intptr_4 = this.intptr_0 + 166304;
			this.intptr_5 = this.intptr_0 + 204000;
			this.intptr_6 = this.intptr_0 + 175328;
			this.intptr_7 = this.intptr_0 + 168320;
			this.intptr_8 = this.intptr_0 + 202016;
			this.intptr_9 = this.intptr_0 + 154816;
			this.intptr_10 = this.intptr_0 + 974896;
			this.intptr_11 = this.intptr_0 + 636272;
			this.intptr_12 = this.intptr_0 + 975808;
			this.intptr_13 = this.intptr_0 + 379920;
			this.intptr_14 = this.intptr_0 + 376208;
			this.intptr_15 = this.intptr_0 + 403952;
			this.intptr_16 = this.intptr_0 + 204960;
			this.intptr_17 = this.intptr_0 + 526647;
			this.intptr_18 = this.intptr_0 + 731120;
			this.intptr_19 = this.intptr_0 + 203856;
			this.intptr_20 = this.intptr_0 + 204080;
			this.intptr_21 = this.intptr_0 + 232912;
			this.intptr_22 = this.intptr_0 + 647472;
			this.intptr_23 = this.intptr_0 + 864192;
			this.intptr_24 = this.intptr_0 + 644320;
			this.intptr_25 = this.intptr_0 + 656512;
			this.intptr_26 = this.intptr_0 + 652128;
			this.intptr_27 = this.intptr_0 + 730864;
			this.intptr_28 = this.intptr_0 + 204176;
			this.intptr_29 = this.intptr_0 + 155712;
			this.intptr_30 = this.intptr_0 + 232880;
			this.intptr_31 = this.intptr_0 + 729376;
			this.intptr_32 = this.intptr_0 + 657968;
			this.intptr_33 = this.intptr_0 + 658720;
			this.intptr_34 = this.intptr_0 + 627408;
			this.intptr_35 = this.intptr_0 + 189456;
			this.intptr_36 = this.intptr_0 + 644448;
  1. ns27 - Class276 - method_31

IntPtr pointer = intPtr + 12;+ 12 修改為 +8

  1. ns27 - Class276 - method_32

IntPtr pointer = intPtr2 + 12;+ 12 修改為 +8

2. 去除正版檢測

現象/錯誤提示

The current process file does not match the expected process file. Please reinstall Hearthbuddy.

來源

Chuck(霜之詠嘆調99) 的博客園《HearthBuddy 第一次調試》

網址:https://www.cnblogs.com/chucklu/p/11179300.html

具體修復

找到主程序入口,在HearthBuddy下面的APP文件中搜索,找到如下代碼。把這個檢查直接去掉

if (!first.SequenceEqual(second))
{
App.ilog_0.Error("The current process file does not match the expected process file. Please reinstall Hearthbuddy.");
Logger.OpenLogFile();
base.Shutdown(1);
return;
}

移除代碼之后,嘗試編譯發現報錯,是因為變量的名字不符合C#的規范導致的

右鍵選中字段,然后Edit Field,把<>9改成Instance9。<>9_5_0改為Instance9_5_0

3.修復Network.m_lastGameServerInfo

現象/錯誤提示

[Tick] Exception during execution:System.MissingFieldException: Field 'Network.m_lastGameServerInfo' not found.

來源

Chuck 的github (https://github.com/ChuckHearthstone/SilverFish) 中的Issues (ghotm)

網址:https://github.com/ChuckHearthstone/SilverFish/issues/40

具體修復

原來

// Triton.Game.Mapping.Network
		public GameServerInfo m_lastGameServerInfo
		{
			get
			{
				return base.method_3<GameServerInfo>("m_lastGameServerInfo");
			}
		}

修改為

// Triton.Game.Mapping.Network
		public GameServerInfo m_lastGameServerInfo
		{
			get
			{
				return base.method_14<GameServerInfo>("GetLastGameServerJoined", Array.Empty<object>());
			}
		}

4. 修復CollectionDeckBoxVisual.IsValid

現象/錯誤提示

System.MissingMethodException: Method 'CollectionDeckBoxVisual.IsValid' not found.

來源

Chuck 的博客園《HearthBuddy爐石兄弟 Method 'CollectionDeckBoxVisual.IsValid' not found.》

網址:https://www.cnblogs.com/chucklu/p/11183453.html

具體修復

處理思路是,把HearthBuddy里面的IsValid改為IsValidForCurrentMode【注意這里最后是mode不是model】

原來

		//Triton.Game.Mapping.CollectionDeckBoxVisual
		public bool IsValid()
		{
			return base.method_11<bool>("IsValid", Array.Empty<object>());
		}

修改為

		//Triton.Game.Mapping.CollectionDeckBoxVisual
		public bool IsValid()
		{
			return base.method_11<bool>("IsValidForCurrentMode", Array.Empty<object>());
		}

5. 修復選不中對戰模式、卡組

現象/錯誤提示

[TournamentScene_DeckPicker] The client has been detected to be in a broken state. Please restart it as soon as possible as it cannot leave the current scene.

選不中對戰模式、卡組

來源

hanling1015 在群中的幫助

具體修復

搜字符串 UnityEngine.dll 改為 UnityEngine.CoreModule.dll

位置:Triton.Game.TritonHs

(需要先修改不規范變量名,參考“修復2”)

6. 修復收藏界面報錯

現象/錯誤提示

System.MissingMethodException: Method 'CollectionManager.GetTaggedDeck' not found.

收藏界面報錯

具體修復

原來

//Triton.Game.Mapping.CollectionManager
		public CollectionDeck GetTaggedDeck(CollectionManager.DeckTag tag)
		{
			return base.method_14<CollectionDeck>("GetTaggedDeck", new object[]
			{
				tag
			});
		}

修改為

//Triton.Game.Mapping.CollectionManager
		public CollectionDeck GetTaggedDeck(CollectionManager.DeckTag tag)
		{
			return base.method_14<CollectionDeck>("GetEditedDeck", Array.Empty<object>());
		}
	}

7. 修復點擊開始對戰卡死/狂野和休閑模式來回切換

現象/錯誤提示

GreyMagic.InjectionDesyncException: Process must have frozen or gotten out of sync: Injection Finished Event was never fired

點擊開始對戰卡死

或者狂野和休閑模式來回切換

來源

與 鐵甲依然在 的聊天

具體修復

  1. Triton.Bot.Logic.DefaultBot

搜索 IN_RANKED_PLAY_MODEIN_RANKED_PLAY_MODE 右鍵編輯IL指令,修改對應option數值

  1. Triton.Game.Mapping.Option

搜索 IN_RANKED_PLAY_MODEIN_RANKED_PLAY_MODE 右鍵編輯字段,修改對應option數值

最新option數值在爐石的Assembly-CSharp.dll中找

可以用反射一勞永逸,不過已經是后來大家想出來的辦法。這里只講修復,而且這也是之前一直以來都修復方式。所以暫且不提。

8. 修復UberText.m_TextMeshGameObject

現象/錯誤提示

System.MissingFieldException: Field 'UberText.m_TextMeshGameObject' not found.

來源

Chuck 的github (https://github.com/ChuckHearthstone/SilverFish) 中的Issues (Dustsc)

網址:https://github.com/ChuckHearthstone/SilverFish/issues/43

具體修復

  1. 添加類

    using ns26;
    using ns27;
    using System;
    using System.Collections.Generic;
    using Triton.Game.Mono;
    using System.Runtime.InteropServices;
    
    namespace Triton.Game.Mapping
    {
    	[Attribute38("UberTextRendering")]
    	public class UberTextRendering : MonoBehaviour
    	{
    		public UberTextRendering(IntPtr address, string className)
    				: base(address, className)
    		{
    		}
    
    		public UberTextRendering(IntPtr address)
    			: this(address, "UberTextRendering")
    		{
    		}
    		
    		public GameObject m_textMeshGameObject => method_3<GameObject>("m_textMeshGameObject");
    	}
    }
    

    添加后編譯

  2. 編輯類 Triton.Game.Mapping.UberText
    原來

    //Triton.Game.Mapping.UberText
    		public GameObject m_TextMeshGameObject
    		{
    			get
    			{
    				return base.method_3<GameObject>("m_TextMeshGameObject");
    			}
    		}
    

    修改為

    //Triton.Game.Mapping.UberText
    		public UberTextRendering m_UberTextRendering => method_3<UberTextRendering>("m_UberTextRendering");
    		
    		public GameObject m_TextMeshGameObject => m_UberTextRendering.m_textMeshGameObject;
    

9. 留牌界面報錯

現象/錯誤提示

System.MissingMethodException: Method 'Entity.GetRace' not found.

來源

Chuck 的博客園《HearthBuddy爐石兄弟 Method 'Entity.GetRace' not found.》

網址:https://www.cnblogs.com/chucklu/p/11378719.html

具體修復


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM