-
Постов
31 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент gastraler
-
Патроны разные бывают , можешь даже лопату в руки взять, а ищешь все равно патроны. чтобы отсеивать по адресу, надо этот адрес сначала найти, а по значению и так должно быть видно
-
Перезагружай дальше, но загружай разные сохраненки. Отсеивай по значению, и при этом меняй в игре оружие если ты ищешь патроны. Попробуй отсеять значения на другом компьютер.
-
Ищи классы со словами Keyboard Hook или KeyboardHook, или просто Hook. Ввот например интересная статья == > тут, или тут
-
Мужик наверное через Promt пишет. Пиши лучше на Английском
-
Адрес указателя на ножницы: D3DDrv.dll+CB7F8 offset: 0x7EC, 0x3B4, 0x2B0, 0x78, 0x274 Подставляешь это и будут тебе ножницы Указатели удобно искать так: Сохраняешь поиск указателей, выходишь с игры, загружаешь разные сохраненнки и опять ищешь свое значение. Загружаешь сохраненный поиск и отсеиваешь его уже на новый адрес. Вот что получится:
-
Как подключиться к базовому адресу ==> Тут ты так не понятно выражаешься, что я даже решил скачать игру
-
Библиотека по C#
-
Я использовал KeyboardHook, так как все равно фокусировка на кнопки теряется, т.е. из окна игры не будет фокусировки на кнопки.
-
Не то, нужен метод Сontrol.Focus или Control.Select. Эх на работу вызывают
-
Вот чего я нашел: Pro.dot.NET.2.0.Windows.Forms.and.Custom.Controls.pdf
-
Как убрать зависимость элементов в окне от клавиши "Tab" , но чтобы при этом кнопки могли управляться горячими клавишами? private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F1) { this.F1(); button1.BackColor = System.Drawing.Color.Green; } } private void button2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F2) { this.F2(); button2.BackColor = System.Drawing.Color.Green; } }
-
Вот так получилось: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace MyButton { public partial class Form1 : Form { bool AddAmmo = false; public Form1() { InitializeComponent(); } //************************************************************** private void button1_MouseDown(object sender, MouseEventArgs e) { AddAmmo = false; button1.BackColor = System.Drawing.Color.Green; } private void button1_MouseUp(object sender, MouseEventArgs e) { AddAmmo = true; button1.BackColor = System.Drawing.Color.Goldenrod; } //************************************************************* } } this.button1.BackColor = System.Drawing.Color.Goldenrod; this.button1.Location = new System.Drawing.Point(84, 106); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 1; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = false; this.button1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button1_MouseDown); this.button1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.button1_MouseUp); Теперь кнопка без защелки, любого типа.
-
Надо чтобы работал как Flat a выгледел иначе, для Flat эти настройки в VC существуют, для остальных нет. За инфу спасибо, MouseEventArgs с этим можно что то сделать. Я видел люди пишут классы, но пока не попалось готовых (всяка хрень).
-
Вот я подставляю кнопку в твой код: using System.Drawing; using System.Windows.Forms; namespace BtnTest { public partial class Form1 : Form { public Color BtnClr; public bool IsGameAvailable; public bool AddAmmo; public Form1() { InitializeComponent(); } /// <summary> /// Вызывается тогда, когда на кнопке _нажата_ кнопка мыши /// </summary> /// <param name="sender">Объект, который послал событие (кнопка)</param> /// <param name="e">Аргументы, содержащие координаты курсора мыши и состояние кнопок</param> private void Button1MouseDown(object sender, MouseEventArgs e) { BtnClr = ((Button)sender).BackColor; //Сохраняем текущий цвет фона кнопки ((Button)sender).BackColor = Color.Red; //Красим кнопку в красный цвет } /// <summary> /// Вызывается тогда, когда на кнопке _отпущена_ кнопка мыши /// </summary> /// <param name="sender">Объект, который послал событие (кнопка)</param> /// <param name="e">Аргументы, содержащие координаты курсора мыши и состояние кнопок</param> private void Button1MouseUp(object sender, MouseEventArgs e) { ((Button)sender).BackColor = BtnClr; //Восстанавливаем изначальный цвет фона кнопки //if (IsGameAvailable) //Если игра найдена (код закомментирован) //{ if (AddAmmo) //Если опция активна { AddAmmo = false; //Деактивируем её button1.BackColor = System.Drawing.Color.Goldenrod; //Сообщаем об этом пользователю } else //Иначе, если опция не активна { AddAmmo = true; //Активируем её button1.BackColor = System.Drawing.Color.Green; //Сообщаем об этом пользователю } //} } private void button1_Click(object sender, System.EventArgs e) { if (IsGameAvailable) { if (AddAmmo) { AddAmmo = false; //button1.BackColor = System.Drawing.Color.Goldenrod; } else { AddAmmo = true; //button1.BackColor = System.Drawing.Color.Green; } } } } } this.button1.Location = new System.Drawing.Point(144, 103); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; this.button1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.Button1MouseUp); и получаю вот это: а надо вот это:
-
Нет, или я не так записал. private void button1_Click(object sender, System.EventArgs e) { if (UnlimitedHealth) { UnlimitedHealth = false; BtnClr = ((Button)sender).BackColor; ((Button)sender).BackColor = Color.Red; } else { UnlimitedHealth = true; ((Button)sender).BackColor = BtnClr; } } Также залипает.
-
Играюсь уже с утра. Надо чтобы нажал изменила цвет, отпустил, цвет вернулся на исходную. Кнопка без фиксации. Но чтобы не Flat.
-
Есть вот такая кнопка: private void button1_Click(object sender, EventArgs e) //Пополнить боезапас { if (IsGameAvailable) { if (AddAmmo) { AddAmmo = false; button1.BackColor = System.Drawing.Color.Goldenrod; } else { AddAmmo = true; button1.BackColor = System.Drawing.Color.Green; } } Но она залипает. Если сделать кнопку Flat, то ее можно настроить чтобы не залипала. Но Flat не красивая кнопка, не нравится она мне. Как сделать чтобы нормальная кнопка не залипала и меняла цвет?
-
Добавь в учебник статьи по созданию трейнера например в C#, Assembler. Cheat Engine конечно интересно, но там и так все интуитивно понятно. На сегодня все учебники что я видел на C#, там либо ворон и коров считают, или какой то бухгалтерский учет, что нормальному человеку абсолютно не надо. Изучать такие учебники одна тоска. Существующий подобно твоему учебник http://zalil.ru/29974306/31adb6d0.4e15bfc82/GHBook.chm сильно устарел. Желаю успехов
-
Не в преобразовании было дело, что то не с классом. С DLL тогоже автора все получилось. MemoryEditor.dll ==> http://forum.cheaten...5185623#5185623 Консольная версия, подставь свои значения using System; using System.Collections.Generic; using System.Linq; using System.Text; using MemoryEditor; using System.Diagnostics; using System.Runtime.InteropServices; using System.Globalization; using System.Threading; namespace MemoryEditTest { class Program { static void Main(string[] args) { Memory oMemory = new Memory(); Process[] myProcess = Process.GetProcessesByName("hl"); ProcessModule myProcessModule = null; IntPtr MemoryAddress = IntPtr.Zero; if (myProcess.Length > 0) { ProcessModuleCollection myProcessModuleCollection; try { myProcessModuleCollection = myProcess[0].Modules; } catch { return; } for (int i = 0; i < myProcessModuleCollection.Count; i++) { myProcessModule = myProcessModuleCollection[i]; if (myProcessModuleCollection[i].ModuleName == "hw.dll") break; } MemoryAddress = (myProcessModule.BaseAddress + 0x7bbd9c); int address = (int)MemoryAddress; if (oMemory.OpenProcess("hl")) { oMemory.Write(address, new int[] { 0x7c + 0x4 + 0x160 }, (float)50); } } } } }
-
Сегодня опять дома и продолжаю мучить свой трейнер. class Program { static void Main(string[] args) { Memory memory = new Memory(); // обычное действие при работе с классами Process[] myProcess; // myProcess = Process.GetProcessesByName("hl"); // memory.ReadProcess = myProcess[0]; // присвой процесс (ты уже знаешь как его найти) memory.Open(); // открыть процесс ProcessModule myProcessModule = null; // IntPtr MemoryAddress = IntPtr.Zero; // вводишь базовый адрес модуля if (myProcess.Length > 0) // { ProcessModuleCollection myProcessModuleCollection; try { myProcessModuleCollection = myProcess[0].Modules; } catch { return; } for (int i = 0; i < myProcessModuleCollection.Count; i++) { myProcessModule = myProcessModuleCollection[i]; if (myProcessModule.ModuleName.Contains("hw.dll")) { MemoryAddress = (myProcessModule.BaseAddress + 0x7BBD9C); break; } } } //byte[] bytesToWrite = new byte[]{0xff,0xff,0xff,0xff}; // записываемые байты можешь забить вручную или через конвертер из десятичного в шестнадцатеричную форму int[] Offset = new int[]{0x7C,0x578,0xAC}; // вводишь нужные оффсеты со своего скирншота int bytesWritten = 0; // просто инициализация int ammoToFill = 50; //Полный магазин byte[] bytesToWrite = BitConverter.GetBytes(ammoToFill); //Перезаписать значение memory.PointerWrite(MemoryAddress, bytesToWrite, Offset, out bytesWritten); } } Из консоли все работает, и даже патроны добавляет. Спасибо за науку работы с консолью!!! Как же привязаться к форме? Что то я опять туплю. Может кто подскажет ! Люди!!! Дайте кто нибудь исходник, с указателем на модуль. Пожалуйста!!! Может грубо но приляпал Андрюхе огромное спасибо!!! using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; using System.Globalization; using System.Threading; namespace Half_Life_Opposing_Force { public partial class Form1 : Form { #region Global variables Memory myMemory = new Memory(); Process[] myProcess; bool IsGameAvailable = false; bool UnlimitedAmmo = false; //string AmmoPointer = ""; int[] AmmoOffset = { 0x7C, 0x578, 0xAC }; int ammoToFill = 50; #endregion public Form1() { InitializeComponent(); } private void UnlimAmmoBTN_Click(object sender, EventArgs e) { if (IsGameAvailable) { if (UnlimitedAmmo) { UnlimitedAmmo = false; UnlimAmmoBTN.Text = "OFF"; } else { UnlimitedAmmo = true; UnlimAmmoBTN.Text = "ON"; } } } private void GameAvailabilityTMR_Tick(object sender, EventArgs e) { myProcess = Process.GetProcessesByName("hl"); if (myProcess.Length != 0) { IsGameAvailable = true; statusLBL.Text = "Вы в игре"; } else { IsGameAvailable = false; statusLBL.Text = "Игра не запущенна"; } } private void UpdateCheatsTMR_Tick(object sender, EventArgs e) { if (IsGameAvailable) { #region Unlimited ammo if (UnlimitedAmmo) { myMemory.ReadProcess = myProcess[0]; myMemory.Open(); ProcessModule myProcessModule = null; // IntPtr MemoryAddress = IntPtr.Zero; // вводишь базовый адрес модуля if (myProcess.Length > 0) // { ProcessModuleCollection myProcessModuleCollection; try { myProcessModuleCollection = myProcess[0].Modules; } catch { return; } for (int i = 0; i < myProcessModuleCollection.Count; i++) { myProcessModule = myProcessModuleCollection[i]; if (myProcessModule.ModuleName.Contains("hw.dll")) { MemoryAddress = (myProcessModule.BaseAddress + 0x7BBD9C); break; } } } //int pointerAddress = HexToDec(AmmoPointer); int[] pointerOffset = AmmoOffset; int bytesWriten; byte[] valueToWrite = BitConverter.GetBytes(ammoToFill); string writtenddress = myMemory.PointerWrite((IntPtr)MemoryAddress, valueToWrite, pointerOffset, out bytesWriten); myMemory.CloseHandle(); } #endregion } } //public static string HexToDec(int DEC) //{ // return DEC.ToString("X"); //} //public static int HexToDec(string Hex) //{ // return int.Parse(Hex, NumberStyles.HexNumber); //} } } Трейнер делался на основе этих уроков:http://www.punkarcade.net/videos/video/0osZuafJuB0/How-to-Make-a-TRAINER-C-TUTORIAL-1-6-HD.html
-
А если в трейнере есть вот такой класс: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; //USED TO CALL THE DLL IMPORTS using System.Globalization; using System.Diagnostics; using System.Windows.Forms; //DELETE ME namespace Half_Life_Opposing_Force { //Class wasnt done by me //FULL CREDITS TO //http://forum.cheatengine.org/viewtopic.php?t=530207 public class Memory { private Process m_ReadProcess = null; private IntPtr m_hProcess = IntPtr.Zero; public static int DllImageAddress(string Pname, string ModuleName) { System.Diagnostics.Process[] MyProcess = System.Diagnostics.Process.GetProcessesByName(Pname); System.Diagnostics.ProcessModuleCollection myProcessModuleCollection = MyProcess[0].Modules; for (int i = 0; i < myProcessModuleCollection.Count; i++) { if (myProcessModuleCollection[i].ModuleName.ToLower().StartsWith(ModuleName.ToLower())) { return (int)myProcessModuleCollection[i].BaseAddress; } } return -1; } public Process ReadProcess { get { return m_ReadProcess; } set { m_ReadProcess = value; } } public void Open() { ProcessAccessType access = ProcessAccessType.PROCESS_VM_READ | ProcessAccessType.PROCESS_VM_WRITE | ProcessAccessType.PROCESS_VM_OPERATION; m_hProcess = OpenProcess((uint)access, 1, (uint)m_ReadProcess.Id); } public void CloseHandle() { int iRetValue; iRetValue = CloseHandle(m_hProcess); if (iRetValue == 0) { throw new Exception("CloseHandle Failed"); } } public byte[] Read(IntPtr MemoryAddress, uint bytesToRead, out int bytesRead) { byte[] buffer = new byte[bytesToRead]; IntPtr ptrBytesRead; ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, out ptrBytesRead); bytesRead = ptrBytesRead.ToInt32(); return buffer; } public byte[] PointerRead(IntPtr MemoryAddress, uint bytesToRead, int[] Offset, out int bytesRead) { int iPointerCount = Offset.Length - 1; IntPtr ptrBytesRead; bytesRead = 0; byte[] buffer = new byte[4]; //DWORD to hold an Address int tempAddress = 0; if (iPointerCount == 0) { ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesRead); tempAddress = ToDec(Make(buffer)) + Offset[0]; //Final Address buffer = new byte[bytesToRead]; ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, bytesToRead, out ptrBytesRead); bytesRead = ptrBytesRead.ToInt32(); //MessageBox.Show(bytesRead.ToString()); return buffer; } for (int i = 0; i <= iPointerCount; i++) { if (i == iPointerCount) { ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesRead); tempAddress = ToDec(Make(buffer)) + Offset[i]; //Final Address buffer = new byte[bytesToRead]; ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, bytesToRead, out ptrBytesRead); bytesRead = ptrBytesRead.ToInt32(); return buffer; } else if (i == 0) { ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesRead); tempAddress = ToDec(Make(buffer)) + Offset[1]; } else { ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesRead); tempAddress = ToDec(Make(buffer)) + Offset[i]; } } return buffer; } public void Write(IntPtr MemoryAddress, byte[] bytesToWrite, out int bytesWritten) { IntPtr ptrBytesWritten; WriteProcessMemory(m_hProcess, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); } public string PointerWrite(IntPtr MemoryAddress, byte[] bytesToWrite, int[] Offset, out int bytesWritten) { int iPointerCount = Offset.Length - 1; IntPtr ptrBytesWritten; bytesWritten = 0; byte[] buffer = new byte[4]; //DWORD to hold an Address int tempAddress = 0; if (iPointerCount == 0) { ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesWritten); tempAddress = ToDec(Make(buffer)) + Offset[0]; //Final Address WriteProcessMemory(m_hProcess, (IntPtr)tempAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); return ToHex(tempAddress); } //only necessary for multiple OFFSETS for (int i = 0; i <= iPointerCount; i++) { if (i == iPointerCount) { ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesWritten); tempAddress = ToDec(Make(buffer)) + Offset[i]; //Final Address WriteProcessMemory(m_hProcess, (IntPtr)tempAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); return ToHex(tempAddress); } else if (i == 0) { ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesWritten); tempAddress = ToDec(Make(buffer)) + Offset[i]; } else { ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesWritten); tempAddress = ToDec(Make(buffer)) + Offset[i]; } } return ToHex(tempAddress); } public int PID() { return m_ReadProcess.Id; } public string BaseAddressH() { return ToHex(m_ReadProcess.MainModule.BaseAddress.ToInt32()); } public int BaseAddressD() { return m_ReadProcess.MainModule.BaseAddress.ToInt32(); } [Flags] public enum ProcessAccessType { PROCESS_TERMINATE = (0x0001), PROCESS_CREATE_THREAD = (0x0002), PROCESS_SET_SESSIONID = (0x0004), PROCESS_VM_OPERATION = (0x0008), PROCESS_VM_READ = (0x0010), PROCESS_VM_WRITE = (0x0020), PROCESS_DUP_HANDLE = (0x0040), PROCESS_CREATE_PROCESS = (0x0080), PROCESS_SET_QUOTA = (0x0100), PROCESS_SET_INFORMATION = (0x0200), PROCESS_QUERY_INFORMATION = (0x0400) } public static string Make(byte[] buffer) { string sTemp = ""; for (int i = 0; i < buffer.Length; i++) { if (Convert.ToInt16(buffer[i]) < 10) { sTemp = "0" + ToHex(buffer[i]) + sTemp; } else { sTemp = ToHex(buffer[i]) + sTemp; } } return sTemp; } public static string ToHex(int Decimal) { return Decimal.ToString("X"); //Convert Decimal to Hexadecimal } public static int ToDec(string Hex) { return int.Parse(Hex, NumberStyles.HexNumber); //Convert Hexadecimal to Decimal } [DllImport("kernel32.dll")] public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId); [DllImport("kernel32.dll")] public static extern Int32 CloseHandle(IntPtr hObject); [DllImport("kernel32.dll")] public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead); [DllImport("kernel32.dll")] public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten); } } Это можно как то использовать?