-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
О стабильности CE 7.2, точке входа и выходе видео
MasterGH прокомментировал MasterGH запись блога в Блог MasterGH
-- По имени записи local memrec_unical_description = 'Читы' if not getAddressList().getMemoryRecordByDescription(memrec_unical_description).Active then print("Таблица не подходит для версии этой игры") end -- По id записи (смотреть id записи текстовым редактором) local memrec_id = 2 if not getAddressList().getMemoryRecordByID(memrec_id).Active then print("Таблица не подходит для версии этой игры") end -
О стабильности CE 7.2, точке входа и выходе видео
MasterGH опубликовал запись в блоге в Блог MasterGH
Прошлая точка входа запускающая активирующий скрипт не хотела работать, если запустить гигантский трейнер (сгенеренный на CE), а потом игру. Для работы трейнера точка входа теперь задается вот таким образом после генерации кода трейнера Подробнее в исходниках (лучше смотреть позже, после просмотра видео, которое еще готовится) gta3.CT У версии CE 7.2 есть к сожалению баги. 1. При генерации трейнера нужно вручную править высоту надписей — надписи срезаются. 2. Количество нопов, если прописывать как "nop 7"в АА, вроде, на x64 совсем не работает, только на x32 так можно писать нопы. Что получилось сделать. Сгенерить гиганский трейнер. При подключении к процессу автоматически включается главный скрипт. Работает он с часто обращаемой инструкцией. Извлекает поинтер на главного игрока. И далее по значениям меток может выполнять читы. А сопряженные скрипты могут в метки записывать активацию или использовать поинтер на главного персонажа на инструкциях урона для, например, onehit kill. В активирующем скрипте предполагается работа с оффсетами структуры персонажа и регистрируемыми метками. Например, в структуре можно еще штук 10 оффсетов найти через большой бряк на всю структуру. Значит еще +10 новых меток можно завести в активирующем скрипте и +10 АА скриптов, которые по этим меткам что-то включают.... Переносимость на разные игры. В принципе "скелет" АА скриптов показан в исходниках и ожидается, что в этом основная фишка. По идее меняется: процесс, оффсеты, сигнатуры, регистры, инструкции, иконка, заголовок. Для иной игры придется модифицировать CT таблицу и сгенерировать трейнер. Если сравнивать, например, с созданием трейнеров на C++. Оффсеты — самое главное и поинтер на структуру, и сигнатура, которая поинтер вытащит. И трейнер получится меньший по размеру. Но на CE уже готово много, а результат фактически один и тот же — запись по оффестам с разным user interface или вообще без него. -
Точка входа в работу читов на Cheat Engine на следующем видео будет начинаться с активирующего скрипта. Таблицу с читами по принципу активирующего скрипта я покажу на видео. В нем будет об общем принципе написания таблицы на CE и расширении её с большим количеством опций + фильтр свой/чужой через функцию commonalities + вынос адреса начала структуры + запись по оффсетам от начала структуры и т.п. "Активирующий скрипт" — главный скрипт, который вытаскивает адрес начала структуры игрока и помещает его в зарегистрированную метку. Также активирующий скрипт содержит однобайтовые регистрируемые метки читов, по которым происходит запись по offsets от начала структуры. По меткам другие скрипты записывают однобайтовые значения 1 или 0. Характерно для активирующего скрипта большой размер, много регистрируемых однобайтовых меток и активируется он до запуска читов, чтобы метки успели зарегистрироваться и их "увидели" другие скрипты. Руководство. Как запустить так называемый активирующий чит до активации каких-либо читов автоматически.
-
Видео 3. Запись максимального значения
MasterGH прокомментировал MasterGH запись блога в Блог MasterGH
-
Начало через минут 20, как трансляция. Доступны комментарии в реальном времени. Не стрим.
-
Сложность: 1/5. В этом видео рассматривается способ взлома игры "Удаление инструкций" (noping). С помощью этого способа игровое значение не будет перезаписываться игрой, потому что в игре удаляется инструкция записи значения.
-
Сложность: 1/5. В этом видео рассматривается самый простой способ взлома игр "Заморозка значения". Ссылка на скачивание Cheat Engine Ссылка на типы данных
-
К сожалению, у меня нет времени. Попробуйте ждать ответа от пользователей форума.
-
Запрос на unity global-metadata.dat вывел на интересное обсуждение , а также на видео использования Il2CppDumper. Рекомендуют разрабам использовать свою обфускацию или даже использовать Unity не для кибер-спортивных игр. Хотя и так ААА-студии, т.е. те которые делают ААА-игры выбирают Unreal Engine чем Unity судя по данным некоторых источников. Последняя для инди и мобилок, и шире по функционалу для VR. В принципе il2cpp я еще ни разу не дизассемблировал. Наверняка, так же как и с моно можно грузить ассеты с комилированной dll-кой от cpp, и которая сможет добавить свой класс поведения от того же Monobehavior на объект контроллера персонажа или на его камеру, чтобы сделать, например, чит на прыжок, полет камеры или любой другой... Кстати еще нашел Il2CppInspector
-
Какая игра? Пробовать ставить CE более старую: 7.1, 7.0, 6.8.3 ... Я очень давно не использовал "Mono Dissector". Польза от него не сильно-то большая. Можно и обычным способом найти адрес, найти инструкции и исправить код по сигнатуре. Если в билде есть mono, то можно дебажить в VS++ в райнтайме по сокету через локальный порт. Сделать патч сборку на Unity движке, которая может изменить до мелочей весь игровой процесс. Поменять и встроить все-что угодно от логики до контента. Я даже не знаю, кто сейчас на Unity выпускает сборки с Mono, даже с обфускацией, когда давно есть режим сбори il2cpp, превращая код в C++. Там уже никакой Mono Dissector не должен работать.
-
Не отправляйте doKeyPress(VK_F) лишнее количество раз, т.е. пока по адресу не поменяется значение на новое. Проверяйте отключился ли системный процесс. Проверяйте существование адреса (если нужно). Проверяйте растет ли объем занятой оперативной памяти или насколько быстро. Если да, то делать чистку через сборщик мусора. Возможно, подойдет и SikuliX для автоматизации действий без обращения к памяти процесса. Распознаются изображения на экране и по ним совещаются действия и в том числе отправка нажатий.
-
Вполне читерская программа Sikulix Помощник для нахождения отличий Исходник: Картинки для тренировки Игра Sikulix Документация Туториалы Sikulix умеет: ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата); читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживать и перетаскивать; перемещаться по окнам по названию процессов; сохранять скриншоты в том числе определенные области; показывать много разных диалогов: ввода, тултипов, сообщений; сравнивать изображения и находить отличные области (пример выше); поиск элементов по маске; поиск групп элементов и перебор их; создание гайдов или руководств Из наиболее интересных применений: 1) в играх где необходим поиск графических элементов с действиями (кликеры, поиск отличий или поиск/подсчет элементов, маджонги и другие); 2) нажать на найденных элементы(кнопки, чек-боксы); 3) найти текстовое значение, перевести в число, посчитать; 4) ожидает выхода человека из скайпа (или что-то вроде мониторинга чатов); Ну и так далее...
-
Примеры на C#: Принцип связан с условием движения персонажа, временем, углом в радианах, координатами персонажа и некоторыми тригонометрическими функциями. Получается что-то, вроде, двух одновременных движений вперед и относительное влево-вправо по дуге. Ключевые слова для поиска: "camera bob", "walk camera"...
- 2 ответа
-
- 1
-
-
Я решил рассмотреть три новые функции: Пользовательские типы данных в hex-окне Фильтр на окне определения адресов Поиск данных в окне Tracer 1. Пользовательские тип данных в hex-окне Пример как сделать: Фильтр на окне определения адресов 3. Поиск данных в окне Tracer Обычный поиск, как на прошлых скринах Примеры Ну и более интересная версия перебора и одновременного выделения записей. Здесь нужно открыть окно "Трейсера" и рядом в Lua окне писать свои условия в функции "Compare()", "PrintData()", Selected() Документация Для вывода referencedBytes из трейслога можно использовать byteTableToDword(referencedBytes) (смотрим документации выше) получая из TfrmTracer.Entry[index].referencedBytes или в строке поиска у Трейслога вбить byteTableToDword(referencedBytes) > 0 and print(string.format("0x%08X - 0x%08X", RIP, byteTableToDword(referencedBytes))) == 1 Практическое применение Больше всего могут интересовать реальные практические примеры. Если будет время, желание может быть сделаю, а так просто общий обзор.
-
Старая, неактуальная ммо 3
MasterGH прокомментировал roma912 запись блога в Начинаем постигать основы
Не нашел кода, который рисует 16x16 иконки. Может я проглядел. Я думаю, можно взять код, который рисует стрелочку... и после него сделать цикл с его участием, т.е. им же иконки ресурсов нарисовать. Куски по 1024x1024 разбиваются, скорее всего, из-за dds -формата, большой текстуры и оптимизации. Возможно, поддержка старых видео карт, на которых большие текстуры не залезут. p.s. Картинки не залиты на форум. Будет очень жаль, если пропадут со временем. -
Наткнувшись на тему вспомнил, что не все написал. В прошлом посте блога рассматривал бряк через DBVM. К сожалению, та версия dbvm из поста блога пропускала очень много инструкций и практически смысла нет её юзать. Например она определяла 16 инструкций, когда их было несколько тысяч, т.е. например 500 оффестов и на каждой по 10 инструкций. По DBVM надо, конечно, писать Дарк Байту, но желания нет. Так вот. Не только с DBVM можно ставить бряки на участок памяти. Есть еще тип брейкпоинтов page exceptions. О нем давно-давно известно и он как на ладони, но почему-то я пропустил его, когда искал оффсеты в структурах С ним можно работать с lua и без. Ловит огромное количество инструкций. Желательно мощное железо, т.к. игра скорее всего будет очень тормозить по 2-5 fps. Но на короткий запуск сойдет. 5 секунд и достаточно для снятия логов. На пару действий в игре тоже сойдет: выстрел или пермещение персонажа, прыжок или вообще ничего не делаем просто снимаем логи. 1) способ поставить бряк из окна памяти. Подопытная программа "Tutorial-x86_64.exe" Здесь видно, что размер 720 байт Логи из окна инструкций CE 2) Способ через Lua (подробнее в документации) debug_setBreakpoint(structure_address, sizeMemory, bptAccess, bpmException, onBreakpoint) P.S. Я написал про два способа установки брейкпоинта на множество адресов без DBVM. Вручную можно ставить такие брейкпоинты, но дальше уже кропотливый просмотр на предмет того чем это может помочь. Это может помочь определить типы данных и помочь прикинуть размер структуры, а также найти активные оффсеты. Можно на Lua автоматически определять активные offsets по базовому адресу структуры и эту структуру создать и заполнить в dessectData. Если будет время напишу скрипт.
-
Нет альтернативы в виде одной команды. Можешь посмотреть интеловский мануал, раздел инструкций обмена данных. Зато есть альтернативы с несколькими инструкциями. Например, использовать третий "свободный регистр" xmm с инструкцией mov-подобного перемещения. Если регистр занят, то можно использовать адрес памяти. Есть интересный вариант с двумя регистрами и тремя инструкциям, когда на CPU поддерживает набор инструкций AVX. vpsubd xmm0, xmm1 vpaddd xmm1, xmm0 vpsubd xmm0, xmm1, xmm0 Также можно через xor подобную инструкцию.
-
Это понятно. Ты попробуй узнать какие байты, в каком модуле и по каким смещениям менять. Чтобы узнать тебе нужен дизассемблер arm, если там на so файлах. Если там java, то ява декомпилятор и компилятор. Если там mono, то декомпилятор и компилятор .net модулей. Это будет так сложно, что может не быть смысла патчить апк. А вот сейв-вайлы из эмулятора более просто. Так же есть рут хаки на иннапы, для тех кто не сделал защиту против них. localhost На видео пример
-
Чтобы летел вперед нужно найти адрес координат камеры и адрес кватерниона. Этот кватернион умножаем на нормализованный свой эйлеров угол смотрящий по глобальной оси координат "вперед" (например это 0X-ось), который умножаем на скорость движения и дельту времени между кадрами отрисовки. Скорость движения для W положительная, а для S отрицательная. У игрового объекта есть позиция X,Y,Z и углы кватерниона X,Y,Z,W. К позиции прибавляем нормализованный вектор оси вперед. Возьми например 0,1,0. Этот код на C# на CE Lua переписать с таймером и горячими клавишами. Посмотреть как работает.
-
Перепатчить апк — это непросто. Если приложение сделано на Unity без il2cpp компиляции и без обфускации, то может еще прокатит. Java (скомпилированный) может еще тоже прокатит через декомпиляцию и компиляцию. А вот жесткие so-шки через IDA можно вечно реверсить. Там нужен подход, который я не знаю. Скорее всего, через эмулятор как-то. Проще найти готовые апк моды или искать другой путь. Через взлом сейв файлов, которые можно сделать через взлом на CE как по этой статье (в первом посте) или через взлом на эмуляторе и CE. Через рут эти файлы перенести.
-
Как минимум два способа. Простой и сложный 1) Менять координаты по горячим клавишам. Тут даже скрипты писать не надо, если на CE делать. 3 координаты найти. И каждой по 2 поведения в опция выставить. 6 горячих клавиш. Три пары увеличивают и три пары уменьшают. Ничего программировать не нужно через CE. 2) Программировать. Аналогично по горячим клавишам писать полет. Язык программирования любой, который лучше всего знаешь и больше подходит. Есть пример на C#, но без записи в память чужого процесса. Можно этот код изучать и поменять Добавить код открытия процесса и добавить чтение и запись координат. MonoBehavior убрать, а update заменить таймером. Там же пример exe полета в том числе с вариантом движения вперед - по направлению камеры (с координатами углов) p.s. Чтобы сделать надо искать и читать документацию как писать код. Ничего сверх сложного нет. И полеты лучше отрабатывать на игровом движке или взять любой готовый пример directX на C++ и поведение камеры сделать в dll. И её уже использовать.
-
Большой бряк на структуру размером 0x1000 за 10 секунд
MasterGH опубликовал запись в блоге в Блог MasterGH
Пример лога снятия данных с брейкпоинта на структуру 0x1000 за 10 секунд. В структуре по смещению 0x2C0 находится здоровье персонажа. На начало этой структуры и был поставлен брейкпоинт . Ниже будет большой кусок опкодов, который работает со структурой. Можно посмотреть в каком порядке опкоды исполняются и с какими смещениями, насколько далеко они друг от друга. Некоторые смещения рядом с известными смещениями могут заинтересовать. Одинаковые опкоды в определенном порядке, но по разным RIP тоже могут заинтересовать. Switch-case могут заинтересоваь в виде cmp [x]. число. Инструкции чтения из структуры больше интересуют, т.к. они могут более вероятно, на что-то влиять - из них читается и для чего-то это нужно. Причем последовательность инструкций идет в порядке вызова, но RIP всегда уникальный (RIP не дублируются). Здесь RIP, т.к. CE 64 разрядный Если последовательность к данным структуры примерно сохраняется, то можно обратить внимание на обращение к адресам в структуре рядом со здоровьем по смещению 2с0: до обращения к адресу здоровья, во время и после. Я выделил их стрелками. Эти смещения могут быть связаны со здоровьем Интересные моменты могут быть с так называемыми switch-case операциями. Можно пытаться их подменить -
Обычно, дается 4 аппаратных брейкпоинта на адреса памяти. Их можно включать одновременно и найти инструкции, которые в данный момент срабатывают. Так можно определить тип данных у адресов и найти инструкции. По инструкциям найти смещения внутри дизассемблированной инструкции. По смещениям визуально определить структуры в структурах. Расструтуризовать структуру в dessect data и найти много интересных параметров для читов. Вручную с 4мя бряками делать очень хлопотно. Начинается все с установки огромного бряка на структуру из туториала CE. Логи По логам видим, что какие-то инструкции обращаются и скорее всего обращаются к нашей той самой структуре. Проверим так ли это и заодно увидим к каким другим структурам идет обращение Видим, что одна из инструкций действительно обращается к нашей структуре и далеко за пределам диапазона 4 брейкпоинтов. Т.е. это действительно огромный такой брейкпоинт на всю структуру. Также видим, что инструкция отработала по другим 4 структурам и это могли быть враги и друзья игрока. Также видим, что тип данных автоматически неверно определился в окна DesectData и мы можем его скорективать - это будет 1 байт Вот так можно проводить ручную расструктуризацию. Кропотливо по байтикам на весь размер структуры выставлять коментарий и правильный тип данных - не все типы данных могут подцепиться и при экспериментах с изменением значений могут быть глюки в игре или даже вылеты. После того как вся структура изучена, можно сделать множество читов, которых нет ни в одном трейнере, если их еще не сделали.