MasterGH Опубликовано 14 января, 2010 Поделиться Опубликовано 14 января, 2010 Я знаю, что это извращение, но есть игры написанные на .Net такие как Eufloria.Соответственно для игр на .Net должны быть .Net трейнеры, в том случае если нужно сделать трейнер платформанезависимым.Вот пример компиляции Окна приветствия без среды разработки на C- подобном языке.using System;using System.Windows.Forms;class HelloMessage{ public static void Main() { MessageBox.Show("Hello..."); }}Создать bat - ник и запуститьC:WINDOWSMicrosoft.NETFrameworkv3.5csc.exe /r:System.Windows.Forms.dll HelloMsg.csРазмер exe файла 3,50 КБ.Будет работать на всех ОС-мах поддерживающих .NET. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 3 августа, 2010 Автор Поделиться Опубликовано 3 августа, 2010 Простой трейнер на C# (10 кб) для тестого приложения Test.exeОсновная моменты следующие.Мы просто по таймеру пишем значение в какой-то адрес. Примитивное действие правда?-Создаём объект доступа для процесса (на самом деле он просто запоминает имя процесса):AccessProcess_x86 accessProcess = new AccessProcess_x86("Test");- Используем метод записи значения 9999 в адрес 0x0045B5A4 размером 4 байта accessProcess.ProcessWriteMem(0x0045B5A4, 4, 9999)- Дальше создаём таймер, условие работы таймера, условие работы чекбоксов...1. Создайте AccessProcess_x86.cs и добавьте код:using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;using System.Runtime.InteropServices;using System.Windows.Forms;namespace AplTrainer{/// <summary>/// Класс работы с процессом ОС/// </summary> class AccessProcess_x86 { private string processName; public AccessProcess_x86(string processName) { this.processName = processName; } /// <summary> /// Права доступа /// </summary> [Flags] //AccessRights public enum ProcessAccessRights { PROCESS_VM_READ = (0x0010), PROCESS_VM_WRITE = (0x0020), PROCESS_VM_OPERATION = (0x0008), PROCESS_ALL_ACCESS = (0x001F0FFF) } [DllImport("kernel32.dll")] //OpenProcess function public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheiritHandle, UInt32 dwProcessId); [DllImport("kernel32.dll")] //CloseHandle function public static extern Int32 CloseHandle(IntPtr hObject); [DllImport("kernel32.dll")] //ReadProcessMemory function public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, UInt32 nSize, ref UInt32 lpNumberOfBytesRead); [DllImport("kernel32.dll")] //WriteProcessMemory function public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In] byte[] lpBuffer, UInt32 nSize, ref UInt32 lpNumberOfBytesRead); [DllImport("kernel32.dll")] //GetLastError function public static extern UInt32 GetLastError(); [DllImport("kernel32.dll")] //SetLastError function public static extern void SetLastError(UInt32 dwErrorCode); /// <summary> /// Запись значения по адресу /// </summary> /// <param name="addres">адрес</param> /// <param name="SizeData">размер записываемого значения</param> /// <param name="value">записываемое значение</param> public bool ProcessWriteMem(UInt32 addres, byte SizeData, UInt32 value) { Process[] MyProcess = MyProcess = Process.GetProcessesByName(processName); if (MyProcess.Length == 0) return false; IntPtr hprocess = OpenProcess((uint)ProcessAccessRights.PROCESS_ALL_ACCESS, 1, (uint)MyProcess[0].Id); if (hprocess.ToInt32() == 0) return false; byte[] buffer = BitConverter.GetBytes(value); uint num = 0; Int32 writeresult = WriteProcessMemory(hprocess, (IntPtr)addres, buffer, SizeData, ref num); if (writeresult == 0) { UInt32 lastError = GetLastError(); MessageBox.Show(lastError.ToString()); CloseHandle(hprocess); return false; } CloseHandle(hprocess); return true; } }}using System;2. На форму бросьте "таймер" и "список чекбоксов". Введите в первое поле списка чекбоксов надпись как на скриншоте. Сформируйте автоматически обработчики событий для списка чек-боксов и таймера. Эти события увидите в коде ниже.3. В коде основной формы (там же и обработчики) напишите:using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace AplTrainer{ public partial class frmTrainer : Form { AccessProcess_x86 accessProcess = new AccessProcess_x86("Test"); public frmTrainer() { InitializeComponent(); } private void CheatListBox_ItemCheck(object sender, ItemCheckEventArgs e) { if (!FreezeTimer.Enabled) FreezeTimer.Start(); } private void FreezeTimer_Tick(object sender, EventArgs e) { bool mayworktimer=true; foreach (int indexChecked in CheatListBox.CheckedIndices) { switch (indexChecked) { case 0: { if (!accessProcess.ProcessWriteMem(0x0045B5A4, 4, 9999)) mayworktimer = false; } break; } if (!mayworktimer) FreezeTimer.Stop(); } } }}using System;Если закрыть глаза на многие вещи .NET, которые идут вразрез с тематикой создания чит-кодов и производительности, то выглядит НЕ плохо.Также этот код можно усовершенствовать добавив поддержку записи/чтения по адресам многоуровневых указателей, что сделать не сложно и многое другое. Жаль, что нет возможности ассемблерных вставок, но ухитриться можно. Ссылка на комментарий Поделиться на другие сайты Поделиться
live_4_ever Опубликовано 13 февраля, 2011 Поделиться Опубликовано 13 февраля, 2011 Исходник на C#Игра: Zombie Driver (2010) Трейнер для версии: 1.0 Опции: +8 Автор: The Hacker Within Автор умудрился и лицензионное соглашение замутить Скачать - Zombie Driver +8 Trainer.zip Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 13 февраля, 2011 Автор Поделиться Опубликовано 13 февраля, 2011 live_4_ever, спасибо за исходник. Memory.cs содержит всё что может пригодиться для начальных экспериментов: подключение к процессу, чтения и запись разных данных.Например, так будет запись байт включающих чит здоровья: public partial class frmMain : Form { private Memory _memory; private int _unlimitedHealth = 0x4B8F14; private int _unlimitedRescueHealth = 0x467EEB;//...private void cbxHealth_CheckedChanged(object sender, EventArgs e) { if (cbxHealth.Checked) _memory.WriteBuffer(_unlimitedHealth, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 }); else _memory.WriteBuffer(_unlimitedHealth, new byte[] { 0xF3, 0x0F, 0x11, 0x48, 0x34 }); }}Мои комментарии для тех кому интересно:У него есть достоинства и недостатки.Достоинства:1) Класс Memory.cs имеет неплохой описанный стартовый функционал для экспериментов.Недостатки:1) Постоянно лицезреть в исходниках непонятные байты без ассемблерного скриптинга.2) Двиг трейнера построен так, что жёстко привязывается к определённой версии игры и автор собирается для каждой версии игры делать трейнер.3) Исходники требуют значительных доработок для совершенства близкого к идеалу. Пока самое близкое к идеалу это Lua-скриптинг в Cheat Engine.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Laziz Опубликовано 13 мая, 2015 Поделиться Опубликовано 13 мая, 2015 (изменено) Пример инъекции .NET library(dll) в чужой процесс. ну... .NET не совсем без надежень в взломе игр.Вот пример инеъкции в "CSGO", плюс, нахождения структуры игроков, количество игроков в игре на примере видео урока В бинарном архиве есть ехе файл(InjectorDotNetDLL.exe) и длл файл(ExperementDll.dll). Если у Вас есть эта игра можете поэксперементировать.DotNETinjectionBinary.7z В проекте тоже самое в виде проектаDotNETinjectionProject.7zИнжектору есть одна требование, длл файл должен находеться там где ехе файл, иначе не инжектирует. на рисунке инжектированный длл выводить консолный окно для показа всяких сообшений. Изменено 13 мая, 2015 пользователем Laziz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 15 мая, 2015 Поделиться Опубликовано 15 мая, 2015 Можете скинуть мне пару уроков по созданию ВХ на c# ? ( Если возможно ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 15 мая, 2015 Поделиться Опубликовано 15 мая, 2015 Соответственно для игр на .Net должны быть .Net трейнеры, в том случае если нужно сделать трейнер платформанезависимым. А что это за платформонезасимость такая, если в трейнер импортируются функции из винапи?Или я что-то упустил? Если да, то где можно взглянуть на реализацию под Linux или Mac?Насколько я знаю .NET относительно недавно стал open source, но конкретной реализации я пока не видел. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 16 мая, 2015 Автор Поделиться Опубликовано 16 мая, 2015 если в трейнер импортируются функции из винапи 1. Скорее всего "платформозависимый трейнер", т.е. я имел ввиду трейнер зависимый от платформы .net или виртуальных машин на основе .net платформы (например Mono) 2. В трейнере можно вызывать не только функции винапи, а других апи ОС-м 3. Если игра написана на .net, то используя .net функции можно найти объекты, типы, функции и поля и менять их удобным образом, а не работать с функциями ОС-мы. 4. Если игра написана, используя технологию виртуальной машины будь, то Mono (или Java или другие), то вызывая функции Mono можно искать и менять поля экземпляров классов без импорта функции определенной ОС-ы. Или я что-то упустил? Если да, то где можно взглянуть на реализацию под Linux или Mac? В терии можешь проверить сам. Устанавливаешь две операционных системы (Линукс и Мак). Устанавливаешь игровой движок Unity3d. Собираешь на нем две игры под две ОС-и. Проверяешь, что обе игры работают с Mono. Если да, то ищешь способ как вызывать функции Mono, а не функции ОС. Ссылка на комментарий Поделиться на другие сайты Поделиться
Laziz Опубликовано 16 мая, 2015 Поделиться Опубликовано 16 мая, 2015 3. Если игра написана на .net, то используя .net функции можно найти объекты, типы, функции и поля и менять их удобным образом, а не работать с функциями ОС-мы.У меня один раз было интересная случие. Я внедрил дллку написанное .NET в игру (не подозревая что игра тоже написана на .NET) и отлаживал с помощю VS "присоединиться к процессу" и на удевления мог видет все методы, классы и поля игры. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Loner Опубликовано 5 января, 2019 Поделиться Опубликовано 5 января, 2019 (изменено) Всем привет...Давно меня тут не было. То в армию забрали.. то работа. В свободное время написал движок трейнера. Пока что функций там мало. Чтение да запись различных данных в память, плюс работа с многоуровневыми указателями, хук на клавиатуру, автоопределение процесса игры (неважно в каком порядке запускать игру и трейнер). Исходный код пока выкидывать не буду..Так как я там скоро голову сам сломаю. Вот результат моего творения. Вот ссылка на трейнер. Как загрузить на форум так и не понял..Или может у меня прав нет. http://rgho.st/7YTnvR9pP Прошу проверить работоспособность. (Запуск,отображение элементов, проигрывание MOD). У кого есть игра могут и там проверить (функционал рабочий) Изменено 5 января, 2019 пользователем Loner Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения