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

Лидеры

  1. LIRW

    LIRW

    Ветераны


    • Баллы

      587

    • Постов

      4 514


  2. Garik66

    Garik66

    Помогаторы


    • Баллы

      371

    • Постов

      5 750


  3. krocki

    krocki

    Разработчики


    • Баллы

      199

    • Постов

      743


  4. partoftheworlD

    partoftheworlD

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


    • Баллы

      179

    • Постов

      2 687


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

Показан контент с высокой репутацией за 20.05.2017 в Сообщения

  1. Я не буду здесь объяснять, что такое видовая матрица и для чего она нужна - для этого есть специальные книжки и статьи (раз, два) Обычный Step-by-Step гайд с пояснениями. Искать будем в Counter-Strike: Global Offensive, но в принципе подойдет и любая другая игра. Никаких консольных команд для облегчения поиска использовать я не буду, дабы способ мог пройти в любой другой игре. Значит так, сначала цепляемся к процессу игры, затем устанавливаем параметры поиска: Scan Type: Value between... Value Type: Float Почему именно так? Дело в том, что точное значение искать довольно рискованно. Во-первых, флоат вообще довольно неточная штука, а во-вторых - мы не знаем точного угла нашей камеры. Например, в csgo угол наклона (pitch) варьируется от -89.0 до 89.0 градусов , а в других играх может и прямой угол получаться, т.е. 90 градусов. Теперь опускаем камеру до упора вниз, так что наш угол наклона получится 89 градусов. По идее, в видовой матрице это значение отобразится как ~0,999, но мы все равно будем искать диапазон. Ну а теперь выставляем диапазон: от 0.9 до 1.1 и сканируем Нам тут же нашло овер9000 значений, но ща мы их отсеим. Камеру до упора вверх и сканим теперь следующий диапазон: Оп-па. Теперь значений осталось всего-ничего: 521. Нет, это конечно много, но не настолько. Можно конечно по приколу отсеить те значения, что изменились за время чтения данной строки, но тут может поджидать сюрприз: в некоторых играх камера может немного "ходить" туда-сюда. Но если вы уверены в том, что она статична, то флаг вам в руки. Сейчас осталось только и делов: отсеить весь хлам, ну а дальше будем смотреть на найденное и анализировать. Можно так же до упора туда-сюда камеру водить, но я сделал так: направил ее примерно параллельно земле и прожал скан от -0.2 до 0.2. После пары-тройки дополнительных сканов у меня осталось примерно 60 значений. Многовато для ручного перебора, но я знаю, что мне нужны только "зеленые", т.е. статические адреса. Пролистав чуть ниже, я тут же натолкнулся на целый ряд таких значений: Выносим все эти ячейки в список адресов и начинаем их перебирать: ПКМ по первому же адресу -> Browse this memory region ( Ctrl + B ) Выставляем тип отображаемых значений на float, чтобы проще было наблюдать за всеми значениями матрицы. ПКМ -> Display Type -> Float ( Ctrl + 9 ) Смотрим на первую матрицу: На всю матрицу у нас должно быть только 3-4 больших значения и все они должны быть в одной колонке. Ну или так: каждое четвертое значение имеет большую величину. Желательно сразу их выровнять по 4 колонке. Остальные значения находятся в диапазоне от 0 до +-1.33 Тут мы видим, что она явно какая-то не такая: Nan-значения, остальные нули и тд. Но даже если она выглядит более-менее правдиво, то достаточно подвигать туда сюда камерой ( + побегать! ), чтобы убедиться в том что это не она: только два значения меняются, а остальные статичны. По идее меняться должны все значения, кроме одного в первой строке, оно скорее всего будет равняться нулю. Дальше увидите. Проделываем те же действия с другими матрицами: оцениваем их визуально + меняем состояние камеры в игре и смотрим на значения. Просматривая вторую и третью матрицы я заметил, что между ними есть участок памяти, который наиболее активно изменяется при движении/изменении углов камеры. Фиолетовым я выделил адреса второй и третьей матрицы, а между ними зеленым - интересующий участок. Как видите, здесь есть 4 довольно больших значения ( на фоне других ) и одно из них (0x1F97E26C) остается неизменным. Но в других играх оно может немного меняться: оно отвечает за угол поворота ( по часовой ). Это в тех играх, где камера туда-сюда наклоняется, например, при передвижении пресонажа, но оно в таком случае все равно не будет сильно большим. Теперь выделяем предполагаемое начало матрицы, жмем ПКМ->Add this to address list и копируем адрес. Теперь Ctrl + G и переходим по скопированному адресу. Смотрим: Ба! Выглядит отлично. Значения не сравнивайте между скринами, за это время я немного подвигал камеру опять, поэтому они изменились. Ну, оффсет для статического адреса сделать вообще не сложно: берем адрес матрицы и вычитаем из него базовый адрес модуля: 0x1F97E264 - client.dll = 0x4A7E264 Если все еще не понятно, как таки найти view matrix, то можете посмотреть видеоурок от Guided Hacking: https://www.youtube.com/watch?v=-WL1Gpe9VRo Ну, так как во многих обновляемых играх, особенно в кс, оффсетам свойственно меняться, а каждый раз искать по новой эту матрицу не очень хочется, то можно сделать сигнатурку. По ней мы будем автоматически вытаскивать наш оффсет из исполняемого кода. Точнее даже не оффсет, а уже конкретный адрес. Добавляем первое значение нашей матрицы в список адресов и ставим бряк. Тут же ловим кучу инструкций, которые взаимодействуют с нашей матрицей: Берем самую первую и смотрим: Это похоже на какой-то метод класса матрицы, который может использоваться не только нашей матрицей, но и другими. Что-то типа оператора присвоения. Если поставить бряк на эту инструкцию, то можно в этом убедиться: в регистр ecx попадает не только "наш" адрес, но и куча других. Что же делать? Все просто: будем "раскручивать" цепочку вызовов функций. Ставим Breakpoint ( F5 ) на инструкцию push ebp. Это начало функции. Затем ПКМ по ней же и выбираем "Set/Change break condition" и выставляем фильтр на брейкпоинте, чтобы он остановился когда функция будет работать с нашей матрицей. Тут, конечно же, адрес вашей матрицы вместо моего. И в тот же миг "ловим" наш поток. Смотрим на регистры и на стек: В регистре ecx наша матрица, стек разворачиваем на "полную" и видим такую картину: Это адрес функции, которая нас вызвала. В чем суть вообще того, что мы сейчас делаем? Все дело в том, что нам надо выйти на ту единственную функцию, которая работает ТОЛЬКО с нашим адресом. Т.е. там, где все начинается. Там же, вероятно, мы и сможем узнать откуда игра берет адрес этой матрицы и мы сделаем сигнатурку. Значит так, теперь снимаем наш брейкпоинт и прыгаем по адресу из нашего стека: client.dll + 67379B Отлично. Что мы видим? А, ну это соответственно тот самый вызов функции, из которой мы пришли. Можно тут так же поставить брейкпоинт и убедиться, что функция всё так же работает с несколькими матрицами. Так, а с каким регистром-то у нас там работали инструкции? С ecx, точно. Смотрим буквально на пару строк выше и видим инструкцию: lea ecx, [edi+00000284] Похоже, тут в наш регистр загружается адрес матрицы. Хм, а сама матрица тоже лежит в какой-то структуре, адрес которой лежит в edi. А значит теперь нам надо искать ту инструкцию, которая загружает в регистр edi адрес 0x1F97DFE0. Это уже адрес нашей структуры, т.е. ( 0x1F97E264 - 0x284 ). Теперь ищем по нему. Прокрутив в самый верх функции можно увидеть, что в edi значение перекладывается из регистра ecx. client.dll+673740 - 55 - push ebp client.dll+673741 - 8B EC - mov ebp,esp client.dll+673743 - 81 EC 80000000 - sub esp,00000080 client.dll+673749 - 56 - push esi client.dll+67374A - 57 - push edi client.dll+67374B - 8B F9 - mov edi,ecx Теперь делаем то же самое, что и в предыдущий раз: брейкпоинт (на push ebp), condition, и прыгаем на предыдущую функцию. Тут наблюдаем такую картину: Фигассе, сказал я се. Приехали, значение вытаскивается из стека) Можно попрыгать по функции и найти когда значение пушится в стек, но мне лень, поэтому я просто прокрутил функцию в самый верх и не прогадал: поставив бряк на начало функции я тут же поймал в ecx прежний адрес структуры, которую мы пытаемся выследить. Но эта функция все еще работает с каким-то адресом помимо нашего, поэтому раскручиваем дальше: те же действия, прыгаем на предыдущую функцию. Тут такая же ситуёвина, все делаем точь в точь, пока не наткнемся на ту самую функцию, где у нас бряк будет ловить в регистре только наш адрес. А вот и она: Думаю, тут все ясно. Мы поймали разрабов с поличным: адресок-то прямо вот он, в ecx кладется. Двойной клик по строчке чтоб увидеть полный адрес: client.dll+1F2C68 - B9 E0DF971F - mov ecx,1F97DFE0 А вот и адрес нашей структуры. Дело за малым, выделяем кучку инструкций для того чтобы составить уникальную сигнатуру, по которой мы сможем найти в дальнейшем этот участок кода. Получаем такую строчку: B9 E0 DF 97 1F 50 6A 00 6A 03 83 EC 08 8D 45 DC F3 0F 11 44 24 04 F3 0F 10 45 F8 F3 0F 11 04 24 И теперь "замазываем" наш адрес, который после перезапуска игры 100% поменяется. B9 ?? ?? ?? ?? 50 6A 00 6A 03 83 EC 08 8D 45 DC F3 0F 11 44 24 04 F3 0F 10 45 F8 F3 0F 11 04 24 Все, сигнатура готова. У меня примерно так выглядит всё в коде: pViewMatrix = (D3DXMATRIX*) CEngine::FindPattern( "client.dll", "B9 ?? ?? ?? ?? 50 6A 00 6A 03 83 EC 08 8D 45 DC F3 0F 11 44 24 04" ); if( pViewMatrix ) { pViewMatrix = (D3DXMATRIX*)( *(DWORD*)( (DWORD) pViewMatrix + 1 ) + 0x284 ); } Да, не забываем, что это адрес СТРУКТУРЫ, но не матрицы. Матрица имеет своё, внутреннее смещение по структуре: 0x284. Сканер сигнатур сами как-нибудь сделаете, это уже к кодингу относится Да и на самом деле, эту сигнатуру можно использовать даже в CE.
    9 баллов
  2. Смотри: 1. Узнаем ID скрипта из таблицы! Для этого делаем: Заходим в CE открываем окно "Memory view" там нажимаем "CTLR + L" Открывается окно "Lua Engine" туда вставляем этот скрипт -> Жмем "Execute" далее просто активируем скрипт и получаем: -> NAME СКРИПТА -> ID СКРИПТА -> INDEX СКРИПТА Запоминаем ID допустим 29 ВИДЕО: 2. Открываем окно где будем писать скрипт для этого жмем "CTRL+ALT+L" или жмем "Table -> Show Cheat Table Lua Script" Там начинаем писать скрипт: ВИДЕО: 3. Теперь нужно сгенерировать чит: Сначала мы сохраним нашу форму жмем в CE "Table -> Наша форма -> Edit" открывается окно редактирования формы там жмем "File -> Save" сохраняем форму и удаляем ее. Теперь идем в "File -> Generate generic trainer lua script from table". Там откроется дефолтная форма в окне "Trainer generator" жмем кнопку "Design userinterface manually" далее нужно заменить эту форму нашей. В окне редактирования формы жмем уже "File -> Load" и выбираем нашу сохраненную форму. Далее активируем наш LUA скрипт ( если это уже было сделано то не активируем ) "CTRL+ALT+L" или жмем "Table -> Show Cheat Table Lua Script". Далее уже в окне "Trainer generator" в строке "Processname" пишем название нашего процесса ( допустим game.exe ). Снимаем галочку с "User can resize window" ( чтоб конечный пользователь на мог изменить размер окна ). Выбираем иконку "Set Icon". В "Output" не забываем выбрать "EXE" и жмем "Generate trainer" и выбираем куда сохранить. Далее открывается еще одно окно в нем указываем опять же иконку так же выбираем процесс ( если игра x64 то ставим x64 ну и наоборот ). Так же выбираем "Gigantic" в "Trainer size" и жмем "Generate" и все! Видео:
    8 баллов
  3. FreeCam - свободная камера, подразумевает возможность полёта камеры отдельно от объекта/персонажа и тому подобного, используется в самых разных целях, для обнаружения противников, для создания красивых снимков, для нахождения секретов и тому подобного. Принцип создания: Всё зависит от типа игры. Если реализован поворот камеры мышью - то данную функцию делать не нужно. Для перемещения камеры можно использовать самые разные функции, но я склоняюсь к полёту в ту сторону куда смотрит игрок. Для этого необходимо вычислить синус и косинус для поворота по горизонтальной, и синус для поворота по вертикальной оси. После их надо умножить на радиус, мы получим точку на сфере - это и будет вектор ускорения для камеры. Его следует добавлять к уже существующим координатам камеры, изменяя радиус мы можем изменять скорость. Для того что бы камера была "свободная", нужно записывать свои значения в координаты, а функцию которая записывает их в игре по стандарту - отключить. Более детально всё показано в следующем видео Создание свободной камеры на примере игры "WarThunder": Видео где показан принцип работы формул: тык
    7 баллов
  4. Отладчик - глаза любого хакера/геймхакера. Отладчики позволяют вам выполнять трассировку (отслеживание) выполнения процесса, или проводить динамический анализ. Возможность выполнения динамического анализа абсолютно необходима. Это очень важно, чтобы вы понимали, что такое отладчик, и принцип его работы. Большинство из них предоставляют возможность запускать, останавливать, или выполнять пошагово процесс, устанавливать точки останова, манипулировать регистрами и памятью, и отлавливать случающиеся исключения в исследуемом процессе. Регистр - это небольшой объем памяти находящийся прямо на центральном процессоре, и доступ к нему - быстрейший метод для процессора, чтобы получить данные. В наборе инструкций архитектуры x86 используются восемь регистров общего назначения: EAX, EDX, ECX, ESI, EDI, EBP, ESP и EBX. Большинство регистров доступны процессору, но мы рассмотрим их только в конкретных обстоятельствах, когда они потребуются. Каждый из восьми регистров общего назначения разработан для своей конкретной работы, и каждый выполняет свою функцию, которая позволяет процессору эффективно выполнять инструкции. Это очень важно - понимать, какой регистр для чего используется, ибо это знание положит фундамент понимания того, как устроен отладчик. Регистр EAX, так же называемый регистром аккумуляции (или аккумулятором), используется для выполнения расчетов, а также для хранения значений, возвращаемых вызванными функциями. Многие оптимизированные инструкции в наборе инструкций x86 разработаны для перемещения данных именно в регистр EAX и извлечения данных из него, а также для выполнения расчетов с этими данными. Большинство простых операций, таких как сложение, вычитание и сравнение оптимизированы для использования регистра EAX. Кроме того, многие определенные операции, такие как умножение или деление, могут выполняться только в регистре EAX. Как было замечено ранее, возвращенные значения из вызываемых функций хранятся в EAX Регистр EDX это регистр данных (data register). Этот регистр в основном является дополнительным для регистра EAX, и он помогает хранить дополнительные данные для более сложных вычислений, таких как умножение и деление. Он так же может быть хранилищем данных общего назначения, но обычно он используется в расчетах, выполненных в сочетании с регистром EAX. Регистр ECX так же называется регистром-счетчиком (count register), он используется в операциях цикла. Часто повторяющиеся операции стоит хранить в упорядоченной пронумерованной строке. Очень важно понимать, что счетчик регистра ECX уменьшает, а не увеличивает значение. Регистры ESP и EBP соответственно указатель стека (stack pointer) и указатель базы (base pointer). Эти регистры используются для управления вызовами функций и операциями со стеком. Когда функция вызвана, аргументы функции перемещаются (проталкиваются) в стек и следуют по адресу возврата. Регистр ESP указывает на самый верх стека, поэтому он будет указывать на адрес возврата. Регистр EBP указывает на самый низ стека вызовов. В некоторых случаях компилятор может использовать оптимизацию для удаления регистра EBP как указателя кадра, в этих случаях регистр EBP освобождается и может использоваться точно так же, как любой другой регистр общего назначения. Единственный регистр, который не был разработан для чего-то конкретного - это EBX. Он может использоваться, как дополнительное хранилище данных. Единственный дополнительный регистр, который стоит упомянуть отдельно, это регистр EIP. Он указывает на инструкцию, которая выполняется в данный момент. Как процессор проходит по двоичному исполняемому коду, EIP обновляется для отображения адреса, по которому в данный момент происходит выполнение. Стек хранит информацию о том, как вызывается функция, какие параметры она забирает, и что надо вернуть после выполнения функции. Структура стека представляет собой модель "Первый пришел, последний вышел" (FILO, First In, Last Out), когда аргументы проталкиваются в стек для вызова функции, и извлекаются из стека после того, как функция завершит свое выполнение. Регистр ESP используется для отслеживания самой вершины кадра стека, а регистр EBP используется для отслеживания самого низа стека. Стек "растет" от верхних адресов памяти к нижним адресам памяти События отладчика Отладчик работает как бесконечный цикл, который ждет события отладки. Когда событие для отладки случается, цикл прерывается, и вызывается соответствующий обработчик событий. Когда вызван обработчик событий, отладчик останавливается и ждет указаний, что ему делать дальше. Вот несколько обычных событий, которые улавливает отладчик: · Встреча точки останова (breakpoint) · Нарушения памяти (так же называемые нарушениями доступа или нарушением сегментации) · Исключения, сгенерированные отлаживаемой программой Точки останова Возможность остановить отлаживаемый процесс достигается установкой точек останова (breakpoints). Остановив процесс, у вас появляется возможность проверить переменные, аргументы стека, и что находится в памяти без изменения переменных процесса, прежде чем вы сможете записать их. Точки останова - это определенно самая частая вещь, которую вы можете использовать при отладке процесса, и рассмотрим их очень внимательно. Есть три основных вида точек останова: программные (soft breakponit), аппаратные (hardware breakpoint), и памяти (memory breakpoint). Они ведут себя очень похоже, но выполняются очень разными способами. Программные точки останова используются специально для остановки процессора при выполнении инструкций и это самый частый вид точек останова, который вы будете использовать при отладке приложений. Программный брейкпоинт - это однобитная интсрукция, которая останавливает выполнение отлаживаемого процесса и передает управление обработчику исключений точек останова. В целях понимания как это работает, вам следует знать разницу между инструкцией (instruction) и опкодом (opcode) в ассемблере x86. Аппаратные точки останова (hardware breakpoints) полезны, когда нужно установить небольшое число точек останова, и отлаживаемая программа не может быть модифицирована. Этот тип точек устанавливается на уровне процессора, в специальных регистрах, называемых регистрами отладки. Типичный процессор имеет 8 регистров отладки (по порядку с DR0 до DR7 соответственно), которые используются для установки и управлением аппаратных точек. Регистры отладки с DR0 до DR3 зарезервированы для адресов точек останова. Это означает, что вы можете использовать лишь 4 аппаратных точки одновременно. Регистры DR4 и DR5 зарезервированы, а регистр DR6 используется, как регистр статуса, который определяет тип события отладки, вызванного встречей точки останова. Регистр отладки DR7 по существу является выключателем (вкл/выкл) аппаратных точек останова, а так же хранит разные состояния точек останова. При установке специальных флагов в регистр DR7, вы можете создать точки останова в следующих состояниях: · Останов, когда инструкция выполняется по определенному адресу. · Останов, когда данные записываются по адресу. · Останов на чтение или запись, но не выполнение. Аппаратные точки останова обрабатываются таким же способом, как и программные, но их механизм находится на низком уровне. Прежде чем процессор попытается выполнить инструкцию, он сначала проверит, не установлена ли на адрес аппаратная точка. Он так же проверит операторов инструкции, не имеют ли они доступ к адресу, на который установлена аппаратная точка. Если адрес хранится в регистрах отладки DR0-DR3 и условия чтения, записи, или выполнения встречаются, прерывание INT1 приказывает процессору остановиться. Если адрес не хранится в регистрах отладки, процессор выполняет инструкцию и переходит к следующей, и эта проверка выполняется снова, и так далее. Аппаратные точки очень полезны, но у них есть некоторые ограничения. Помимо того, что вы можете выставить только четыре ваших точки в одно время, вы так же можете установить точку только на данные длинной 2 байта. Это может сильно ограничить вас, если вы собираетесь получить доступ к большому участку памяти. Как правило, для обхода этих ограничений вы можете использовать точки останова памяти.В отличие от программных, которые используют событие INT3, аппаратные точки используют прерывание 1 (INT1). INT1 случается для аппаратных точек останова и одноступенчатых событий. Одноступенчатый означает проход по порядку по инструкциям, что позволяет вам очень близко исследовать участки кода во время изменения наблюдаемых данных. Точки останова памяти являются не совсем точками останова. Когда отладчик устанавливает точку памяти, он меняет разрешения на регион, или страницу памяти. Страница памяти - это наименьшая размер памяти, которую обрабатывает операционная система. Когда страница памяти выделяется, у нее устанавливаются конкретные разрешения на доступ, которые указывают как эта память может быть доступна. Вот некоторые примеры разрешений на страницу памяти: · Выполнение страницы (page execution) Дает возможность выполнять, но выдает нарушение, если процесс попытается прочитать или записать данные на страницу. · Чтение страницы (Page read) Позволяет процессу только считывать со страницы; любая запись или попытка выполнения вызовут нарушение доступа. · Запись страницы (Page write) Позволяет процессу записывать на страницу. · Сторожевая страница (Guard page) Любой доступ к сторожевой странице возвращает единовременное исключение, и затем страница возвращается к своему первоначальному статусу. Большинство операционных систем позволяют вам комбинировать эти разрешения. Например, вы можете иметь страницу памяти, куда вы можете писать и читать, в то время, как другая страница может позволить вам прочитать или выполнить. Каждая операционная система так же имеет присущие функции, позволяющие вам запрашивать конкретные разрешения памяти в месте для особой страницы и изменять их, если понадобится. Источник: Gray Hat Python. Justin Seitz, Перевод: forum.reverse4you.org M. Chumichev
    7 баллов
  5. Скрипт: Видео: Таблица: DARKSOULS_03062017.CT
    6 баллов
  6. Cheat Engine сервер предназначен для удалённого взлома каких либо приложений, сервер располагается на целевом устройстве, а клиент подключается к нему по IP, после этого становятся доступны почти все функции стандартного Cheat Engine ☺️. Установка Cheat Engine сервера на Android: Особенности использования, написание скрипта:
    6 баллов
  7. Статью пишу первый раз , так , что где будет не понятно - спрашивайте Python под GHL флагом Часть 1 В этой статье (будет из нескольких частей) я полностью объясни и напишу рабочий автошот для игры Начну с введения: 1) Определимся с языком программирования , для меня пал выбор на язык python так как давно хотел его изучить начать писать на нем (язык очень простой , да и библиотек сторонних куча, что должно радовать)PS для вас может быть тот который хорошо знаете 2) представим как должна работать программа : Программа не как не воздействует на игру, не читает/ не пишет в память, не инжектится в код, а работает как стороннее приложение благодаря чему не доступна для анти-читов, т.е. бан в игре получить почти не реально! Программка сканирует цвет пикселей экрана в заранее заданной области, где обычно должен отображаться ник врага (по кому программа должна делать авто-выстрел), допустим цвет ника будет красный и должен появляться при наведении прицелом на врага, как только это условие соблюдается и в заданной области появляются пиксели заданного(красного) цвета то программа имитируя нажатие ЛКМ/ПКМ делает выстрел по врагу , задержка между выстрелами по желанию, и так далее.... 3) вообразим алгоритм программы : 1) программа обнаруживает ник противника (пиксельно) 2) программа имитирует выстрел Ну что ж , начнем : Сразу первый этап выполнять "круто" , начнем с малого , определим цвет пикселя под мышкой (компьютерной) . 1 этап: В этом нам поможет классная статья с хабрахабр (в комментариях он оставил ссылку на gamehacklab, явно кто-то из наших, я оставлю ссылку на статью ) PS рекомендую к прочтению Нагло скопируем код Воспользуемся его наработками Все замечательно , с малой задачей справились. 2 этап : Теперь мы осознали, что ник у нас "прямоугольный" и с одним пикселем можем не попасть в красные буквы Создадим дополнительно пару переменных (модернизируем программу под наши нужды) и получим такое: картинка Тут я использовал 5 пикселей чтобы наверняка определить ник точно : где x - это горизонтальная точка и от нее "отходим" влево и вправо Код программы : Теперь делаем скрин игры , определяем цвет ника , рисуем прямоугольники , радуемся , что программа работает и/или просто вводим мышкой по экрану.... PS конец первой части , оцениваем и обсуждаем , продолжение следует по мере возможности(скоро) ....
    6 баллов
  8. Многие из вас слышали такие понятия как AIM, автонаведение, автоприцел и тому подобное, когда прицел игрока автоматически наводится на какой нибудь объект. В видео показано как сделать такое на LUA, ассемблер ничем не будет отличаться, разве что кучей команд ?. В первых четырёх (включая пример) видео - создание и мелкие нюансы.. В 5 просто демонстрация. Патроны летят в цель, неровная камера - просто обновления и это не влияет. Попадание зависит от разброса оружия ?. Видео о поиске значений ♦️: Видео о создании и вычислениях ?: Видео дополнение ко второму (запись сломалась и потому пришлось доснять тут): Обзор первый: Обзор второй: Ну и скрипт на LUA:
    6 баллов
  9. Итак, начнем с самого начала Когда-то очень давно я начал играть в игру под названием Rocket League Импровизированая игра в футбол, где катаются машинки, со своей физикой и пр. Проиграв около года, все надоело и я решил посмотреть что есть у этой игры: Как оказалось апи для какой-либо статистики открытого нет (Имею ввиду то, которое поддерживается официальными разработчиками) Ну раз нет апи, решил сделать что-то элементарное, например найти структуру игррка (в данном случае машинки) На данный момент у игры нет античита, хотя он тут и не нужен вовсе Вообщем загорелся идеей, начал пытаться найти эту структуру Долгое время ковырялся, ковырялся, ничего не получалось То ли дело во мне, то ли грабли не едут Посмотрел движок игры, оказалось Unreal Engine 3 На UE3 вроде как бесполезно что-то искать руками, т.к поинтер будет с громадным количеством оффсетов и почти наверняка невалидным Посмотрел как реверсят игрушки на UE, и что-то не въехал с первого раза (даже с 5 не понял :DD) А суть была в том, что в Unreal Engine 3 можно хукнуть метод который передает все внутреигровые ф-ии которые использует в режиме реального времени Прочитал много статеек, посмотрел примеры и понял что хукают метод ProcessEvent Делают это с помощью дампа игровых классов, которые можно использовать для написания своего чита Собственно вот и дампер Тык Там уже есть заготовки для некоторые UE3, UE4 игр Нужная нам также имеется, осталось только сдампить Для дампа необходимо знать сигнатурки ProcessEvent GlobalNames GlobalObjects Собственно вот и скомпилированный дампер Сам дампер это длл которая инжектится в игру, ну а сама длл и вытягивает все нужные классы для дальнейшего написания Теперь к написанию... Создаем проект, подключаем к проекту sdk которое сгенерировалось на диске С Подключаем все нужные инклуды и пр. Точка входа для нашей длл BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: AllocConsole(); freopen("output.log", "w", stdout); printf("Dll Initialized\n"); DisableThreadLibraryCalls(hModule); CreateThread(0, 0, MainThread, hModule, 0, 0); // creates our thread break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } В длл создаем поток который будет хукать ProcessEvent и использовать внутреигровые функции DWORD WINAPI MainThread(LPVOID param) // our main thread { StartupApp(); printf("Inited\n"); ProcessEvent = (tProcessEvent)DetourFunction((BYTE*)ProcessEvent, (BYTE*)hkProcessEvent); return false; } StartupApp метод который по сигнатуркам ищет адрес GNames, GObjects bool InitializeObjectsStore() { auto address = FindPattern(GetModuleHandleW(nullptr), reinterpret_cast<const unsigned char*>(Signture), Mask); if (address == -1) { return false; } UObject::GObjects = reinterpret_cast<decltype(UObject::GObjects)>(*reinterpret_cast<uint32_t*>(address + 1)); return UObject::GObjects != nullptr; } bool InitializeNamesStore() { auto address = FindPattern(GetModuleHandleW(nullptr), reinterpret_cast<const unsigned char*>(Signture), Mask); if (address == -1) { return false; } FName::GNames = reinterpret_cast<decltype(FName::GNames)>(*reinterpret_cast<uint32_t*>(address + 2)); return FName::GNames != nullptr; } ProcessEvent это наш хук который мы будем использовать (Как происходит хук гуглим, detours lib в помощь) Теперь к основной части, наш метод hProcessEvent Не забываем указывать Typedef void __fastcall hkProcessEvent(UObject *pObject, void *edx, UFunction *pFunction, void *pParms, void *pResult); typedef void(__thiscall *tProcessEvent)(class UObject *, class UFunction *, void *, void *); tProcessEvent ProcessEvent = (tProcessEvent)FindPE(); void __fastcall hkProcessEvent(UObject *pObject, void *edx, UFunction *pFunction, void *pParms, void *pResult) { if (pFunction) { //Get Player* if (strcmp(pFunction->GetFullName().c_str(), "Function Engine.PlayerController.PlayerTick") == 0) pPlayerController = (APlayerController*)pObject; //Get Ball* if (strcmp(pFunction->GetFullName().c_str(), "Function TAGame.Ball_TA.OnRigidBodyCollision") == 0) pBall = (ABall_TA*)pObject; //Function TAGame.CarComponent_Boost_TA.EventBoostAmountChanged if (strcmp(pFunction->GetFullName().c_str(), "Function TAGame.CarComponent_Boost_TA.EventBoostAmountChanged") == 0) { Boost = ((ACarComponent_Boost_TA_EventBoostAmountChanged_Params*)(pParms))->Boost; } if (strcmp(pFunction->GetFullName().c_str(), "Function Engine.Interaction.PostRender") == 0) { Canvas = ((UInteraction_PostRender_Params*)(pParms))->Canvas; myPostRender(((UInteraction_PostRender_Params*)(pParms))->Canvas, pPlayerController, Boost); } } ProcessEvent(pObject, pFunction, pParms, pResult); } Этот метод срабатывает при каждом вызове игрой какой-нибудь ф-ии, будь то отрисовка, будь то создаение машинки или же простой выход в меню Осталось только найти нужный нам метод и путем сравнения этой ф-ии через pFunction->GetFullName() Перенаправить на наш код В данном случае я получаю Указатели на Игрока, Мяч, UCanvas (Который рисует все что возможно в игре) и эвент EventBoostAmountChanged, который срабатывает когда кто-то использует на карте буст Перейдем к методу myPostRender который при срабатывании рисует в игре количество буста у игрока и также линию от игрока к мячику void myPostRender(UCanvas* Canvas, APlayerController* player, ACarComponent_Boost_TA* boost) { //Проверка на валидность входных данных if (!Canvas || !player || player->bDeleteMe || !boost || Boost->bDeleteMe || boost == NULL) return; try { if (boost) { std::map<std::string, ACarComponent_Boost_TA*>::iterator it; //Есть ли игрок уже в map if (BoostMap.count(boost->Owner->GetFullName()) > 0) { //Обновляем игрока в map it = BoostMap.find(boost->Owner->GetFullName()); BoostMap.erase(it); BoostMap.insert(std::pair<std::string, ACarComponent_Boost_TA*>(boost->Owner->GetFullName(), boost)); } else { BoostMap.insert(std::pair<std::string, ACarComponent_Boost_TA*>(boost->Owner->GetFullName(), boost)); } } std::map<std::string, ACarComponent_Boost_TA*>::iterator i; for (i = BoostMap.begin(); i != BoostMap.end(); ++i) { //Опять проверяем на валидность if (!i->second->Owner || i->second->Owner->bDeleteMe || !i->second || i->second->bDeleteMe || i->second == NULL || i->second->Owner == NULL || !Canvas) { //Удаляем если не валиден BoostMap.erase(i); continue; } //Переводим 3D Координаты игрока через Видовую матрицу Canvas->Project в 2D FVector PlayerLoc = Canvas->Project(i->second->Owner->Location); if (i->second->Owner->GetTeamNum() == 0) //Blue Team { //Проверка на то, видем ли мы на экране точку в который нужно рисовать if (PlayerLoc.Z > 0) DrawTextToScreen(Canvas, string("Boost Amount: ") + std::to_string((int)(i->second->CurrentBoostAmount * 100)), PlayerLoc.X + 10, PlayerLoc.Y - 30, BLUE); } else { //Orange Team if (PlayerLoc.Z > 0) DrawTextToScreen(Canvas, string("Boost Amount: ") + std::to_string((int)(i->second->CurrentBoostAmount * 100)), PlayerLoc.X + 10, PlayerLoc.Y - 30, ORANGE); } } } catch(std::exception& e) { printf("Exception %s", e.what()); } } Итог: Разобраться в этом сразу конечно очень сложно, но методом проб и ошибок у вас должно получиться Ах, да, забыл показать конечный результат Вот... Отрисовку линий я убрал в коде, но там нет ничего сложного Теперь мы видим количество буста у тиммейтов и противников, что вполне неплохо Также можно придумать множество реализаций SDK
    6 баллов
  10. Сегодня начал серию видео уроков по написанию тренера на С++. В данный момент урок только один. Думаю раз в неделю(каждое воскресенье) будет добавляться по уроку. В данный момент, в первом уроке нового нечего нету и похожие уроки были на канале ГХЛаб, на канале товарища Coder и думаю много где еще. Но в планах наверно на третбем уроке перейти на немного другой тип тренеров(dll) и возможно уже там начнется что-то новое(но это не точно, уроков то масса, наверняка кто-то затрагивал те темы которые планирую я :)) Это первый видео урок, если можно конструктивной критики, может какие-то недоработки, ошибки и прочее... Сам пересмотрел уже несколько раз, пару косяков заметил в начале второго видео поправлюсь Всем спасибо Первый урок:
    6 баллов
  11. В видео про спавн врагов в ре6, во второй его части пользователь спросил: могу ли я сделать подобное для ре4, версия 1.1 Еще в феврале в 10-х числах начал искать. Как-то несколько дней что-то проверял, потом нашел зацепку, потом затянулось и только в марте снова взялся. Только сейчас дошли руки записать видео, скрипт пробный уже недели 2 готов был. Версия игры 1.1., это не Ultra HD Remaster или как он там в стим называется, но кажется в нем все так же работает, разве что указатели в других местах. Сделал пробный скрипт спавна врагов. Спавнит в упрощенном варианте, рядом с игроком. Если на уровне не предусмотрены враги, то возможен вылет при попытке спавна (возможно файл не загружен в памяти, а при создании объекта не проверяется, что не загружен). Как обычно работает на Tab. Сначала инициализирует массив со всеми структурами npc/enemy, прописано изначально только на врагов (0x12). При смене уровня обновляет массив заново. Можно убрать инициализацию цикла и создавать, заполняя данные вручную. По крайне мене когда я пытался, если спавнить не врагов а все иное, то вылет происходит, не сильно проверял почему, т.к. главной целью было спавнить врагов. видео Скрипт ссылка на файл http://s000.tinyupload.com/?file_id=08064413723196487564 Указатель на объект, который используется для спавна npc/врагов (и игрока единожды) 0x033F6EC4 +4 указатель на игрока +8 максимально возможно количество объектов +14 - последний созданный объект в каждом объекте +8 - предыдущий объект таким образом происходит полный обход всех объектов 0x009D3558 класс врага 0x009EF690 класс игрока если кому интересно, допишу подробнее информацию из заметок, что вел *оказалось записывал с отключенной функцией подавления шума, она сильно делала тише запись, но шумов не было. Когда усилил сигнал тут, то шумы очень сильно слышны были, подавил как мог в Audacity. Громкость не повышал аудиозаписи сильно, чтобы шумы не были уж слишком слышны.
    6 баллов
  12. Расчёт дистанции Расчёт угла Player/Map Расчёт Player_Velocity X,Y
    6 баллов
  13. Предлагаю видеоурок поиск указателя без отладчика. Прошу не жалеть коментов.
    5 баллов
  14. Всем Доброго времени суток. Давненько тут не появлялся. Вышла долгожданная компания Survival игры The Long Dark. Ломал чисто из идеалогически - хобби соображениях. Как и всегда буду благодарен в корректировках написания и прочего в скриптах. Жажда: Калории - Она же еда: Усталость: Холод: Жизнь: Бег: Все предметы в инвентаре по 25: Переносимый вес: Максимальный вес: (Увеличен с 40 до 100) Прочность одежды, ножей и прочего: Медицинские припасы не заканчиваются после использования: Может кому понадобится. На этом пока все, чего еще наищу - выложу. Повторюсь еще раз: Буду рад любым комментариям по корректировки написания (способа и грамотности) скрипта. С Уважением Александр.
    5 баллов
  15. Наверняка многим было интересно как же всё таки работает SpeedHack предоставляемый Cheat Engine, в этом видео рассказывается об этом: Кратко для тех, кто не хочет смотреть:
    5 баллов
  16. Возможность кооперативного прохождения сюжета: F.E.A.R. F.E.A.R. Extraction Point F.E.A.R. Perseus Mandate Для запуска нужна версия от GOG "F.E.A.R. Platinum" 1: перейти в папку "FEARXP2" 2: переименовать "StringEditRuntime.dll" в "StringEditRuntime_.dll" и "Default.archcfg" в "Default_.archcfg" 3: добавить "Default.archcfg", "StringEditRuntime.dll", "FEARXP2.cmd", "FEARServerXP.cmd" 4: запустить игру "FEARXP2.cmd" 5: Multiplayer -> Host -> LAN или через инет (нужно открыть порт), Bandwidth T3 6: Multiplayer -> Client Settings -> Player name: ник, CD Key: ник или случайный набор символов (должно быть уникально на игрока) 7: перейти в "FEARXP2\Config\ServerOptions", открыть "ServerOptions0000.txt" добавить вверху и сохранить: [Extra] SyncObjects=0 CoopMode=1 BotsMP=0 8: запустить сервер "FEARServerXP.cmd" 9: подключится к серверу, играть автор: vityacv тест: gmz написано на: С, i686-w64-mingw32-clang++ source: https://github.com/Vityacv/fearservmod dll: https://github.com/Vityacv/fearservmod/blob/master/bin/StringEditRuntime.dll default.archcfg: https://github.com/Vityacv/fearservmod/blob/master/extra/Default.archcfg FEARXP2.cmd: start /b FEARXP2.exe -userdirectory Config FEARServerXP.cmd: start /b FEARServerXP.exe -userdirectory Config
    5 баллов
  17. Второй урок готов! Третий будет сегодня чуть-чуть по позже К сожалению данный урок пришлось клеить из кусков, т.к. немного косячил Надеюсь в дальнейшем буду записывать целиком, с первого дубля
    5 баллов
  18. Friday the 13th - The Game Просмотреть файл Использование: Скаченный архив распаковываем в любое удобное для вас место. Запускаем игру, запускаем трейнер. Функции Трейнера: 1) Активировать трейнер. 2) Бессмертие. 3) Быстрое убийство. 4) Бесконечные ножи. 5) Бесконечные ловушки. 6) Без перезарядки умений. 7) Супер урон. 8) Маска. 9) Ускоренные атаки. PS: Сделано на СЕ... 5 раз переделывал что уж говорит о каком не будь fasm - так что комментарии тут излишни по поводу этой игры. Demo: Автор LIRW Добавлен 02.02.2018 Категория Трейнеры для PC игр
    5 баллов
  19. Выкладываю маленький хак. Кому интересно, берите играйте. Игра вроде популярная. Отдача / Чамсы. Использование: 1. Запускаем игру 2. После 1 ролика можно внедрять. P.S Инжектор не прилагаю, т.к. игра онлайн и у каждого свои методы внедрения. Тема переехала сюда
    5 баллов
  20. В этой теме можно узнать о том, как сделать полет по повороту камеры в 3D пространстве (лететь туда куда смотришь) и как сделать перевод числа в 360, если оно превышаем 360 или наоборот, ниже нуля. Перед просмотром видео лучше ознакомится с предыдущими темами, так как там показано как найти адрес персонажа. Скрипт- функция расчета ускорения из поворота: Скрип записывающий в ускорение игрока и вызывающий функцию выше: Видео: Часть 1: Часть 2: Часть 3:
    5 баллов
  21. DOOM 2016 Просмотр файла Использование: Скаченный архив распаковываем в любое удобное для вас место. Запускаем игру, запускаем трейнер. Именно игру, а потом трейнер. Функции Трейнера: 1) Бесконечная жизнь. 2) Без отдачи оружия. 3) Улучшенная точность. 4) Супер Прыжок. 5) Бесконечные патроны. 6) Супер скорость. 7) Заморозить таймер. 8) Бесконечные гранаты. 9) Бесконечный двойной прыжок. 10) Бесконечные поинты. 11) Заморозить время (временного уменя) 12) Проход по координатам сквозь стены,закрытые двери и так далее. 13) Скорострельность оружия. PS: Клавиши в трейнере парные до клавиши (O), зажимаем Shift и жмем клавиши указанные на панели трейнера. Работать должно на двух версиях игры. А то есть и на вулкане. Demo: Добавил LIRW Добавлено 04.02.2018 Категория Трейнеры для PC игр
    5 баллов
  22. Crysis x64 Просмотреть файл Использование: Скаченный архив распаковываем в любое удобное для вас место. Запускаем игру, запускаем трейнер. Функции Трейнера: 1) Без повреждений машины. - работает со всеми. 2) Бесконечная жизнь. 3) Быстрое убийство. 4) Бесконечная энергия. 5) Без отдачи оружия. 6) Максимальная точность оружия. 7) Бесконечные патроны. 8) Без перегрева оружия. 9) Без перезарядки дротика. Но и работает как скорострельность - так же на всех. 10)Бесконечная энергия прибора ночного видения. Demo: Автор LIRW Добавлен 02.10.2017 Категория Трейнеры для PC игр
    5 баллов
  23. Пум-пум-пум! Что же это за вкус!? Это вкус приключений и новой жизни с новым чатом! У нас появился канал в Discord. Теперь можно общаться в нормальном чате! Единственное и самое главное - нужно завести Discord-аккаунт и авторизоваться в нашем сервер через форум. FAQ по авторизации в Discord. А пока, если ты смелый, ловкий, умелый - можно попробовать перейти на сервер через вкладку Discord в верхнем меню: Подключение является нашей собственной разработкой, поэтому сейчас идет этап бета-тестирования. О всех багах и пожеланиях прошу писать в Обсуждение работы сайта и форума . Виджет будет слегка попозже Сам процесс подключения должен выглядеть следующим образом: Вы нажимаете на вкладку "Discord" Происходит перенаправление на форуму "Введите свои email и пароль" или зарегистрируйтесь Если вы не зарегистрированы - регистрируетесь и пробуете нажать кнопку на форуме еще раз, если вас не перенесло автоматически Вводите логин и пароль Discord и переходите на авторизацию Попадаете на форму аунтефикации (если попросят логин и пароль - то это логин и пароль дискорда) и подтверждаете, что согласны выдать форуму информацию по вашему нику и разрешаете вас пригласить к нам на сервер Автоматически перенаправляетесь на наш сервер ??? PROFIT Вы должны быть зарегистрированы в Discord чтобы попасть на сервер. Все ники и роли будут соответствовать форуму. В чат могут попасть только Пользователи и выше, т.е. нужно иметь от 20 сообщений на форуме чтобы увидеть ссылку на чат.
    5 баллов
  24. Bulletstorm Просмотреть файл Информация о игре: Дата выхода: 2011 Жанр: Action, Shooter Тип издания: RePack(от =nemos=) Версия: 1.0.7147 Русификатор звука: отсутствует Использование трейнера: Запускаем игру, потом запускаем трейнер и жмем клавиши интересующих опций. Функции трейнера: Numpad 1 - Infinite Ammo Numpad 2 - Infinite Magazine Numpad 3 - Add Special Points Numpad 4 - GodMode Демонстрация: Автор Shan0x228 Добавлен 19.08.2017 Категория Трейнеры для PC игр  
    5 баллов
  25. Привет. 4 года назад, для шифрованной игры потребовалось написать пользовательский тип данных, и с тех под пользуюсь этой возможностью в случае зашифрованных или просто нестандартных типов данных (например РПГмейкер с их +1 битом). Большая часть видео посвящена не столько самому созданию типа данных — там все просто обычный автоассемблер, сколько работе с ним: автоматическому добавлению для конкретной игры, динамическому изменению используемых данных внутри типа и в конце написание простого скрипта на «луа» используя в нем свой пользовательский тип. Заранее извиняюсь за кашель и скомканность местами - простужен.
    4 балла
  26. Всем доброго дня. Ломал издание от [Медиа-Сервис 2000]. Его можно найти на торрентах. В Steam или Uplay получить не выйдет. Выкладываю здесь поскольку в основной разделе нельзя. Итак: Соберу всё в одном. Ещё редактировал.(пора на проверку) InfiniteHealth: InfiniteAmmo: NoReload: SuperAccuracy:
    4 балла
  27. The Hunter Classic Просмотр файла Запускаем игру.. Запускаем трейнер. Функции: _1. Без перезарядки оружия. _2. Бесконечные патроны. _3. Нет задержки выстрела. _4. Без отдачи оружия. _5. Нет колебания оптического прицела. _6. Умножена кратность оптического прицела в 3 раза от стандарта. Добавил LIRW Добавлено 24.06.2019 Категория Трейнеры для PC игр  
    4 балла
  28. В более-менее приличных онлайн играх, сидят дядьки, которые получают хорошие бабки НЕ за то, чтобы всякие noob'ы обходили их защиту) Соответственно, чтобы быть андетект годами, ты должен быть, как минимум, на одном уровне знаний и опыта с ними. Исходя из твоих пожеланий, ты должен обладать следующими скиллами: начиная от - ты должен свободно читать чужой код (на плюсах, т.к. в основном все движки написаны и пишутся на нём) и при необходимости, быть в состоянии отрефакторить. заканчивая - ты должен хорошо знать OSI, ну или хотя бы TCP/IP, все сопутствующие протоколы, как работают, что происходит на каждом уровне. Владеть акулой на более-менее уровне (фильтровать, разбирать, писать диссекторы, кастомизировать гуи и т.п.). Подтянуть шифрование (хотя бы основные виды), ну и владеть отладчиком + дизассемблером. Очевидно же ?
    4 балла
  29. Предыдущая тема (2013 г.) по этой игре. СкриптЫ: Numpad 0 Resources: Numpad 1 God Mode: Numpad - OHK: Numpad 2 Experience: Видео: Табличка: BHero2.CT
    4 балла
  30. Prey Просмотреть файл Использование: Скаченный архив распаковываем в любое удобное для вас место. Запускаем игру, запускаем трейнер. Функции Трейнера: 1) Бесконечная жизнь. 2) Быстрое убийство. 3) Бесконечный костюм. 4) Бесконечные патроны - предметы. 5) Psi 6) Бесконечная выносливость. 7) Включение перемещения по координатам. В общем функция эта, что бы через стенки бегать.. Управление на Numlock Demo: Автор LIRW Добавлен 15.12.2017 Категория Трейнеры для PC игр
    4 балла
  31. Описание: Dungeon Lords v_1.5 + 22 Сделано на СЕ 6.6 использование: Запускаем трейнер Запускаем игру Нажимаем клавишу нужной функции (игра не любит сворачивания, по этому запоминаем, записываем, или распечатываем. Совпадающие клавиши с трейнером переназначить, или отключить) Numpad 1 - Беск жизнь, кислород, нет отравления ядом. Numpad 2 - Нет урона любой магией (для включения зайти и выйти из инвентаря) Numpad 3 - убийство с одного удара Numpad 4 - Нет износа доспехов. Numpad 5 - беск. кристалы, зелье, магич.заряды Numpad 6 - очки не менее 10000000 Numpad 7 - беск замедление игры (для включения используем кристал, или зелье времени) Numpad 8 - увеличение скорости игры (для включения используем кристал, или зелье времени) Numpad 9 - беск. защита от огоня, льда Numpad 0 - меньше демонов,демоны не спавнятся . (только те, что есть в локации остаются) U;I;O;P - время суток (соответствует указанным значениям) Numpad / - опыт плюс 2500 Numpad * - опыт плюс 100000 Numpad - - очки + 50000 Numpad + - Деньги + 50000 Home - быстрый уровень скилов = 10 (одно нажатие при распределении) End - быстр. уровень характ -к = 100 (одно нажатие при распределении) PgUp - добавляет полезные -хорошие вещи PgDn - не закрываются двери с таймером. Так же останавливает платформы в бассейне с кислотой. З.Ы. В архиве присутствуют файлы для замены дефолтных маркера игрока, стрелки компаса и изменения цвета отсчёта вскрытия замков. ReadMe присутствует. Treyner&Mod.rar
    4 балла
  32. В этой теме можно узнать как сделать управление запускаемыми снарядами в Terraria и сделать отправку их положения на сервер (Что бы другие игроки видели как летает снаряд, простая замена условия в коде) Скрипт: Видео:
    4 балла
  33. Call of Duty Modern Warfare 3 Просмотреть файл Использование: Скаченный архив распаковываем в любое удобное для вас место. Запускаем игру, запускаем трейнер. Именно игру, а потом трейнер. Функции Трейнера: 1) Бесконечная жизнь. 2) Убийство с одного выстрела. Данная функция, убивает всех и союзников и врагов. 3) Без перезарядки оружия. 4) Бесконечные патроны. 5) Максимальная точность оружия. 6) Без отдачи оружия. 7) Скорострельность. 8) Режим полета сквозь стены. 9) Нет тряски при уроне. PS: Трейнер работает как в SP так и в спец операциях. Естественно пробовал не на лицензии Demo: Автор LIRW Добавлен 28.01.2018 Категория Трейнеры для PC игр
    4 балла
  34. Warface RU Просмотр файла Возможен бан в игре. Вы используйте хак, на свой страх и риск. Перед использованием, ознакомьтесь с ЭТИМ Поддерживаемые ОС: Win7+ (x32 , x64) Поддерживаемые античиты: MRAC Версия от 01.11.19 (Последняя) Undetected Последнюю версию хака, можете скачать ТУТ. Добавил JustHack Добавлено 03/18/18 Категория Трейнеры для PC игр
    4 балла
  35. Fixes: Disassembler: Several disassembler instructions had a comma too many or too few ,fixed those Disassembler: Fixed the description for ret # Disassembler/Debug: Fixed the address that is being edited when a breakpoint hits while editing an instruction Assembler: Fixed assembling reg*2/4/8+unquotedsymbol Plugin: Fixed the SDK for C plugins that use the disassembler callback Hotkeys: Fixed the attach to foreground hotkey Memory Scan: Fixed the percentage scan Memory Scan: Fixed a rare situation that could cause an error Memory Scan: Simple values now works with groupscan Memory Scan Lua: Scanfiles now also get deleted if the memory scan object is freed before the scan is fully done Fill Memory: Now allows 64-bit addresses Structure Dissect: Fixed the popupmenu "change type" so it now affects all selected entries instead of just the first PointerOrPointee window: Fix the debug pointer or pointee window button text when using access instead of writes GUI: Fixed and restored the DPI Aware option in setting GUI: Some DPI fixes/adjustments here and there Graphical Memory view: Fixed DPI issues Symbolhandler: When the symbolhandler now waits till it's done, it won't wait for the structures to be parsed anymore Additions and changes: Lua Engine: Added autocomplete DLL injection: On DLL injection failure CE tries to fall back on forced injection methods Assembler: Added multibyte NOP Plugins: Plugins can now have side dll's that are statically linked in their own folder (Windows 7 with updates and later) Debugging: Improved the FPU window editing when single stepping, allowing you to change the FPU registers Debugging: Threadview now updates when single stepping and cnanges made there will affect the currently debugged thread (before it didn't) Debugging: Added Code Filter. This lets you filter out code based on if it has been executed or not (Uses software breakpoints) Debugging: Added an option to chose if you wish to break on unexpected breakpoints, and if CE should break on unexpected breakpoints, or only on specified regions (like AA scripts) Disassembler: The comments now show multiple parameters Pointerscan: Add option to allow negative offset scanning Pointerscan: Add extra types to the display Advanced Options/CodeList: Now uses symbolnames Tutorial Game: Added a levelskip option when you've solved a step Tutorial Game: Added a secondary test Compare memory: Added a limit to the number of address values shown per row (can be changed) Address List: When the option to deactivate children is set, the children will get deactivated first Memory Scan: Add a lua script in autorun that lets you specify which module to scan lua: ExecuteCodeLocal (Let's you execute code in the target and pass parameters) Added 2 new parameters to getNameFromAddress (ModuleNames and Symbols) Added addModule and deleteModule to the symbollist class Added the ModuleLoader class which can force load dll's Fixed endUpdate for the listview https://github.com/cheat-engine/cheat-engine/releases/tag/6.8.2
    4 балла
  36. Far Cry 2 Просмотр файла Использование: Запускаем сначала игру, а в главное меню игры (либо в уже начатой игре) запускаем трейнер. Функции: 1. > Бесконечная жизнь. 2. > Бесконечные выносливость. 3. > Без перезарядки оружия. 4. > Бесконечные патроны. 5. > Бесконечные шприцы. 6. > Бесконечные гранаты. 7. > Бесконечные мины. 8. > Добавить алмазов. 9. > Без отдачи оружия. 10. > Точность оружия. 11. > Без перегрева оружия. 12. > Скорострельность оружия. (работает у всех) 13. > Неограниченная дистанция выстрела. 14. > Прочность оружия. 15. > Супер прыжок. 16. > Супер скорость. 17. > Нет урона автомобилю. 18. > Разблокировать магазин 19. > Отключения эффекта малярии, что бы выходить за пределы карты. Ps: В большинстве функций, реализовано (без вычитания из существующего значения) а то есть, надо с собой носить хотя бы одну гранату или патрон. Добавил LIRW Добавлено 04.12.2018 Категория Трейнеры для PC игр
    4 балла
  37. Far Cry 4 Просмотр файла Функции: Бесконечная жизнь. Бесконечная броня. Бесконечная энергия. Бесконечный кислород. Бесконечные гранаты. Бесконечные патроны. Без перезарядки оружия. Максимальная дальность выстрела. Супер перезарядка оружие. Супер точность на всё оружие. Без отдачи оружия. Бесплатный магазин. Невидимость. Разблокировать магазин. Разблокировать слоты оружия. Супер скорость бега. Супер прыжок. Нет качание оптики во время прицеливания. Супер увеличение оптики. Бесконечное время миссии. Не надо натягивать лук при стрельбе. Скорострельность автоматического оружия. Прицел при выстреле не пропадает. Крафт любым предметом. Нет урона автомобилю. Нет лимита мин. Нет лимита С4 Супер дистанция броска С4 Умноженный урон оружия в 500 раз Бесконечные поинты на прокачку умений. Бесконечные деньги. Бесконечный шприц. Бесконечное время эффекта после него. Много очков кармы. Супер очки при убийствах. Ps: Запускаем сначала игру, а в уже начатой игре (не в меню игры) а уже начатой игре - запускаем трейнер. Так как там игровой модуль(dll) упакован vmprotect и сверяется во время загрузки игры его контрольная сумма, а обхода подобного я не у кого не видел в трейнере. Клавиши в трейнере парные.. Зажимаем клавишу insert и жмем клавишу указанную на панели трейнера. Каждая функция, под своей буквой - цифрой. Добавил LIRW Добавлено 18.11.2018 Категория Трейнеры для PC игр
    4 балла
  38. https://mega.nz/#F!SvQASAZY!Z_zw9_HjTobuhmjijKLoBA видео можно смотреть прямо с Меги, не скачивая
    4 балла
  39. Редактировать свой пост я к сожалению уже не могу По этому как и обещал, 3й урок из серии по программированию тренера на С++ :))
    4 балла
  40. Короче, проблема была при открытии контекста во время отлова события. А именно, присвоение поля contextflags: ctx.ContextFlags = CONTEXT_ALL; Когда так делаешь, происходит краш игры, если присваивать только на получение из контекста только отладочных и целочисленных регистров, вылет игры не происходит. Как думаете, почему так? Я присвоил так: ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS | CONTEXT_INTEGER И все заработало. То есть ошибка была именно там. Видимо это надо разбираться в механизме получения контекста во время отладочного события. Я нашёл очень интересную книгу про это, если кому нибудь надо будет, я поделюсь: Книга Там хорошо расписано про флаги контекста, как нужно делать. ЗЫ это не реклама, просто если у кого будет такая же проблема, прочитайте фрагмент книги по ссылке.
    4 балла
  41. S.T.A.L.K.E.R. Clear Sky Просмотр файла Использование: Запускаем сначала игру, а в главном меню игры (либо в уже начатой) запускаем трейнер Функции: Бессмертие Бесконечная броня Бесконечная выносливость Нет кровотечения Нет радиации Без пси излучения Бесконечные патроны Без отдачи оружия Максимальная точность оружия Увеличенное перекрестие прицела Подсветка предметов на карте (которых почти и нет) Убийство с одного выстрела Невидимость Супер прыжок Бесконечные деньги Супер нож Нет голода Увеличенная защита брони Бесконечный вес Оружие не ломается Добавил LIRW Добавлено 02/12/18 Категория Трейнеры для PC игр
    4 балла
  42. Dead Space 2 Просмотр файла Использование: Скаченный архив распаковываем в любое удобное для вас место. Запускаем игру, запускаем трейнер. Именно игру, а потом трейнер. Функции Трейнера: 1) Бесконечная жизнь. 2) Бесконечная энергия. 3) Бесконечный кислород. 4) Бесконечные кредиты. 5) Бесконечные sp. 6) Без задержки времени после выстрела. 7) Увеличенный урон в 50 раз. 8) Без перезарядки оружия. 9) Бесконечные патроны. 10) Бесконечное время на взлом. PS: Бесконечные патроны работают только тогда, когда они в рюкзаке есть. А то есть без вычитания из существующего числа и для каждого вида оружия надо таскать хотя бы 1 патрон. Demo: Добавил LIRW Добавлено 01.03.2018 Категория Трейнеры для PC игр
    4 балла
  43. В этой теме можно узнать как сделать полёт на определённые координаты исходя из координат точки и координат персонажа. Для созданий этого скрипта надо иметь у себя адрес персонажа, потому лучше еще прочитать предыдущую тему. Скрипт: Видео:
    4 балла
  44. Terraria лицензия, потому смещения и адреса на репаках могут отличатся. Для начала, нам нужно найти все необходимые адреса, как это сделать думаю понятно, адрес игрока можно найти по здоровью и сделать указатель на него. У меня получился вот такой указатель: Для вставки в скрипт: [[[Terraria.Main::DoDraw+375]]+08+[[Terraria.Main::DoDraw+37B]]*4] Принцип такого указателя: В Terraria.Main::DoDraw+375 в коде вписан адрес структуры с игроками Таким образом в Terraria.Main::DoDraw+37B записан адрес хранящий номер активного игрока Далее идет прибавление +08 до первого элемента, потом номер игрока умножается на 4, так как 1 адрес занимает 4 байта, вот и получается адрес игрока. Теперь необходимо найти структуру содержащую адреса существ, думаю это тоже понятно как найти, у меня вот такой адрес: Для вставки в скрипт: [[Terraria.Main::UpdateAudio+4F7]], по такому же принципу как и 2 адреса сверху. Теперь мы можем начать писать скрипт коллизии, суть скрипта в организации проверок координат касания углов персонажа и координат углов существа. Вот примерная схема этого действа: Желтым изображены виртуальные полигоны коллизии, то есть промежутки в которых скрипт делает проверку, попадает ли точка игрока в них. Самый верхний желтый полигон используется для другой проверки, о которой будет сказано ниже. Итак, у нас есть адрес игрока, и предположительно адрес существа, для проверки существ нужно сделать цикл, перебирающий их и проверяющий координаты каждого: Как тут указано, тут так же проверяется совпадение адреса существа в цикле с адресом существа для которого делается коллизия, это сделано для того что бы не было самоколлизии, то есть столкновения существа с самим собой. Так же имеется проверка на активность, есть ли вообще этот объект, или он отсутствует или отключен. Теперь, так как у нас имеется цикл перебора существ, мы можем сделать вычисление крайних точек существа. Координаты существа в игре - это его крайняя левая нижняя точка. Так же у существа есть размер, и исходя из этих данных игра центрирует точку координат перед выводом существа на позицию в карте. Координаты в структуре существа отображают именно крайнюю левую нижнюю точку. Делаем вычисления после цикла и записываем в метки координаты точек и расстояние: Теперь можно написать проверки. Данный код проверяет положение точек 1 существа, относительно другого, при этом проверяется как X так и Y, иначе коллизия будет размером во всю карту, а не только по размерам существа, из за этого в каждом блоке по 4 проверки. После проверок в метку записывается состояние персонажа, слева он, сверху, справа или снизу. Следующий код делает проверку значения записанного в метку 1/2 1/2 и относительно этого выполняет действия с персонажем, убавляет его координаты или прибавляет на еденичку, создавая таким образом координатную коллизию, не пропускающую игрока сквозь существо. После выполнения данного скрипта, мы получаем коллизию, с учетом того, что если существо выше персонажа или наоборот, то персонаж или существо не будут вдавливать друг друга в землю, а вот толкнуть вверх могут. Теперь о том, зачем было использовать в скрипте полигон коллизии расположенный в самом верху. Если игрок попадает в тот полигон своей нижней стороной, то в таком случае делается проверка и в метку записывается значение: Если сделать скрипт без этой проверки, то персонаж на существе стоять не будет, то есть он будет висеть на нем с анимацией падения, и при слезании получит огромный урон, так как считается что он падает. Что бы избежать такого недоразумения находим функцию проверяющую стоит игрок на земле или нет, и вот как раз тут и пригодится нам наш полигон коллизии. В функцию делаем инъекцию кода параллельно с основным: Таким образом персонаж будет стоять на существе как на земле, и при слезании не получит огромный урон. В скрипте так же имеются проверки на тип существа, и изменение его проверочного размера. Вот такой вот получается скрипт целиком: Этот скрипт должен на входе получить адрес структуры для проверки. Он выполняется 2 раза, 1 раз делает коллизию игроку, а 2 раз делает коллизию тому адрес чего получен дальше. В моём случае этот адрес - адрес существа. Этот скрипт вызывается другим скриптом с потоком: Вот эти сложные махинации создают коллизию между игроком и существами, и между самими существами. Картинки работы: Скрипт работает - существа не могут пройти сквозь друг друга и игрока: Скрипт отключён:
    4 балла
  45. Minercraft 1.7.10, java x64 Проектный Для начала необходимо найти сам адрес игрока, сделать это на сервере проще всего по векторному ускорению игрока. Оно имеет тип doble. Делать мы это будем следующим образом: Встаём на земле, ищем неизвестное значение, залезаем в воду - ищем увеличилось, и так далее. Вместо залезания в воду можно прыгнуть или еще как либо изменить ускорение игрока по вертикальной оси. Предположим нам удалось найти адрес структуры игрока таким образом. У нас есть адрес игрока, делаем все так же как и при простом поиске указателя, ищем полученный адрес с помощью поиска в hex 4 байта, у нас найдет очень много значений. Отсеиваем их пока не останется около 30 Ставим бряк на доступ к найденным адресам и находим тот в котором будет инструкция со смещением. Мы находим адрес структуры в которой лежит адрес игрока, он то нам и нужен, делаем анализ структур Наш адрес игрока лежит по смещению +84. Дальше указатели искать бессмысленно, лучше вывести сигнатуру из части этой структуры, которая всегда будет одинакова и уникальна, сделать это можно из первых значений в структуре. Это - размеры отображаемого пространства, проверить можно изменив одно значение: Исходя из этого можно понять что эти адреса всегда будут уникальны, потому можно смело сделать из этого следующую сигнатуру, у меня получилась вот такая: C0 02 00 00 10 27 00 00 56 03 00 00 Осталось лишь написать скрипт который будет записывать в метки нужные нам адреса, так как 64x процесс CE думает что указатели по 8 байт, и при простом переходе по указателям получается невесть что, потому попробуем сделать запись адресов через скрипт. Получившийся у меня скрипт: Таким образом - скрипт ищет адрес структуры, потом вызывает поток который запишет адреса в метки и вернется. Как выглядит у меня: Активируем: Ваши значения в структуре могут быть иными, потому сигнатура может не работать, например из за иного разрешения экрана, потому надо найти её самостоятельно. Использовать эти адреса можно как угодно, например сделать моментальное ломание любых блоков на сервере, в том числе и коренной породы. Надо учитывать что адреса меняются после перехода в другой мир или при смерти игрока, потому надо перезапускать поиск. Я считаю что есть способы более удобные, но это пожалуй для 32 битной java, а здесь лучшего способа чем этот мне пока найти не удалось.
    4 балла
  46. Добавлен новый виджет кода, с поддержкой CE AutoAssembler и CE Lua! Тепрь подсветка работает и на скрипты Cheat Engine: Фактически переписали стандартный виджет код Code, добавили пару доп языков и написали парсер для нашего любимого CheatEngine. Все собственной разработки, поэтому конечно есть баги и т.д, поэтому старый виджет кода пока не удаляется. Плюс все старые виджеты кода пока будут редактироваться без поддержки CE, думаю обновим чтобы подгружалось в новый виджет. Ну и, возможно, в будущем нас ждем дифференциация подсветки синтаксиса и инлайн-код Новый виджет кода можно найти вот тут (если этой кнопки нет - сбросьте кеш браузера):
    4 балла
  47. Ссылка на тему, про которую говорю в видео - ТЫК. Скрипт "Teleport": Видео: Табличка: HMA.CT
    4 балла
×
×
  • Создать...

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

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