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); } } } }
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; }
static void UpdateAddresses() { while (true) { NeplunkerBaseAddressCurrent = Memory[NeplunkerBaseAddress].Read <IntPtr>(); NeplunkerPointer = Memory[NeplunkerBaseAddressCurrent + NeplunkerOffset, false]; Thread.Sleep(10); } }
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); }
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); } })); }
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); }
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); } })); }
public Image(RemotePointer basePtr, uint id) { this.ptr = basePtr; this.id = id; }
public Image(RemotePointer basePtr, uint id) { this.ptr = basePtr; this.id = id; }
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; }