Alex Опубликовано 17 ноября, 2021 Поделиться Опубликовано 17 ноября, 2021 Всем привет ! Наткнулся на ваш канал на Ютубе, 2 дня сидел смотрел ролики. Зацепило ? Вчера был мой первый опыт взлома игры. Жертвой стала "Plants Vs Zombies". Простенькая, легко ломается, ... . Благодаря отложенной в моей голове информации после непрерывного просмотра всех видеоуроков, мне без труда удалось запилить несколько скриптов - на кучу солнышек, баксов и на моментальное восстановление растений после покупки. Но, скрипты - скриптами, это всё легко даётся. А вот с указателями у меня какая-то засада. Никак не могу их оседлать в Cheat Engine. Ну ни в какую они мне не поддаются. Так вот. В процессе экспериментов и освоения супер-пупер проги Cheat Engine, возникла у меня задача найти изменяемый указатель на, скажем простыми словами, константные структуры. Для примера - есть некий герой, у него есть рука. Рука - это указатель. Структура, на которую он указывает - предмет, который держит эта рука. Так вот, задача заключается в том, чтобы найти эту самую "руку", т.б. указатель на предметы, которые я могу в процессе отсеивания менять в руке. Соответственно, меняя в руке предметы, мы меняем само значение указателя. А вот как найти этот самый указатель - задача. Может кто подскажет, в каком направлении хоть двигаться ? Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 17 ноября, 2021 Поделиться Опубликовано 17 ноября, 2021 Не совсем понял. Есть рука(структура). Как я понял. Задача найти цепочку???? Которая из структуры игрока приведёт к оружию в руке??? Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 18 ноября, 2021 Автор Поделиться Опубликовано 18 ноября, 2021 (изменено) Да, верно. Но, не совсем цепочку, а указатель на то, что держит эта "рука". Чтобы можно было менять параметры предмета. Но, загвоздка в том, что сами параметры неизменны в игре. Т.е. найти я их обычным отсеиванием не могу. Иначе было бы всё просто. Задача найти указатель, именно он меняется. И меняются, соответственно, данные, на которые он указывает (предметы можно менять). За это можно было бы зацепиться, но я, увы, не понимаю как. Изменено 18 ноября, 2021 пользователем Alex Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 18 ноября, 2021 Автор Поделиться Опубликовано 18 ноября, 2021 (изменено) Похоже, я сам запутался, и запутал вас ? Сейчас покажу более наглядно в виде кода : Спойлер //--------------------------------------------------------------------------- class Obj { public : Obj(string n, int x, int y): Name(n), X(x), Y(y) {} //--------------- const string Name; // const - для наглядности const int X; // Извне (игроком) эти данные изменить нельзя const int Y; // Они меняются только самой игрой (кодом) }; //------------------------------------------- class Field { public : Field(string n): Name(n) {} //--------------- string Name; Obj* obj; // <---- ВОТ ЭТО НУЖНО НАЙТИ }; //--------------------------------------------------------------------------- Field * f; Obj * obj1; Obj * obj2; Obj * obj3; //--------------------------------------------------------------------------- Это примитивный примерчик иерархии. Obj конечно же, может быть сложней и иметь ещё несколько уровней вложенности указателей. Но, для понимания пойдёт Вот сами данные в экземплярах Obj в игре изменить нельзя, только подсмотреть, меняя сами объекты в Field. Хотелось бы добраться до их указателя и менять их в Cheat Engine. Вот и вся задача Полный код, для наглядности : Спойлер //--------------------------------------------------------------------------- class Obj { public : Obj(string n, int x, int y): Name(n), X(x), Y(y) {} //--------------- const string Name; // const - для наглядности const int X; // Извне (игроком) эти данные изменить нельзя const int Y; // Они меняются только самой игрой (кодом) }; //------------------------------------------- class Field { public : Field(string n): Name(n) {} //--------------- string Name; Obj* obj; // <---- ВОТ ЭТО НУЖНО НАЙТИ }; //--------------------------------------------------------------------------- Field * f; Obj * obj1; Obj * obj2; Obj * obj3; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TmForm::Timer1Timer(TObject *Sender) { // Обновление данных объекта на эеране Label1->Caption = AnsiString("Имя = ") + f->obj->Name.c_str(); Label2->Caption = AnsiString("X = ") + f->obj->X; Label3->Caption = AnsiString("Y = ") + f->obj->Y; char buf[32]; sprintf(buf, "%X", (int)f->obj); Edit1->Text = buf; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TmForm::Button1Click(TObject *Sender) { // Устанавливаем 1-ый объёкт f->obj = obj1; } //--------------------------------------------------------------------------- void __fastcall TmForm::Button2Click(TObject *Sender) { // Устанавливаем 2-ой объёкт f->obj = obj2; } //--------------------------------------------------------------------------- void __fastcall TmForm::Button3Click(TObject *Sender) { // Устанавливаем 3-ой объёкт f->obj = obj3; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- __fastcall TmForm::TmForm(TComponent* Owner): TForm(Owner) { f = new Field("Поле"); obj1 = new Obj("Аптека", 10, 50); obj2 = new Obj("Улица", 555, 333); obj3 = new Obj("Фонарь", 15, 100); f->obj = obj1; } //--------------------------------------------------------------------------- __fastcall TmForm::~TmForm() { delete f; delete obj1; delete obj2; delete obj3; } //--------------------------------------------------------------------------- Если кому интересно - могу скинуть саму тестовую программку. Вот её фэйс : . Изменено 18 ноября, 2021 пользователем Alex Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения