Перейти к содержанию

gastraler

Пользователи
  • Постов

    31
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент gastraler

  1. Патроны разные бывают , можешь даже лопату в руки взять, а ищешь все равно патроны. чтобы отсеивать по адресу, надо этот адрес сначала найти, а по значению и так должно быть видно
  2. Перезагружай дальше, но загружай разные сохраненки. Отсеивай по значению, и при этом меняй в игре оружие если ты ищешь патроны. Попробуй отсеять значения на другом компьютер.
  3. Ищи классы со словами Keyboard Hook или KeyboardHook, или просто Hook. Ввот например интересная статья == > тут, или тут
  4. Мужик наверное через Promt пишет. Пиши лучше на Английском
  5. Адрес указателя на ножницы: D3DDrv.dll+CB7F8 offset: 0x7EC, 0x3B4, 0x2B0, 0x78, 0x274 Подставляешь это и будут тебе ножницы Указатели удобно искать так: Сохраняешь поиск указателей, выходишь с игры, загружаешь разные сохраненнки и опять ищешь свое значение. Загружаешь сохраненный поиск и отсеиваешь его уже на новый адрес. Вот что получится:
  6. Как подключиться к базовому адресу ==> Тут ты так не понятно выражаешься, что я даже решил скачать игру
  7. Я использовал KeyboardHook, так как все равно фокусировка на кнопки теряется, т.е. из окна игры не будет фокусировки на кнопки.
  8. Не то, нужен метод Сontrol.Focus или Control.Select. Эх на работу вызывают
  9. Вот чего я нашел: Pro.dot.NET.2.0.Windows.Forms.and.Custom.Controls.pdf
  10. Как убрать зависимость элементов в окне от клавиши "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; } }
  11. Вот так получилось: 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); Теперь кнопка без защелки, любого типа.
  12. Надо чтобы работал как Flat a выгледел иначе, для Flat эти настройки в VC существуют, для остальных нет. За инфу спасибо, MouseEventArgs с этим можно что то сделать. Я видел люди пишут классы, но пока не попалось готовых (всяка хрень).
  13. Вот я подставляю кнопку в твой код: 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); и получаю вот это: а надо вот это:
  14. Нет, или я не так записал. 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; } } Также залипает.
  15. Играюсь уже с утра. Надо чтобы нажал изменила цвет, отпустил, цвет вернулся на исходную. Кнопка без фиксации. Но чтобы не Flat.
  16. Есть вот такая кнопка: 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 не красивая кнопка, не нравится она мне. Как сделать чтобы нормальная кнопка не залипала и меняла цвет?
  17. Добавь в учебник статьи по созданию трейнера например в C#, Assembler. Cheat Engine конечно интересно, но там и так все интуитивно понятно. На сегодня все учебники что я видел на C#, там либо ворон и коров считают, или какой то бухгалтерский учет, что нормальному человеку абсолютно не надо. Изучать такие учебники одна тоска. Существующий подобно твоему учебник http://zalil.ru/29974306/31adb6d0.4e15bfc82/GHBook.chm сильно устарел. Желаю успехов
  18. На самом деле класс в порядке, просто я в последний раз случайно вместо offset = { 0x7c, 0x4, 0x160 } записал offset = { 0x7c + 0x4 + 0x160 } :-D :-D и float с плюсами вписался без вопросов :-P
  19. Не в преобразовании было дело, что то не с классом. С 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); } } } } }
  20. Что то вроде этого? : BitConverter.ToSingle(myMemory.PointerWrite((IntPtr)MemoryAddress, valueToWrite, pointerOffset, out bytesWriten), 0);
  21. ZOCKIR Не работает, я с этого и начал. По идее если меняется один параметр, то меняется все. Может и меняется, но результат не записывается. Как отследить, пока не понял в чем проблема.
  22. Такой вот еще вопрос! Если значение float как все это: string writtenddress = myMemory.PointerWrite((IntPtr)MemoryAddress, valueToWrite, pointerOffset, out bytesWriten); преобразовать во float ??? Адрес менял на float, значение тоже менял и все равно не записывается (((
  23. Сегодня опять дома и продолжаю мучить свой трейнер. 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
  24. А если в трейнере есть вот такой класс: 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); } } Это можно как то использовать?
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.