pia3333 Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Есть игра Postal 2Хочу научиться находить класс с позицией игрока, считывать его и записывать в него(предпочтительно на C++)Какие гайды мне читать, что бы найти класс с позицией? И как потом выйти на сами данные из класса?Ведь я же найду этот класс в статической части кода.... Если возможно без использования олли(ну через дизасму или CE). Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Зависит от твоих навыков:1. Поиск неизвестного значения.2. Поиск указателя.3. Нахождение базового адреса структуры, например, через оружие.4. Подбор полей этой структуры.5. Создание аналогичной структуры на С++, чтение\запись из\в память.Если там действительно класс, а не структура, то будет чуток сложнее в пунктах 2-3-4. Всё, в принципе, делается при помощи Cheat Engine. Ссылка на комментарий Поделиться на другие сайты Поделиться
pia3333 Опубликовано 31 мая, 2012 Автор Поделиться Опубликовано 31 мая, 2012 Ну в прицепе найти класс/структуру не сложно с позицией.Вот только как найти динамические данные в этом классе/структуре. Есть примеры работы с классами?Есть класс:class GameWorld//расположен он например по адресу 0x41234{public:D3DVECTOR SetPosition;};Как мне считать что-то из SetPosition? Ссылка на комментарий Поделиться на другие сайты Поделиться
gastraler Опубликовано 31 мая, 2012 Поделиться Опубликовано 31 мая, 2012 Как подключиться к базовому адресу ==> Тутты так не понятно выражаешься, что я даже решил скачать игру Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 31 мая, 2012 Поделиться Опубликовано 31 мая, 2012 Есть игра Postal 2Хочу научиться находить класс с позицией игрока, считывать его и записывать в него(предпочтительно на C++)Какие гайды мне читать, что бы найти класс с позицией? И как потом выйти на сами данные из класса?Ведь я же найду этот класс в статической части кода.... Если возможно без использования олли(ну через дизасму или CE).1) "Класс" это описание, которое можно найти только в исходниках С++. Класс нельзя найти в памяти процесса игры, а можно найти только реализацию класса в виде структуры данных.2) Считывать и записывать в класс нельзя. Это неправильное выражение.3) Гайд о том, как найти класс не найдёшь, т.к. найти класс нельзя. см.пунтк 1. Можешь найти адрес позиции через сканер памяти. Поставить бряк и попытаться найти начало структуры (реализации класса);4) "Ведь я же найду этот класс в статической части кода.... Если возможно без использования олли(ну через дизасму или CE)." - класс не найдёшь.Ну в прицепе найти класс/структуру не сложно с позицией.Вот только как найти динамические данные в этом классе/структуре. Есть примеры работы с классами?Есть класс:class GameWorld//расположен он например по адресу 0x41234{public:D3DVECTOR SetPosition;};Как мне считать что-то из SetPosition?Я так понимаю речь идёт о составлении описания игрового класса на С++. Если да, то описание класса подбирается только опытным путём. В машинном коде готового описания класса нет.>>Вот только как найти динамические данные в этом классе/структуре. Сканером памяти>>Как мне считать что-то из SetPosition?Если считывать данные методом привидения на С++, то приводишь твой класс составленный по наитию к адресу 0x41234.Как-то так:GameWorld gameWorld = (GameWorld)(DWORD* 0x41234);gameWorld.position = D3DVECTOR(0.0f, 0.0f, 0.0f); // начало структуры может соответствовать первым данным в нём. Но это не факт может быть и указатель на таблицу виртуальных методов(наследование виртуальных метдов в С++) или таблицу виртуальных классов(множественное наследование классов). Может быть и другая информация...Данные о классе подбираются или определяются опытным путем через сканер памяти, отладчик (работа инструкций с адресами определённого размера). Ссылка на комментарий Поделиться на другие сайты Поделиться
pia3333 Опубликовано 31 мая, 2012 Автор Поделиться Опубликовано 31 мая, 2012 Как подключиться к базовому адресу ==> Тутты так не понятно выражаешься, что я даже решил скачать игру Это я для примера сказал =) Но если подскажите как сделать там точно, то буду благодарен.(GameWorld)(DWORD* 0x41234);Вот это не ясно. Как можно класс преобразовать в адрес? Студия ругается жестоко.... void* тоже не срабатывает... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 31 мая, 2012 Поделиться Опубликовано 31 мая, 2012 Да, наверно я ошибся. Может быть такGameWorld gameWorld = (GameWorld*)0x0041d090;Я постоянно путаю эти привидения.Да, и этот код нужно писать в dll-ке (на всякий случай напоминаю об этом). Ссылка на комментарий Поделиться на другие сайты Поделиться
gastraler Опубликовано 31 мая, 2012 Поделиться Опубликовано 31 мая, 2012 Адрес указателя на ножницы: D3DDrv.dll+CB7F8offset: 0x7EC, 0x3B4, 0x2B0, 0x78, 0x274Подставляешь это и будут тебе ножницыУказатели удобно искать так:Сохраняешь поиск указателей, выходишь с игры, загружаешь разные сохраненнки и опять ищешь свое значение.Загружаешь сохраненный поиск и отсеиваешь его уже на новый адрес.Вот что получится: Ссылка на комментарий Поделиться на другие сайты Поделиться
pia3333 Опубликовано 1 июня, 2012 Автор Поделиться Опубликовано 1 июня, 2012 gastraler Andrey Спасибо вам за помощь! Очень помогли!Остался ещё вопрос.... Как найти начало класса в коде? Ну чтобы заменить 0x41234, на верное значение. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 1 июня, 2012 Поделиться Опубликовано 1 июня, 2012 Я уже писал как - пост 5, пункт 3. Ссылка на комментарий Поделиться на другие сайты Поделиться
pia3333 Опубликовано 1 июня, 2012 Автор Поделиться Опубликовано 1 июня, 2012 Всё понял. Тему офф. Ссылка на комментарий Поделиться на другие сайты Поделиться
gastraler Опубликовано 2 июня, 2012 Поделиться Опубликовано 2 июня, 2012 Мужик наверное через Promt пишет.Пиши лучше на Английском Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения