示例#1
0
        public void P2PClientDataReceived(byte[] data, int receiveBytesNum)
        {
            if (receiveBytesNum < RemotePointer.PackageLength)
            {
                return;
            }
            StringBuilder sb = new StringBuilder();

            sb.Append(Encoding.UTF8.GetString(data, 0, receiveBytesNum));
            string dataStr = sb.ToString();

            if (dataStr.IndexOf("\n") < RemotePointer.PackageLength - 1)
            {
                return;
            }
            byte[] validDataChunk = new byte[RemotePointer.PackageLength];
            Array.Copy(data, dataStr.IndexOf("\n") - (RemotePointer.PackageLength - 1), validDataChunk, 0, RemotePointer.PackageLength);
            RemotePointer remotePointer = new RemotePointer();

            remotePointer.Parse(validDataChunk);
            if (!remotePointerList.ContainsKey(remotePointer.Id))
            {
                if (remotePointer.X >= 0 && remotePointer.X <= 1 &&
                    remotePointer.Y >= 0 && remotePointer.Y <= 1)
                {
                    remotePointer.IsActive = true;
                    remotePointerList.Add(remotePointer.Id, remotePointer);
                    if (pointerEventListener != null)
                    {
                        pointerEventListener.NewPointerAddedEvent(remotePointer, pointerColors[nextColorIndex]);
                        nextColorIndex = (nextColorIndex + 1) % pointerColors.Length;
                    }
                }
            }
            else
            {
                if (remotePointer.X >= 0 && remotePointer.X <= 1 &&
                    remotePointer.Y >= 0 && remotePointer.Y <= 1)
                {
                    remotePointer.IsActive = true;
                    remotePointerList[remotePointer.Id] = remotePointer;
                    if (pointerEventListener != null)
                    {
                        pointerEventListener.PointerUpdatedEvent(remotePointer);
                    }
                }
                else
                {
                    remotePointer.IsActive = false;
                    remotePointerList[remotePointer.Id] = remotePointer;
                    if (pointerEventListener != null)
                    {
                        pointerEventListener.PointerUpdatedEvent(remotePointer);
                    }
                }
            }
        }
示例#2
0
 static void NullMonoSecurity(RemotePointer mono_security_set_mode)
 {
     Console.ForegroundColor = ConsoleColor.Cyan;
     Console.Write("Nulling mono security... ");
     mono_security_set_mode.Execute(CallingConventions.Cdecl, (int)MonoSecurityMode.MONO_SECURITY_MODE_NONE); // void (returns IntPtr.Zero as expected?)
     Console.ForegroundColor = ConsoleColor.Green;
     Console.WriteLine("success.");
     Console.ForegroundColor = ConsoleColor.White;
 }
示例#3
0
        static void UpdateAddresses()
        {
            while (true)
            {
                NeplunkerBaseAddressCurrent = Memory[NeplunkerBaseAddress].Read <IntPtr>();
                NeplunkerPointer            = Memory[NeplunkerBaseAddressCurrent + NeplunkerOffset, false];

                Thread.Sleep(10);
            }
        }
示例#4
0
        public static string getLogStr_RemotePointerReentered(RemotePointer pointer)
        {
            string logStr      = "";
            string addedTime   = DateTime.Now.ToString("HH:mm:ss.ff");
            string id          = pointer.Id.ToString();
            string objectType  = "Pointer";
            string commandType = "Reentered";

            logStr = string.Format("{0};{1};{2};{3};{4};{5}", addedTime, id, objectType, commandType, pointer.X, pointer.Y);
            return(logStr);
        }
示例#5
0
 public void PointerUpdatedEvent(RemotePointer updatedPointer)
 {
     this.Dispatcher.Invoke(new Action(() =>
     {
         try
         {
             ScatterViewItem pointerContainer = findViewItemWithPointerID(updatedPointer.Id);
             if (pointerContainer == null)
             {
                 return;
             }
             if (!updatedPointer.IsActive)
             {
                 //make pointer fade out
                 DoubleAnimation anim = new DoubleAnimation(0, TimeSpan.FromSeconds(2));
                 pointerContainer.BeginAnimation(UserControl.OpacityProperty, anim);
                 //pointerContainer.Visibility = System.Windows.Visibility.Hidden;
                 sv_RemotePointerCanvas.UpdateLayout();
                 pointerContainer.Tag = updatedPointer;
                 Utilities.BrainstormingEventLogger.GetInstance(dropboxGeneralNoteDownloader.Storage).UploadLogString(Utilities.BrainstormingEventLogger.getLogStr_RemotePointerLeft(updatedPointer));
             }
             else
             {
                 //make pointer fade in
                 if (!((RemotePointer)pointerContainer.Tag).IsActive)
                 {
                     DoubleAnimation anim = new DoubleAnimation(1, TimeSpan.FromSeconds(0.2));
                     pointerContainer.BeginAnimation(UserControl.OpacityProperty, anim);
                     Utilities.BrainstormingEventLogger.GetInstance(dropboxGeneralNoteDownloader.Storage).UploadLogString(Utilities.BrainstormingEventLogger.getLogStr_RemotePointerReentered(updatedPointer));
                 }
                 //update location
                 int X = (int)(updatedPointer.X * canvasesContainer.Width);
                 int Y = (int)(updatedPointer.Y * canvasesContainer.Height);
                 pointerContainer.Center = new System.Windows.Point(X, Y);
                 if (((RemotePointer)pointerContainer.Tag).IsActive)
                 {
                     Utilities.BrainstormingEventLogger.GetInstance(dropboxGeneralNoteDownloader.Storage).UploadLogString(Utilities.BrainstormingEventLogger.getLogStr_RemotePointerMoved(updatedPointer));
                 }
                 pointerContainer.Tag = updatedPointer;
                 sv_RemotePointerCanvas.UpdateLayout();
             }
         }
         catch (Exception ex)
         {
             Utilities.UtilitiesLib.LogError(ex);
         }
     }));
 }
示例#6
0
        static void Main()
        {
            try
            {
                Process process = ApplicationFinder.FromProcessName(ProcessName).First();

                if (process != null)
                {
                    Memory = new MemorySharp(process);

                    BaseAddress      = Memory[BaseAddress].Read <IntPtr>();
                    ItemDataPointer  = Memory[BaseAddress + ItemDataOffset, false];
                    CharacterPointer = Memory[BaseAddress + CharacterOffset, false];
                    ChallengePointer = Memory[BaseAddress + ChallengeOffset, false];
                    MiscPointer      = Memory[BaseAddress + MiscOffset, false];
                    ItemPointer      = Memory[BaseAddress + ItemOffset, false];
                    EquipPointer     = Memory[BaseAddress + EquipOffset, false];
                    ScoutPointer     = Memory[BaseAddress + ScoutOffset, false];

                    updateThread = new Thread(UpdateAddresses);
                    updateThread.Start();

                    for (int i = 0; i < MaxEquipItems; i++)
                    {
                        EquipItems[i] = new EquipItem();
                    }

                    Data.ParseItemData();
                    Data.ParseIDRanges();
                    Data.ParseParameters();
                    Data.ParseTraits();

                    // This is a stopgap fix to prevent some in-game CTDs and softlocks as reported by users in the tech forum
                    process.PriorityClass = ProcessPriorityClass.High;
                }
            }
            catch
            {
                MessageBox.Show($"Failed to attach to {GameName}!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Environment.Exit(-1);
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());

            updateThread.Abort();
        }
        public GameInstance(Process process)
        {
            Process = process;
            Memory  = new MemorySharp(process);

            // Initialize the base pointer, by getting it from the static offset.
            IntPtr baseStaticAddress = new IntPtr((int)Offsets.Base1);
            IntPtr basePtr           = (IntPtr)Memory.Read <int>(baseStaticAddress);

            BasePointer = Memory[basePtr, false];

            //DLLs.Injector.Inject(process, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DLLs", "SpeedRacer.dll"));
            //DLLs.Injector.Inject(process, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EasyHook32.dll"));
            Memory.Modules.Inject(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EasyHook32.dll"));
            //DLLs.Injector.Inject(process, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SpeedRacer.dll"));
            Module = Memory.Modules.Inject(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SpeedRacer.dll"));
            Module.FindFunction("HookFunctions").Execute();
            Thread.Sleep(1000);
        }
示例#8
0
        public void NewPointerAddedEvent(RemotePointer addedPointer, string assignedColorCode)
        {
            this.Dispatcher.Invoke(new Action(() =>
            {
                try
                {
                    ScatterViewItem pointerContainer = new ScatterViewItem();
                    pointerContainer.ApplyTemplate();
                    RemotePointerUI pointerUI = new RemotePointerUI();
                    pointerUI.PointerID       = addedPointer.Id;
                    pointerUI.setPointerColor(assignedColorCode);
                    pointerUI.Width         = pointerUI.Height = 50;
                    pointerContainer.Width  = pointerUI.Width;
                    pointerContainer.Height = pointerUI.Height;
                    //disable surrounding shadow
                    pointerContainer.Background             = null;
                    pointerContainer.BorderThickness        = new Thickness(0);
                    pointerContainer.ShowsActivationEffects = false;
                    //SurfaceShadowChrome ssc = pointerContainer.Template.FindName("shadow", pointerContainer) as SurfaceShadowChrome;
                    //ssc.Visibility = Visibility.Collapsed;
                    //add to the canvas and adjust location
                    pointerContainer.Content = pointerUI;
                    pointerContainer.Tag     = addedPointer;
                    sv_RemotePointerCanvas.Items.Add(pointerContainer);
                    int X = (int)(addedPointer.X * canvasesContainer.Width);
                    int Y = (int)(addedPointer.Y * canvasesContainer.Height);
                    pointerContainer.Center = new System.Windows.Point(X, Y);
                    sv_RemotePointerCanvas.UpdateLayout();

                    Utilities.BrainstormingEventLogger.GetInstance(dropboxGeneralNoteDownloader.Storage).UploadLogString(Utilities.BrainstormingEventLogger.getLogStr_RemotePointerAdded(addedPointer));
                }
                catch (Exception ex)
                {
                    Utilities.UtilitiesLib.LogError(ex);
                }
            }));
        }
示例#9
0
文件: Image.cs 项目: mgoral/bwapi
 public Image(RemotePointer basePtr, uint id)
 {
     this.ptr = basePtr;
     this.id = id;
 }
示例#10
0
 public Image(RemotePointer basePtr, uint id)
 {
     this.ptr = basePtr;
     this.id  = id;
 }
示例#11
0
 static void NullMonoSecurity(RemotePointer mono_security_set_mode)
 {
     Console.ForegroundColor = ConsoleColor.Cyan;
     Console.Write("Nulling mono security... ");
     mono_security_set_mode.Execute(CallingConventions.Cdecl, (int)MonoSecurityMode.MONO_SECURITY_MODE_NONE); // void (returns IntPtr.Zero as expected?)
     Console.ForegroundColor = ConsoleColor.Green;
     Console.WriteLine("success.");
     Console.ForegroundColor = ConsoleColor.White;
 }