Что нового?
Здравствуйте вы на портале B4G-AKK.RU

Присоединяйтесь к нам сейчас чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, отвечать в существующие темы, давать репутацию другим пользователям, получить свой собственный мессенджер, и так многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

  • Для того, что бы просматривать ссылки и темы в разделах, Вам необходимо зарегистрироваться.

    Регистрация Авторизация

  • Скупка аккаунтов Point Blank по самым высоким ценам - Писать Администратору (Контакты в Нижней части сайта)
  • Зачем качать бесплатные читы или моды (Получая за них баны на всегда) Когда есть приват читы которые дают обход и минимальную вероятность бана и защищают от бана на пожизненно! Заходи сюда

    Покупай и довольствуйся функциями и нагибай задоненых геймеров в игре! Лучшие приват читы Купи и разорви сервак Донатеров!

  • Участвуйте и получайте активации , следить за конкурсами тут Конкурсы Если конкурс активный значит конкурс в самом разгаре. Успей испытать удачу и получить приз
           
Реклама, выключите ADblock для просмотра. Цена 150 руб./неделя. Оплата автоматическая.
 

Пишем Трейнер Для Warface

!Fox

Фарт
Команда форума
Администратор
PREMIUM
Регистрация
8 Авг 2015
Сообщения
15
На форуме
26м
Создание тренера

1.Создать Проект -> С# -> WinForms -> Дали название и создали.
2.Перед нами форма. Жмём по имени проекта ПКМ -> Добавить -> Класс (или Shift + Alt + C) -> называем Memory.cs -> Нажали "Добавить".
Банально заменили всё содержимое файла классом (аналогом вамемори только без функций которыми у вас не хватит мозгов воспользоваться)
Код класса:
Код:
public class Memory
{
    public Memory(string pProcessName)
    {
        this.pName = pProcessName;
    }
    [DllImport("kernel32.dll")]
    private static extern bool VirtualProtectEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint dwSize, uint lpNumberOfBytesRead);
    [DllImport("kernel32.dll")]
    private static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, uint lpNumberOfBytesWritten);
    [DllImport("kernel32.dll")]
    private static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);
    uint PAGE_READWRITE = 4, PROCESS_ALL_ACCESS = 0x1F0FFF, NumFunc;
    public string pName { get; set; }
    private Process[] m_pProcess;
    private IntPtr pHandle;
    public bool GetProcess()
    {
        m_pProcess = Process.GetProcessesByName(pName);
        if (m_pProcess.Length != 0)
        {
            pHandle = OpenProcess(PROCESS_ALL_ACCESS, false, m_pProcess[0].Id);
            if (pHandle != IntPtr.Zero)
                return true;
            else
                return false;
        }
        return false;
    }

    public bool PatchMemory(IntPtr dAdress, byte[] pBytes)
    {
        if (pHandle == IntPtr.Zero)
            GetProcess();
        bool MemResult;
        try
        {
            uint flNewProtect;
            VirtualProtectEx(pHandle, dAdress, (UIntPtr)((ulong)((long)pBytes.Length)), PAGE_READWRITE, out flNewProtect);
            bool flag = WriteProcessMemory(pHandle, dAdress, pBytes, (uint)pBytes.Length, 0u);
            VirtualProtectEx(pHandle, dAdress, (UIntPtr)((ulong)((long)pBytes.Length)), flNewProtect, out flNewProtect);
            MemResult = flag;
        }
        catch (Exception Exclude)
        {
            Console.WriteLine("Error: PatchMemory " + Exclude.ToString());
            MemResult = false;
        }
        return MemResult;
    }
}
Зависимости :

Код:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
3. Как всё сделали, перешли обратно к форме, в констукторе объявляем указатель на наш класс:
Конструктор, это область кода, которая находиться под:

Код:
public partial class Form1 : Form
и над:
Код:
public Form1()
4.(если кто в танке)
Продолжим. Возвращаемся к форме, кидаем на нее таймер из панели элементов. Если панель элементов отсутствует на экране, ее можно вызвать сочетанием клавиш CTRL + W + X. Или обратить внимание на верхнюю часть программы и вызвать панель инструментов которую можно найти во вкладке "Вид".
Таймер стартуем при инициализации нашей программы:


Код:
timer1.Start();

На Таймер Пишем Следующее:


Код:
cMem = new Memory("Game");//инициализируем класс полностью
if(cMem.GetProcess())
{
//Если процесс игры запущен
//обход
timer1.Stop();
}
else
{
//иначе
}

Вот и все, теперь мы можем нормально патчить любые участки памяти.
Пример:
кинули мы чекбокс на форму, обозвали как то функцию(допустим антиотдача, это не принципиально)
В конструкторе заводим переменную: (адресс нашей антиотдачи)



Код:
int NoRecoil = 0x5FBE26;
На чекбокс пишем:

Код:
cMem.PatchMemory((IntPtr)NoRecoil, (checkBox1.Checked ? new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 } : new byte[] { 0xE8, 0xE5, 0x68, 0xB7, 0x00 }));
Как это работает? спросите вы) я вам расскажу:

Код:
cMem.PatchMemory((IntPtr)Адресс, (параметр bool (допустим checkBox1.Checked)? new byte[] {/*Байты включения*/} : new byte[] {/*Байты выключения*/}));

А вообще, можно по разному хукать, это я показал как самый простой пример.
Всем удачи :)
 
Автор темы Похожие темы Форум Ответы Дата
Bariga 4 Game C# 0

Похожие темы


Яндекс.Метрика Top.Mail.Ru Отзывы на pvpru.com/market
Помощь Пользователи

Вы не присоединились ни к одной комнате.

    Вы не присоединились ни к одной комнате.
    Сверху