Гайд Виртуализация функций.

  • Автор темы Автор темы XVII
  • Дата начала Дата начала
alive forever
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
688
Реакции
400
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
XVTT Lessons

Итак,виртуализация функций - очень удобная и практичная вещь,которая поможет нам немного усложнить жизнь реверсерам,ваку и т.д. ,но это не все плюсы данной фитчи.


Рассматривать виртуализацию функций я буду лишь в теории и на примере большинства читов,где есть Rage\Legit bot'ы.

Итак,приступим.

В нашем чите есть два вида аима,но делать под каждый из них классы - долго и сложно.Проще сделать общий класс AimBot,откуда мы будем вызывать функции,которые нам нужны.

Так вот ,давайте создадим класс и пропишем там общие функции,которые есть в Rage и Legit ботах:
Код:
Expand Collapse Copy
class AimBot
{
public:
    virtual void EntityIsValid(int i);
    virtual void DropTarget();
    virtual float GetPlayerFOV(Vector& viewangles, const Vector& vSrc, const Vector& vEnd);
    virtual void FindTarget(IClientEntity* mePlayer, IVEngineClient* pEngineClient);
    virtual void DoAimBot(IClientEntity* mePlayer, IVEngineClient* pEngineClient, CUserCmd* cmd);
};

Так вот,все эти функции в большинстве случаев используются в наших "аимботах".

Помним то,что нам нужно указать в дочерних классах ссылку на наш класс AimBot
Код:
Expand Collapse Copy
class RageBot : public AimbBot
{
};
Код:
Expand Collapse Copy
class LegitBot: public AimbBot
{
};


Главное не забыть объявить указатель на главный класс и выделить под него память.

Код:
Expand Collapse Copy
AimBot* AB = new AimBot();
ну а дальше мы можем играться как хотим.

Код:
Expand Collapse Copy
Legit* LA= new Legit();
Rage* RA= new Rage();

AimBot* AMb[2];
AMb[0] = LA;
AMb[1] = RA;
for (int i = 0; i < 2; i++)
  AMb[i]->DoAimBot(mePlayer, pEngine, cmd);


Главное это то,что такие методы реализаций очень сильно упрощают работу с большими проектами,где есть очень много одинаковых функций,но работающих немного по-другому.

И,естественно,аимы взяты лишь для примера и демонстрации.

В общем-то,это все.Спасибо за внимание.​
 
6e2b1b2f7c19.jpg



ну ты понял)))
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
аутизм метод
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нет, но способ аутизм
У тебя своя точка зрения,у меня своя.
Я считаю,что лучше держать общий абстрактный класс виртуализированных функций ,где будут объявлены методы и функции,которые я использую в разных классах и файлах,нежели чем делать по 500 строк объявлений.
 
XVTT Lessons

Итак,виртуализация функций - очень удобная и практичная вещь,которая поможет нам немного усложнить жизнь реверсерам,ваку и т.д. ,но это не все плюсы данной фитчи.


Рассматривать виртуализацию функций я буду лишь в теории и на примере большинства читов,где есть Rage\Legit bot'ы.

Итак,приступим.

В нашем чите есть два вида аима,но делать под каждый из них классы - долго и сложно.Проще сделать общий класс AimBot,откуда мы будем вызывать функции,которые нам нужны.

Так вот ,давайте создадим класс и пропишем там общие функции,которые есть в Rage и Legit ботах:
Код:
Expand Collapse Copy
class AimBot
{
public:
    virtual void EntityIsValid(int i);
    virtual void DropTarget();
    virtual float GetPlayerFOV(Vector& viewangles, const Vector& vSrc, const Vector& vEnd);
    virtual void FindTarget(IClientEntity* mePlayer, IVEngineClient* pEngineClient);
    virtual void DoAimBot(IClientEntity* mePlayer, IVEngineClient* pEngineClient, CUserCmd* cmd);
};

Так вот,все эти функции в большинстве случаев используются в наших "аимботах".

Помним то,что нам нужно указать в дочерних классах ссылку на наш класс AimBot
Код:
Expand Collapse Copy
class RageBot : public AimbBot
{
};
Код:
Expand Collapse Copy
class LegitBot: public AimbBot
{
};


Главное не забыть объявить указатель на главный класс и выделить под него память.

Код:
Expand Collapse Copy
AimBot* AB = new AimBot();
ну а дальше мы можем играться как хотим.

Код:
Expand Collapse Copy
Legit* LA= new Legit();
Rage* RA= new Rage();

AimBot* AMb[2];
AMb[0] = LA;
AMb[1] = RA;
for (int i = 0; i < 2; i++)
  AMb[i]->DoAimBot(mePlayer, pEngine, cmd);


Главное это то,что такие методы реализаций очень сильно упрощают работу с большими проектами,где есть очень много одинаковых функций,но работающих немного по-другому.

И,естественно,аимы взяты лишь для примера и демонстрации.

В общем-то,это все.Спасибо за внимание.​
неплохая идея. надо будет тоже такое запилить.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У тебя своя точка зрения,у меня своя.
Я считаю,что лучше держать общий абстрактный класс виртуализированных функций ,где будут объявлены методы и функции,которые я использую в разных классах и файлах,нежели чем делать по 500 строк объявлений.
можно же так
Код:
Expand Collapse Copy
class LegitBot : public CAIM : public Singleton<LegitBot>
{
friend class Singleton<LegitBot>;
LegitBot ();
~LegitBot ();
}
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
можно же так
Код:
Expand Collapse Copy
class LegitBot : public CAIM : public Singleton<LegitBot>
{
friend class Singleton<LegitBot>;
LegitBot ();
~LegitBot ();
}
льзя,но я сделал так,как сделал
 
вот это напрягает, а так, действительно хоть что-то новое.
Определять можешь как хочешь,я показал пример использования
 
можно же так
Код:
Expand Collapse Copy
class LegitBot : public CAIM : public Singleton<LegitBot>
{
friend class Singleton<LegitBot>;
LegitBot ();
~LegitBot ();
}
я не могу понять, зачем под каждую функцию отдельный класс/синглтон делать? какой инвалид такую моду задал?
 
я не могу понять, зачем под каждую функцию отдельный класс/синглтон делать? какой инвалид такую моду задал?
конкретно по теме игры: это глупо, так как синглтон дает нам только связность экземпляров.
По другим решениям.... я тут не видел еще проектов или кода, где синглтон действительно пригодился бы...
ЗЫ: самое реальное использование данной конструкции я вижу только в легировании ошибок проекта, либо в хранении и работе конфигураций программы, что реализовать пользователи данного портала неспособны еще(без обид и не переходя на личности).
 
мммм, красиво мутишь фраерок. а delete кто делать будет? или утечка памяти тебя не беспокоит?
 
мммм, красиво мутишь фраерок. а delete кто делать будет? или утечка памяти тебя не беспокоит?
думаю тут создаются глобальные указатели, а при таком утечки не будет. единственное если на выходе не освободить память будет просто занятый участок, хотя операции new поддерживают автоматическое очищение памяти при вызове деструктора(если он нормально описан)
 
думаю тут создаются глобальные указатели, а при таком утечки не будет. единственное если на выходе не освободить память будет просто занятый участок, хотя операции new поддерживают автоматическое очищение памяти при вызове деструктора(если он нормально описан)
Если это глобально тогда да. Но если это например в хуке, так еще и нет правильного деструктора то ничего хорошего не сулит
 
Если это глобально тогда да. Но если это например в хуке, так еще и нет правильного деструктора то ничего хорошего не сулит
если это в хуке(что по сути в высокоинтерационном цикле ), то это финиш))
даже учитывая, что объект будет создаваться на входе и очищаться на выходе итерации все равно дичь получается.
 
Назад
Сверху Снизу