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

Лидеры


Популярный контент

Показан контент с высокой репутацией 05.01.2020 во всех областях

  1. 1 балл
    Для примера возьмем 2 игры: CSGO и Left 4 Dead 2, в них используется Source Engine, и как можно подумать подсветка должна реализовываться одинаково, но не тут-то было. Давайте взглянем на процесс инициализации предметов (включая игроков) в CSGO: Как можем здесь увидеть для каждого объекта при инициализации резервируется место в структуре подсветки и возвращается ID в этой структуре, который отличный от ID игрока. Внутри GetGlowIndex: Прелести наследования, т.е. есть класс, который наследуется для любых предметов и инициализирует структуру подсветки, даже для обычных занавесок или телевизора. Вот только в L4D2 ничего такого нет, тут все куда более просто или оптимизировано, структура подсветки наследуется только для боссов (танк, курильщик и т.д.) и игроков, а подсветка ведется постоянно нужно лишь изменить уровень прозрачности. А вот структура определяющая подсветку для мобов (обычных зараженных) является динамической из-за чего заполняется только при определенных условиях, это создает некоторые сложности с подсветкой т.к. придется вручную выделять память под каждого моба и заполнять структуру определяющую подсветку, но просто так записав значение по определенным адресам не выйдет из-за подсчета объектов в структуре. Но мы ведь не пальцем деланные, немного пореверсив находим функцию инициализации, правда перед вызовом необходимо получить указатель на моба, это делается с помощью вызова виртуальной функции, которая принимает id и возвращает указатель на структуру. На выходе получаем это:
  2. 1 балл
    Так, давно что-то ничего не писал в блог Собственно время пришло Данная статья является примером метода о котором рассказано в данном видео Рассмотрим вызов игровой функции на примере перовой части игры Dishonored В данном примере будем восполнять себе количество маны, которая в игре не может регенерироваться полностью после использования череды способностей Для начала нам необходимо найти само значение маны, благо оно храниться 4мя байтами в памяти и тут нет ничего сложного Теперь когда у нас есть адрес маны или же указатель на данный адрес, нам необходимо найти метод который как раз и перезаписывает значение Делается это очень просто (F6) Нас интересует инструкция которая перезаписывает значение 1 раз Выходим на эту инструкцию в дизассемблере и ставим брейк Вот мы и нашли инструкцию, далее просто выходим из него (Кнопка Execute till return) Для того чтобы вызвать метод, необходимо узнать и проанализировать его параметры. Этим и займемся В метод передается 2 параметра, один из которых находится в ecx (Указатель на базовый класс) А второй передается в регистре ecx, до инструкции которая перезапишет значение Данный кусок: push ecx mov ecx,esi Регистр edx содержит все время один и тот же не изменяющийся адрес, т.е он статичен Распишу параметры чтобы было более нагляднее push ecx (Значение 50 в данный момент) mov ecx, esi (В ecx записывается значение из esi (0x0AD0A000)) Теперь если немного проанализировать, то можно понять что 50 - это значение маны, которое будет присвоено игроку после применения способности А 0x0AD0A000 это указатель на начало структуры игрока, т.е PlayerController* player; Таким образом метод выглядит так: ManaMethod(PlayerController* player, int ManaOut); Теперь можно приступать к написанию самого кода на c++, чтобы вызывать этот внутреигровой метод (При этом заранее найдем работающий указатель на класс игрока PlayerController) Для вызова метода нам необходимо определить его соглашение о вызове, т.е в каком порядке туда передаются аргументы Посмотреть все соглашения можно тут https://ru.wikipedia.org/wiki/Соглашение_о_вызове Немного почитав можно увидеть что это соглашение __thiscall thiscall — соглашение о вызовах, используемое компиляторами для языка C++ при вызове методов классов в объектно-ориентированном программировании. Аргументы функции передаются через стек, справа налево. Очистку стека производит вызываемая функция. Соглашение thiscall отличается от cdecl соглашения только тем, что указатель на объект, для которого вызывается метод (указатель this), записывается в регистр ecx. В самом коде объявляем этот метод для его вызова далее //Метод принимает PlayerController* и ManaOut //0x00AB17C0 - адрес которых хранился в edx и он статичен typedef void*(__thiscall * _ManaType)(PlayerController* Player, int Mana); _ManaType ManaFunc = (_ManaType)(0x00AB17C0); Остается только написать вызов этого метода и на этом дело будет сделано /*PlayerConroller.h */ struct PlayerController { public: char pad_0000[2656]; //0x0000 int Mana; //0x0A60 }; /*Метод который вызывается при создании потока из dll*/ void onAttach() { while (true) { if (GetAsyncKeyState(VK_END)) { PlayerController* Player = reinterpret_cast<PlayerController*>(*(DWORD*)(Base + 0x01052DE8)); //Получаем указатель на игрока PlayerController* ManaFunc(Player, 100); } Sleep(150); } } Собственно на этом моменте статья закончена При нажатии на кнопку END внутри игры, мана восполняется до 100 единиц
  3. 1 балл
    Здравствуйте! Я записал видео уроки, по программированию и созданию трейнера на Lua (Cheat Engine), после чего решил поделиться с вами и выложить их на данный форум. Впрочем вот и сами видео уроки: Видео урок 1: В данном видео уроке мы разбираем работу со статическими адресами. Видео урок 2: В данном видео уроке мы научимся работать с AAScript (Cheat Enigne). Видео урок 3: В данном видео уроке, разбираем такую тему как GUI, научимся добавлять контролы, так же научимся работать с ними. Понимаем что такое Main Lua, и учимся с ним работать. Видео урок 4: В данном видео уроке мы учимся ставить BreakPoint и получать значение регистров. После чего учимся создавать хоткеи, создавать таймер, замораживать значения. Видео урок 5: Используем наши знания и пишем трейнер для игры Left 4 Dead 2. В конечном результате работаем с функцией которая взаимодействует с жизнями, обрабатываем ее, и делаем нас бессмертными. (AAScript). Исходники трейнеров выкладываются под видео в описании. Спасибо.
  4. 1 балл
    Обход функции, снятия скринов античитами. 03.01.2020 Undetected Поддерживаемые системы: x64 only Windows 7+ Поддерживаемые режимы игры: Windowed mode FullScreen Инструкция: Для запуска требуются права администратора Запустить файл Запустить игру Играть В зависимости от античита, скрины не будут сниматься или будут чистые ENJOY
  5. 1 балл
    ЗЫ1; ответ на твой вопрос под спойлером:
  6. 1 балл
    1. Название игры. 2. Что за опция (характеристика). 3. СЕ-ный скрипт с ЛОГами. Без вот этих 3-х пунктов, лично я больше отвечать не буду. Результат таких запросов - простая тема разрастается на несколько страниц. Ты проде выкладывал несколько трейнеров? И при этом не можешь написать элементарный скрипт?
  7. 0 баллов
    ЗЫ: 4. А если равно 25, то что нужно сделать? Нажать Alt + F4?
×

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

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