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

Создание и внедрение dll при помощи Cheat Engine


MasterGH

Рекомендуемые сообщения

Тема. Создание и внедрение dll при помощи Cheat Engine.

Сейчас у меня есть время на то, чтобы открыть самые основы этого метода и обратить внимание на его перспективы. Сразу напишу о перспективах. Ну, что тут сказать, если использовать этот метод внедрения чит-кодов, то открывается возможность использовать всю мощь языка программирования на котором вы пишите dll-ку включая ассемблерные вставки. Я же очень советую готовиться психологически переходить именно на этот метод совместно с языком C++ и использовать именно его, а не автоассемблер из Cheat Engine. Я не смогу раскрыть всё, то что можно сделать, но основы я покажу.

Скачиваем VisualStudio 2010, если вам удобно, то на русском языке. Создаём проект типа Win32, называем его например AppCheatsLib. Перед вами будет мастер проектов, с различными переходами. Отметьте что проект будет создан как dll и будет пустым. У вас создаться пустой проект.

В правом верхнем углу выделяем проект AppCheatsLib.dll и кликаем правой кнопкой мышки чтобы вызвать меню. Выберите добавить-> новый элемент. Там выберите Создать класс. Файл описания назовите CheatsLib.h, а реализации описания CheatsLib.cpp. Уберите предкомпиляцию. У вас создастся два файла.

Пока я хочу показать только такой простой пример. Возьмите какую-нибудь программу или игру. Найдите и запомните в ней адрес параметра, который нужно будет изменить один раз при помощи метода загрузки dll. Допустим этот адрес будет равен 0x0041d090.

А теперь в двух файлах удалите сгенерированных код и напишем свой:

// CheatsLib.h

namespace CheatsLib
{
class Cheats
{
public:
// Write value 1000
static __declspec(dllexport) void Cheat_WriteValue_10000(); // запомните эту экспортируемую функцию

};
}


// CheatsLib.cpp
#include "CheatsLib.h"
#include <windows.h>

namespace CheatsLib
{

void Cheats::Cheat_WriteValue_10000()
{
*(DWORD *)0x0041d090 = 10000; // поставьте свой адрес и своё значение
}

}

После этого найдите выпадающий список вверху с надписью Debug и смените на Realise и теперь собираем проект горячей клавишей F6. Заходим в директорию с проектом ищем папку Realise и в ней наша супер библиотека AppCheatsLib.dll.

ЗапускаемCE. Аттачим CE к процессу вашей игры/программы адрес которой вы нашли. В CE находим функцию внедрения dll из меню и вызываем её. Указываем путь к нашей AppCheatsLib.dll и жмём Ок. Сразу будет сообщение о том, не хотим ли мы запустить какую-то функцию из dll. СОГЛАШАЕМСЯ. И перед нами появится список в котором вы сможете узнать функцию

Cheats::Cheat_WriteValue_10000()

Выбираем её и жмём ОК. После этого значение в игре/программе должно измениться. На этом всё.

Также мы могли бы использовать ассемблерные вставки и много всего-того что можно придумать. НО. Это всё дело довольно сырое. Здесь нет считывания горячих клавиш, нет инъекции кода (мы не затирали инструкции), нет сканера сигнатур, нет контроля активации и деактивации и многого другого. Как будет сделано это много другое, то с успехом можно писать загрузчик dll-ки и этот загрузчик можно будет делать как трейнер, а dll-ку поместить в его ресурсы. Ну а после таких нескольких трейнеров можно строить один общий трейнерМакс, про который я уже говорю чуть ли не каждый пост (самому надоело :) ). Дело времени и дело бодрого настроения реализовать это всё...

Ссылка на комментарий
Поделиться на другие сайты

  • 7 месяцев спустя...

Мне часто пишут, что не могут создать проект .dll. Я создал пустой проект вы сможете скачать отсюда

dllEmptyProject.rar .

Обратите внимание на опции компилятора и компоновщика в свойствах проекта

Проект который я делал в первом посте я похоже удалил и создавать его заново мне лень. Если упорство есть, сами напишите.

Дополнительная информация:

1) Создание пустого проекта модуля (размер упакованной dll-ки 4 кб) -  там вы узнаете как создать пустой проект с экспортируемыми функциями. Но там нет информации обработки события инициализации библиотеки. Её можно найти в пункте 2;

2) Обработки событий связанных с библиотекой (1,2,3);

3) Импортирование и экспортирование - о том как использовать библиотеки;

4) Другая информация включая "Поведение библиотеки времени выполнения" - эта информация возможно пригодится. 

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

Вызов процедуры из DLL

Объявление:

DWORD dwLoadOffset = ((DWORD)GetModuleHandle (NULL)-0x400000);
void (__cdecl *AddScore)(int) = (void (__cdecl *)(int))(0xDEADBEEF + dwLoadOffset);

где 0xDEADBEEF адрес процедуры которую мы хотим вызвать в игре

Использование:

AddScore(300);

Тут важно одно - правильно определить какие параметры функции нужны и что она возвращает

Ссылка на комментарий
Поделиться на другие сайты

  • 8 лет спустя...
1 час назад, Xipho сказал:

Качай лучше свежую версию Visual Studio Community 2019

Спасибо так и поступлю. Только блин какую? Там она не одна! Тута

Изменено пользователем Pitronic
дополнение
Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Pitronic сказал:

Только блин какую?

Я ж выше написал - Community. В том переводе. что на сайте, это версия "Сообщество". Там еще кнопка большая фиолетовая "Скачать бесплатно".

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Xipho сказал:

ам еще кнопка большая фиолетовая "

Там их 5 фиолетовых, больших, а если бы не сказали что сообщество, я бы не догнал ,я слаб в английском.

Ссылка на комментарий
Поделиться на другие сайты

11 часов назад, Pitronic сказал:

Там их 5 фиолетовых, больших

Но лишь на одной написано "скачать бесплатно" в строке про 2019 версию. Остальное все относится к другим версиям, о которых изначально речи не было.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

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

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