Could not attach to a Hearthstone process.

配置的加载

// Hearthbuddy.Windows.ConfigurationWindow
// Token: 0x060001DB RID: 475 RVA: 0x00088A3C File Offset: 0x00086C3C
public ConfigurationWindow()
{
    this.InitializeComponent();
    if (!CommandLine.Arguments.Exists("config"))
    {
        Configuration.Instance.Name = "Default";
        return;
    }
    string text = CommandLine.Arguments.Single("config");
    if (new Regex("^[a-zA-Z0-9_]*$").IsMatch(text))
    {
        Configuration.Instance.Name = text;
        this.bool_0 = true;
        return;
    }
    Configuration.Instance.Name = "Default";
}

 

// Hearthbuddy.Windows.ConfigurationWindow
// Token: 0x060001DD RID: 477 RVA: 0x00088B90 File Offset: 0x00086D90
private void button_0_Click(object sender, RoutedEventArgs e)
{
    string text = this.comboBox_0.Text;
    if (string.IsNullOrEmpty(text))
    {
        MessageBox.Show("Please select or enter a valid configuration to use.", "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
        return;
    }
    if (!new Regex("^[a-zA-Z0-9_\\-]*$").IsMatch(text))
    {
        MessageBox.Show("The configuration name is invalid. Please use only alphanumeric, the underscore, or a dash characters (a-z, A-Z, 0-9, _, -).", "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
        return;
    }
    this.method_0(text);
}

 

string_0是"Default"

// Hearthbuddy.Windows.ConfigurationWindow
// Token: 0x060001DC RID: 476 RVA: 0x00088ABC File Offset: 0x00086CBC
private void method_0(string string_0)
{
    if (!GlobalSettings.Instance.Configurations.Contains(string_0))
    {
        GlobalSettings.Instance.Configurations.Add(string_0);
    }
    GlobalSettings.Instance.LastUsedConfiguration = string_0;
    Configuration.Instance.Name = string_0;
    try
    {
        base.Visibility = Visibility.Hidden;
        LoginWindow loginWindow = new LoginWindow();
        int num = 0;
        while (loginWindow.NeedsToShow)
        {
            Application.Current.MainWindow = loginWindow;
            loginWindow.ShowDialog();
            if (Application.Current.MainWindow == null || num > 5)
            {
                if (num > 5)
                {
                    MessageBox.Show("Hearthbuddy has tried to login too many times. Please wait a short while and try again. Hearthbuddy will now close.", "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
                }
                Environment.Exit(0);
            }
            num++;
        }
        base.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString(), "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
        Environment.Exit(0);
    }
}

 

 

 

// Hearthbuddy.Windows.MainWindow
// Token: 0x060001FF RID: 511 RVA: 0x00089530 File Offset: 0x00087730
private void method_1(object sender, RoutedEventArgs e)
{
    try
    {
        base.Title = "Hearthbuddy-20190818-005(https://github.com/ChuckHearthBuddy/SilverFish)";
        base.SetBinding(Window.LeftProperty, new Binding("WindowX")
        {
            Source = MainSettings.Instance,
            Mode = BindingMode.TwoWay
        });
        base.SetBinding(Window.TopProperty, new Binding("WindowY")
        {
            Source = MainSettings.Instance,
            Mode = BindingMode.TwoWay
        });
        base.SetBinding(FrameworkElement.WidthProperty, new Binding("WindowWidth")
        {
            Source = MainSettings.Instance,
            Mode = BindingMode.TwoWay
        });
        base.SetBinding(FrameworkElement.HeightProperty, new Binding("WindowHeight")
        {
            Source = MainSettings.Instance,
            Mode = BindingMode.TwoWay
        });
        MainSettings.Instance.LoadRowDefinitions(this.rowDefinition_0, this.rowDefinition_1, this.rowDefinition_2);
        this.method_3();
        this.textBox_0.Text = Logger.FileName;
        this.method_17();
        this.method_18();
        this.method_19();
        this.method_20();
    }
    catch (Exception exception)
    {
        MainWindow.ilog_0.Error("[Ui] An exception occurred.", exception);
    }
}

 

 

 

// Hearthbuddy.Windows.MainWindow
// Token: 0x06000201 RID: 513 RVA: 0x00003C51 File Offset: 0x00001E51
private void method_3()
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(this.method_21));
}

 

 

 

// Hearthbuddy.Windows.MainWindow
// Token: 0x06000231 RID: 561 RVA: 0x0008AC34 File Offset: 0x00088E34
[CompilerGenerated]
private void method_21(object object_0)
{
    try
    {
        base.Dispatcher.Invoke(new Action(this.method_22));
        string text;
        if (this.process_0 == null)
        {
            base.Dispatcher.BeginInvoke(new Action(base.Close), Array.Empty<object>());
        }
        else if (!TritonHs.smethod_0(this.process_0, new TritonHs.Delegate6(Class12.smethod_4), out text))
        {
            MainWindow.ilog_0.Error(text);
            System.Windows.MessageBox.Show(text, "Error", MessageBoxButton.OK, MessageBoxImage.Hand);
            base.Dispatcher.BeginInvoke(new Action(base.Close), Array.Empty<object>());
        }
        else
        {
            TritonHs.Memory.ProcessExited += MainWindow.Class25.ChuckInstance9.method_1;
            TritonHs.Memory.Executor.FrameDropWaitTime = 15000u;
            TritonHs.Memory.Executor.ExecuteWaitTime = 15000;
            TritonHs.Memory.DisableCache();
            TritonHs.Memory.ClearCache();
            int version;
            int clientChangelist;
            using (TritonHs.AcquireFrame())
            {
                version = Triton.Game.Mapping.Version.version;
                clientChangelist = Triton.Game.Mapping.Version.clientChangelist;
            }
            if ((long)version != (long)((ulong)Class247.UInt32_1) && (long)clientChangelist != (long)((ulong)Class247.UInt32_2))
            {
                MainWindow.ilog_0.InfoFormat("Hearthstone client version ({0}, {1})", version, clientChangelist);
                new Coroutine(new Func<Task>(MainWindow.Class25.ChuckInstance9.method_2));
                Configuration.Instance.AddSettings(MainSettings.Instance);
                Configuration.Instance.AddSettings(DevSettings.Instance);
                Configuration.Instance.SaveAll();
                base.Dispatcher.Invoke(new Action(this.method_23));
                BotManager.PreStart += this.method_11;
                BotManager.PostStop += this.method_10;
                BotManager.Load();
                base.Dispatcher.Invoke(new Action(this.method_24));
                this.comboBox_0.Dispatcher.BeginInvoke(new Action(this.method_25), Array.Empty<object>());
                BotManager.OnBotChanged += this.method_6;
                RoutineManager.Load();
                base.Dispatcher.Invoke(new Action(this.method_26));
                this.comboBox_1.Dispatcher.BeginInvoke(new Action(this.method_27), Array.Empty<object>());
                RoutineManager.OnRoutineChanged += this.method_7;
                PluginManager.Load();
                foreach (IPlugin plugin in PluginManager.Plugins)
                {
                    if (MainSettings.Instance.EnabledPlugins.Contains(plugin.Name))
                    {
                        using (TritonHs.AcquireFrame())
                        {
                            PluginManager.Enable(plugin);
                        }
                        Thread.Sleep(20);
                    }
                    else
                    {
                        using (TritonHs.AcquireFrame())
                        {
                            PluginManager.Disable(plugin);
                        }
                        Thread.Sleep(20);
                    }
                }
                this.listBox_0.Dispatcher.Invoke<IEnumerable>(new Func<IEnumerable>(this.method_28), DispatcherPriority.Normal);
                base.Dispatcher.Invoke(new Action(this.method_29));
                PluginManager.PluginEnabled += this.method_5;
                PluginManager.PluginDisabled += this.method_4;
                MainWindow.ilog_0.ErrorFormat("{0}Please read the following guide before using this program:{0}https://github.com/ChuckHearthBuddy/SilverFish/blob/master/ReadMe.md", Environment.NewLine);
                base.Dispatcher.Invoke(new Action(this.method_30));
                base.Dispatcher.Invoke(new Action(this.method_31));
                this.stopwatch_0.Restart();
                RoutineManager.OnRoutineChanged += this.method_7;
                BotManager.OnBotChanged += this.method_6;
                TritonHs.IsBotFullyLoaded = true;
                Hotkeys.Register("BotManager.StartStop", Keys.S, ModifierKeys.Alt | ModifierKeys.Shift, new Action<Hotkey>(MainWindow.Class25.ChuckInstance9.method_3));
                if (CommandLine.Arguments.Exists("autostart"))
                {
                    BotManager.Start();
                }
            }
            else
            {
                text = string.Format("This client version ({0}, {1}) is unsupported. Hearthbuddy currently supports client version ({2}, {3}). Please check the forums for more information: https://www.thebuddyforum.com/hearthbuddy-forum/", new object[]
                {
                    version,
                    clientChangelist,
                    Class247.UInt32_1,
                    Class247.UInt32_2
                });
                MainWindow.ilog_0.ErrorFormat(text, Array.Empty<object>());
                System.Windows.MessageBox.Show(text, "Error", MessageBoxButton.OK, MessageBoxImage.Hand);
                base.Dispatcher.BeginInvoke(new Action(base.Close), Array.Empty<object>());
            }
        }
    }
    catch (Exception exception)
    {
        MainWindow.ilog_0.Error("[OnStartup] A top-level exception has been caught.", exception);
    }
}

 

// Hearthbuddy.Windows.MainWindow
// Token: 0x06000232 RID: 562 RVA: 0x0008B13C File Offset: 0x0008933C
[CompilerGenerated]
private void method_22()
{
    if (!Class9.smethod_4(out this.mutex_0, out this.process_0))
    {
        MainWindow.ilog_0.Error("Could not attach to a Hearthstone process. Please make sure an available Hearthstone process is running.");
        MessageBox.Show(string.Format("Could not attach to a Hearthstone process. Please make sure an available Hearthstone process is running.{0}{0}Hearthbuddy will now close.", Environment.NewLine), "Hearthbuddy", MessageBoxButton.OK, MessageBoxImage.Hand);
        return;
    }
    this.dispatcherTimer_0 = new DispatcherTimer(TimeSpan.FromSeconds(1.0), DispatcherPriority.Normal, new EventHandler(this.method_9), base.Dispatcher);
    this.dispatcherTimer_0.Start();
}

 

 

 

// ns3.Class9
// Token: 0x06000116 RID: 278 RVA: 0x00003359 File Offset: 0x00001559
internal static bool smethod_4(out Mutex mutex_0, out Process process_0)
{
    if (!Class9.smethod_5(out mutex_0, out process_0))
    {
        return false;
    }
    Path.Combine(Path.GetDirectoryName(process_0.MainModule.FileName), "Hearthstone_Data", "Mono");
    return true;
}

 

// ns3.Class9
// Token: 0x06000117 RID: 279 RVA: 0x00086200 File Offset: 0x00084400
internal static bool smethod_5(out Mutex mutex_0, out Process process_0)
{
    mutex_0 = null;
    process_0 = null;
    Arguments arguments = CommandLine.Arguments;
    if (arguments.Exists("pid"))
    {
        try
        {
            int num = int.Parse(arguments.Single("pid"));
            process_0 = Process.GetProcessById(num);
            if (!Class9.smethod_6(process_0))
            {
                Class9.ilog_0.Error("Invalid PID specifier passed to the command line: " + arguments.Single("pid") + ". This process is not a Hearthstone client.");
                return false;
            }
            bool flag;
            mutex_0 = Class9.smethod_1(num, out flag);
            if (!flag)
            {
                mutex_0 = null;
                process_0 = null;
                Class9.ilog_0.Error("Invalid PID specifier passed to the command line: " + arguments.Single("pid") + ". This process has already been attached to.");
                return false;
            }
            return true;
        }
        catch
        {
            Class9.ilog_0.Error("Invalid PID specifier passed to the command line: " + arguments.Single("pid"));
            return false;
        }
    }
    bool result;
    if (arguments.Exists("pname"))
    {
        try
        {
            string processName = arguments.Single("pname");
            process_0 = Process.GetProcessesByName(processName).FirstOrDefault<Process>();
            if (process_0 != null && Class9.smethod_6(process_0))
            {
                bool flag2;
                mutex_0 = Class9.smethod_1(process_0.Id, out flag2);
                if (!flag2)
                {
                    mutex_0 = null;
                    process_0 = null;
                    Class9.ilog_0.Error("Invalid PNAME specifier passed to the command line: " + arguments.Single("pname") + ". This process has already been attached to.");
                    result = false;
                }
                else
                {
                    result = true;
                }
            }
            else
            {
                Class9.ilog_0.Error("Invalid PNAME specifier passed to the command line: " + arguments.Single("pname") + ". This process is not a Hearthstone client.");
                result = false;
            }
        }
        catch
        {
            Class9.ilog_0.Error("Invalid PNAME specifier passed to the command line: " + arguments.Single("pname"));
            result = false;
        }
    }
    else
    {
        List<Process> list = Class9.smethod_7().ToList<Process>();
        if (list.Count == 0)
        {
            return false;
        }
        if (!arguments.Exists("noautoattach") && list.Count == 1)
        {
            bool flag3;
            mutex_0 = Class9.smethod_1(list[0].Id, out flag3);
            if (flag3)
            {
                process_0 = list[0];
                return true;
            }
            mutex_0.Dispose();
        }
        Dictionary<Process, string> dictionary = new Dictionary<Process, string>();
        foreach (Process process in list)
        {
            bool flag4;
            mutex_0 = Class9.smethod_1(process.Id, out flag4);
            if (flag4 && mutex_0 != null)
            {
                using (ExternalProcessMemory externalProcessMemory = new ExternalProcessMemory(process, false, false, false))
                {
                    dictionary.Add(process, Class9.smethod_0(externalProcessMemory));
                    mutex_0.ReleaseMutex();
                    mutex_0.Dispose();
                }
            }
        }
        ProcessSelectorWindow processSelectorWindow = new ProcessSelectorWindow(dictionary)
        {
            Topmost = true
        };
        if (processSelectorWindow.ShowDialog() == true)
        {
            process_0 = processSelectorWindow.Selected;
            bool flag5;
            mutex_0 = Class9.smethod_1(process_0.Id, out flag5);
            return true;
        }
        return false;
    }
    return result;
}

 

// ns3.Class9
// Token: 0x06000112 RID: 274 RVA: 0x00003352 File Offset: 0x00001552
private static string smethod_0(ExternalProcessMemory externalProcessMemory_0)
{
    return "(Hearthstone)";
}

 

// ns3.Class9
// Token: 0x06000113 RID: 275 RVA: 0x0008608C File Offset: 0x0008428C
private static Mutex smethod_1(int int_0, out bool bool_0)
{
    return new Mutex(true, "Local\\" + (Environment.MachineName.GetHashCode() ^ int_0.GetHashCode() ^ TimeZone.CurrentTimeZone.StandardName.GetHashCode() ^ "Blizz_HS_BuddyTeam".GetHashCode() + 25), ref bool_0);
}

 

posted @ 2019-08-05 13:11  ChuckLu  阅读(531)  评论(0编辑  收藏  举报