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

partoftheworlD

Пользователи+
  • Постов

    2 687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    172

Сообщения, опубликованные partoftheworlD

  1.  

    23 минуты назад, Antonshka сказал:

    - почему таким образом допускается писать код

    Switch/case из себя представляет обычный goto, а он не умеет создавать область видимости, поэтому надо руками создавать её, а это делается с помощью блока.

     

     

  2. Технически возможно, если написать плагин для работы с отладчиком.(разработка уже ведется)

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

    • Плюс 1
  3. 12 часов назад, ravett сказал:

    Спасибо за приятные новости.

     

    Так по быстрому накидал для проверки код. Нужно будет подробней разбираться с игрой(когда будет время) и перепроверить все, вроде бы все работает, но меня смущаю цифры. (Остальные ресурсы так же в этом списке есть) Возможно придется запись новых значений делать через скрипты движка, там есть функция, которой задаешь номер здания, какой ресурс нужен и сколько.

     

    image.thumb.png.809e5150a010cdac31134cd141fe8082.png

    • Плюс 1
  4. Еще можно заняться извращениями, рисовать интерфейс на UE4 с помощью конструктора пользовательского интерфейса, а после дописывать необходимый функционал на плюсах и все это связывать вместе. Вес будет примерно такой же, как у программ на Qt и все в одном файле, как в платной версии Qt.

  5. 15 минут назад, TechnoBOY сказал:

    Хотелось бы подсказку где я ошибся и что делаю не так ^_^

     

    15 минут назад, TechnoBOY сказал:

    Всё делает PhysX3_x86.dll.

     

    Этот модуль делает промежуточные расчеты всех объектов на локации, но они обычно передаются в функцию внутри модуля игры.

    Так что, лучше попробовать найти откуда ноги растут, т.к. явно передаются координаты в PhysX3_x86.dll из игрового модуля, найдешь кто передает - найдешь массив игроков, а там уже по id или по базовому адресу можно будет сделать фильтр, а если повезет, то найдешь функцию, которая работает только с твоим игроком. 

     

    p.s картинки не работают

     image.png.50a9e3c53330a81e83285fa31b59d111.png

  6. 25 минут назад, Flicker666 сказал:

    С помощью какой программы можно попробовать взломать?

    С помощью рук. Надо найти такой способ взлома, на который бы ты мог влиять на клиенте, но сервер принимал данные как верные.

    Например, накручивать не монеты, а награду за миссии т.е. заставляешь думать сервер, что ты действительно "честно" заработал эти монеты.

     

    25 минут назад, Flicker666 сказал:

    "что-то пошло не так" и игра перезагружается.

    Это явный рассинхрон с данными на сервере.

  7. 5 часов назад, Antonshka сказал:

    Непонятно почему в этом скрипте вызывается конструктор базового класса из тела конструктора производного класса.

     

    Возможно использовалась старая спецификация языка, которая позволяла это делать. Это надо смотреть по какой версии писалась книга.

    Хотя код достаточно странный из примера и некоторые куски кода вообще не понятно как должны работать.

  8. Выбирай, что больше нравится. Ничего нового тут нет, все что сказано выше.

     

    1.

    Спойлер
    
    class Pstring :  String
    {
    public:
    	Pstring(const char pstr[]) : String(pstr) {};
    	void show() const { cout << String::str; };
    };

     

     

    2.

    Спойлер
    
    class Pstring : String
    {
    public:
    	Pstring(const char pstr[]) : pstr_(pstr) {};
    	void show() const { cout << pstr_; };
    
    	const char* pstr_;
    };

     

     

    Мне нравится как выглядит второй вариант?

  9. 1 час назад, Tatsuo сказал:

    Научите и объясните пожалуйста!

     

    Все что тебе нужно.

    https://docs.microsoft.com/ru-ru/windows/desktop/Debug/debugging-functions

     

    Рецепт такой.

    1.Ищешь с помощью CE многоуровневый указатель на этот адрес по которому лежит твое значение.

    2.И считываешь по уровням указатели с помощью ReadProcessMemory, если это внешний чит или с помощью указателей, если это внутренний чит.

     

    Пример.

     

    0xAAAABBBB -> 0xDEADBE00 + FE -> 0xFEEDFA00+CE -> значение

     

    DWORD tmp = 0;
    DWORD base_address = 0xAAAABBBB;
    unsigned int buffer = 1337;
    
    ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(base_address), &tmp, sizeof(DWORD), 0); // 1 уровень (0xAAAABBBB -> 0xDEADBE00)
    ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(tmp + 0xFE), &tmp, sizeof(DWORD), 0);   // 2 уровень (0xDEADBE00 + 0xEF -> 0xFEEDFA00)
    ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(tmp + 0xCE), &tmp, sizeof(DWORD), 0);   // 3 уровень (0xFEEDFA00 + 0xCE -> 0xFEEDFACE) 0xFEEDFACE адрес по которому лежит наше значение.
    
    WriteProcessMemory(hProcess, reinterpret_cast<PBYTE*>(tmp), &buffer, sizeof(buffer), 0);     // Запись по адресу значения

     

    3. Профит.

     

    Как получить адрес модуля это сам ищи, статей и уроков по этому лежит в интернете туева хуча.

  10. 2 часа назад, Scrappy сказал:

    Подскажите как реализовать.

     

    Находишь прозрачность любого игрока, находишь список игроков, имея смещение прозрачности и структуру игроков с помощью цикла перебираешь всех и устанавливаешь значение по смещению прозрачности.

  11. 1. Находишь адрес нужного участка памяти по которому находится место инжекта

    2. Делаешь копию этого участка

    3. Перенаправляешь оригинальный участок памяти на копию за счет изменения EIP/RIP.

    Спойлер
    
    DWORD OldProt = 0;
    SYSTEM_INFO system_info = { 0 };
    GetSystemInfo(&system_info);
    VirtualProtect(reinterpret_cast<void*>(<оригинальный адрес>), system_info.dwPageSize, PAGE_EXECUTE | PAGE_GUARD, &OldProt);
     
    LONG WINAPI UnhandledExceptionFilter(EXCEPTION_POINTERS *pExceptionInfo)
    {
        if (pExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_GUARD_PAGE_VIOLATION && pExceptionInfo->ContextRecord->Eip == <оригинальный адрес>)
        {
            pExceptionInfo->ContextRecord->Eip = reinterpret_cast<DWORD>(CopyAddress);   
            pExceptionInfo->ContextRecord->EFlags |= 0x100;     
            return EXCEPTION_CONTINUE_EXECUTION;
        }
         
        if (pExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_SINGLE_STEP)
        {
            DWORD OldProt = 0;
            SYSTEM_INFO system_info = { 0 };
            GetSystemInfo(&system_info);
            VirtualProtect(reinterpret_cast<void*>(<оригинальный адрес>), system_info.dwPageSize, PAGE_EXECUTE | PAGE_GUARD, &OldProt);
            return EXCEPTION_CONTINUE_EXECUTION;
        }     
        return EXCEPTION_CONTINUE_SEARCH;
    }

     

    4. Делаешь с копией все что угодно.

     

    или можешь просто убить проверку.

     

    • Плюс 1
  12. 8 минут назад, imaginary сказал:

    например не пойти дальше, или отталкивает

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

×
×
  • Создать...

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

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