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

Поиск Классов И Работа С Ними


pia3333

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

Есть игра Postal 2

Хочу научиться находить класс с позицией игрока, считывать его и записывать в него(предпочтительно на C++)

Какие гайды мне читать, что бы найти класс с позицией? И как потом выйти на сами данные из класса?

Ведь я же найду этот класс в статической части кода.... Если возможно без использования олли(ну через дизасму или CE).

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

Зависит от твоих навыков:

1. Поиск неизвестного значения.

2. Поиск указателя.

3. Нахождение базового адреса структуры, например, через оружие.

4. Подбор полей этой структуры.

5. Создание аналогичной структуры на С++, чтение\запись из\в память.

Если там действительно класс, а не структура, то будет чуток сложнее в пунктах 2-3-4. Всё, в принципе, делается при помощи Cheat Engine.

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

Ну в прицепе найти класс/структуру не сложно с позицией.

Вот только как найти динамические данные в этом классе/структуре.

Есть примеры работы с классами?

Есть класс:

class GameWorld//расположен он например по адресу 0x41234

{

public:

D3DVECTOR SetPosition;

};

Как мне считать что-то из SetPosition?

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

Есть игра 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); // начало структуры может соответствовать первым данным в нём. Но это не факт может быть и указатель на таблицу виртуальных методов(наследование виртуальных метдов в С++) или таблицу виртуальных классов(множественное наследование классов). Может быть и другая информация...

Данные о классе подбираются или определяются опытным путем через сканер памяти, отладчик (работа инструкций с адресами определённого размера).

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

Как подключиться к базовому адресу ==> Тут

ты так не понятно выражаешься, что я даже решил скачать игру ^_^

Это я для примера сказал =) Но если подскажите как сделать там точно, то буду благодарен.

(GameWorld)(DWORD* 0x41234);

Вот это не ясно. Как можно класс преобразовать в адрес? Студия ругается жестоко.... void* тоже не срабатывает...

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

Да, наверно я ошибся. Может быть так

GameWorld gameWorld = (GameWorld*)0x0041d090;

Я постоянно путаю эти привидения.

Да, и этот код нужно писать в dll-ке ;) (на всякий случай напоминаю об этом).

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

Адрес указателя на ножницы: D3DDrv.dll+CB7F8

offset: 0x7EC, 0x3B4, 0x2B0, 0x78, 0x274

Подставляешь это и будут тебе ножницы

Указатели удобно искать так:

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

Загружаешь сохраненный поиск и отсеиваешь его уже на новый адрес.

Вот что получится:

8e73410d4db0b3f141db269a6a84cafc.jpg

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

gastraler

Andrey

Спасибо вам за помощь! Очень помогли!

Остался ещё вопрос.... Как найти начало класса в коде? Ну чтобы заменить 0x41234, на верное значение.

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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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