MasterGH Опубликовано 22 августа, 2010 Поделиться Опубликовано 22 августа, 2010 Тема. Создание и внедрение dll при помощи Cheat Engine.Сейчас у меня есть время на то, чтобы открыть самые основы этого метода и обратить внимание на его перспективы. Сразу напишу о перспективах. Ну, что тут сказать, если использовать этот метод внедрения чит-кодов, то открывается возможность использовать всю мощь языка программирования на котором вы пишите dll-ку включая ассемблерные вставки. Я же очень советую готовиться психологически переходить именно на этот метод совместно с языком C++ и использовать именно его, а не автоассемблер из Cheat Engine. Я не смогу раскрыть всё, то что можно сделать, но основы я покажу.Скачиваем VisualStudio 2010, если вам удобно, то на русском языке. Создаём проект типа Win32, называем его например AppCheatsLib. Перед вами будет мастер проектов, с различными переходами. Отметьте что проект будет создан как dll и будет пустым. У вас создаться пустой проект. В правом верхнем углу выделяем проект AppCheatsLib.dll и кликаем правой кнопкой мышки чтобы вызвать меню. Выберите добавить-> новый элемент. Там выберите Создать класс. Файл описания назовите CheatsLib.h, а реализации описания CheatsLib.cpp. Уберите предкомпиляцию. У вас создастся два файла.Пока я хочу показать только такой простой пример. Возьмите какую-нибудь программу или игру. Найдите и запомните в ней адрес параметра, который нужно будет изменить один раз при помощи метода загрузки dll. Допустим этот адрес будет равен 0x0041d090.А теперь в двух файлах удалите сгенерированных код и напишем свой:// CheatsLib.hnamespace 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-ку поместить в его ресурсы. Ну а после таких нескольких трейнеров можно строить один общий трейнерМакс, про который я уже говорю чуть ли не каждый пост (самому надоело ). Дело времени и дело бодрого настроения реализовать это всё... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 1 апреля, 2011 Автор Поделиться Опубликовано 1 апреля, 2011 Мне часто пишут, что не могут создать проект .dll. Я создал пустой проект вы сможете скачать отсюдаdllEmptyProject.rar . Обратите внимание на опции компилятора и компоновщика в свойствах проектаПроект который я делал в первом посте я похоже удалил и создавать его заново мне лень. Если упорство есть, сами напишите.Дополнительная информация:1) Создание пустого проекта модуля (размер упакованной dll-ки 4 кб) - там вы узнаете как создать пустой проект с экспортируемыми функциями. Но там нет информации обработки события инициализации библиотеки. Её можно найти в пункте 2;2) Обработки событий связанных с библиотекой (1,2,3);3) Импортирование и экспортирование - о том как использовать библиотеки;4) Другая информация включая "Поведение библиотеки времени выполнения" - эта информация возможно пригодится. Ссылка на комментарий Поделиться на другие сайты Поделиться
VoLT Опубликовано 5 июля, 2011 Поделиться Опубликовано 5 июля, 2011 Вызов процедуры из DLL Объявление:DWORD dwLoadOffset = ((DWORD)GetModuleHandle (NULL)-0x400000);void (__cdecl *AddScore)(int) = (void (__cdecl *)(int))(0xDEADBEEF + dwLoadOffset);где 0xDEADBEEF адрес процедуры которую мы хотим вызвать в игреИспользование:AddScore(300);Тут важно одно - правильно определить какие параметры функции нужны и что она возвращает Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 5 июля, 2011 Автор Поделиться Опубликовано 5 июля, 2011 Здесь вызывается не 0xDEADBEEF ("то что мы хотели"), а "0xDEADBEEF + dwLoadOffset".А почему вычитается "0x400000" ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 5 июля, 2011 Поделиться Опубликовано 5 июля, 2011 Получение базового адреса процесса. Довольно сомнительный подход, ибо не всегда база экзешника процесса будет равна 0х400000. Ссылка на комментарий Поделиться на другие сайты Поделиться
VoLT Опубликовано 5 июля, 2011 Поделиться Опубликовано 5 июля, 2011 Есть Шеф, убрать не юзать сжечь и тп Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 18 мая, 2020 Поделиться Опубликовано 18 мая, 2020 В 23.08.2010 в 00:19, MasterGH сказал: Скачиваем VisualStudio 2010 Это оно? Тута Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 мая, 2020 Поделиться Опубликовано 19 мая, 2020 17 часов назад, Pitronic сказал: Это оно? Тута Качай лучше свежую версию Visual Studio Community 2019. Она бесплатная, можно скачать с официального сайта. Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 19 мая, 2020 Поделиться Опубликовано 19 мая, 2020 (изменено) 1 час назад, Xipho сказал: Качай лучше свежую версию Visual Studio Community 2019 Спасибо так и поступлю. Только блин какую? Там она не одна! Тута Изменено 19 мая, 2020 пользователем Pitronic дополнение Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 мая, 2020 Поделиться Опубликовано 19 мая, 2020 3 часа назад, Pitronic сказал: Только блин какую? Я ж выше написал - Community. В том переводе. что на сайте, это версия "Сообщество". Там еще кнопка большая фиолетовая "Скачать бесплатно". Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 19 мая, 2020 Поделиться Опубликовано 19 мая, 2020 1 минуту назад, Xipho сказал: ам еще кнопка большая фиолетовая " Там их 5 фиолетовых, больших, а если бы не сказали что сообщество, я бы не догнал ,я слаб в английском. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 мая, 2020 Поделиться Опубликовано 20 мая, 2020 11 часов назад, Pitronic сказал: Там их 5 фиолетовых, больших Но лишь на одной написано "скачать бесплатно" в строке про 2019 версию. Остальное все относится к другим версиям, о которых изначально речи не было. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения