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

MasterGH

Ветераны
  • Постов

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

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

    129

Записи блога, опубликованные MasterGH

  1. MasterGH
    Сложность: 1/5.
    В этом видео рассматривается способ взлома игры "Удаление инструкций" (noping).
    С помощью этого способа игровое значение не будет перезаписываться игрой, потому что в игре удаляется инструкция записи значения.
     
     
  2. MasterGH
    Точка входа в работу читов на Cheat Engine на следующем видео будет начинаться с активирующего скрипта. Таблицу с читами по принципу активирующего скрипта я покажу на видео. В нем будет об общем принципе написания таблицы на CE и расширении её с большим количеством опций + фильтр свой/чужой через функцию commonalities + вынос адреса начала структуры + запись по оффсетам от начала структуры и т.п.
     
    "Активирующий скрипт" — главный скрипт, который вытаскивает адрес начала структуры игрока и помещает его в зарегистрированную метку.
    Также активирующий скрипт содержит однобайтовые регистрируемые метки читов, по которым происходит запись по offsets от начала структуры. По меткам другие скрипты записывают однобайтовые значения 1 или 0.
    Характерно для активирующего скрипта большой размер, много регистрируемых однобайтовых меток и активируется он до запуска читов, чтобы метки успели зарегистрироваться и их "увидели" другие скрипты. 
     
    Руководство. Как запустить так называемый активирующий чит до активации каких-либо читов автоматически.
     
  3. MasterGH
    Нет времени, пока напишу заметки.
     
    1. Можно сделать плагин с визуализацией счетчиков обращений к видимым данным в MemoryView с подключенным DBVM.
    2. По аналогии в Dessect Data Scanner сделать выбор DBVM режима.
     
    DBVM позволяет обойти ограничение в 4 аппаратных брейкопинта и в реальном времени визуализировать данные, которые обращаются к памяти на чтение, запись. Показывать счетчик обращения и даже показывать спискок инструкций при наведении курсором на байт или иные данные в MemoryView. В случае c Dessect Data Scanner может ускорить расструктуризацию, а не по 1-ому брейкпоинту снимать показания X секунд пробегаясь по структуре.
     
    Кстати, кто-нибудь шарит в алгоритмах, структурах данных и паттернах проектирования? Если шарите, поделитесь в каких задачах применяли.
     
  4. MasterGH
    В игровом движке может быть следующая архитектура
     
    Менеджер сцен
        Список сцен
            Сцена1
              Менеджер игровых объектов
                Список игровых объектов
                    Игровой объект1
                    Игровой объект2
                    Игровой объект3
            Сцена2
              Менеджер игровых объектов
                Список игровых объектов
                    Игровой объект1
                    Игровой объект2
                    Игровой объект3
            Сцена3
              Менеджер игровых объектов
                Список игровых объектов
                    Игровой объект1
                    Игровой объект2
                    Игровой объект3
            
    Сцены могут подгружаться по одной или несколько сразу и выгружаться.
    Каждый игровой объект содержит менеджер поведений
     
    Игровой объект
        Менеджер проведений
            Список игровых проведений
                Поведение1
                Поведение2
                Поведение3

    Поведения есть стандартные от игрового движка и есть пользовательские, которые пишут программисты.
    Стандартное поведение Transform нахождение в пространстве может быть установлено по умолчанию у всех игровых объектов.
    Поведение Transform хранит позицию, углы, масштаб, а также методы перемещения, вращения и другие.
     
    Если представить себе иерархичную древовидную структуру, то именно по ней игровые объекты могут находиться друг в друге. Как папки файлового браузера. Transform позволит узнать является ли игровой объект родителем, дочерним по отношению к другому игровому объекту.
     
    Система событий позволяет отправить событие по иерархии вглубь, из глубины или конкретному игровому объекту. Поведения могут содержать функции, которые принимают событие и реагируют на него. Например, я отправил игровому объекту событие "по иерархии вглубь" о том, что в такой-то точке есть сигнал бедствия. Поведения, которые приняли это событие могут обработать его и направить ботов "спасателей" в эту точку.
    Поведения содержат функции игрового движка. Некоторые из них могут быть как: Update(), Start(), Enable(), Disable(), FixedUpdate()
     
    Update - срабатывает перед кадром отрисовкой. Time.DeltaTime дельта времени между кадрами
    FixedUpdate - также как и Update(), только это перед "кадром физики".
    Start(), OnEnable(), OnDisable() - первый запуск, включение и выключение поведения.
     
    Игровые объекты могут содержать строковый тег и номер слоя. Игровые объекты по слоям могут быть видны камере, могут взаимодействовать по физике. Слоем может быть номер или битовая маска.
  5. MasterGH
    CT таблица для составления регулярных выражений 4-х функций
     
    string.match (s, pattern [, init]) string.gmatch (s, pattern) string.gsub (s, pattern, repl [, n]) string.find (s, pattern [, init [, plain]]) Функция string.gsub может принимать в аргумент функции "repl" таблицу (тогда будет замена по ключам значений из таблицы ) или в аргумент "repl" может попадать некоторая другая функция с аргументом найденного слова (тогда будет вызов этой другой функции при каждом захвате символа или слова). Более подробное в документации Lua 5.3
     
    Еще несколько ссылок с практическим руководством
     

    Lua Regular expression.CT
  6. MasterGH
    Для тех кому интересно, вопрос к ним. Какие критерии можно добавить спрашивая оценку плагина?
    Например, по 5-ти бальной шкале спрашивать оценку у пользователей:
     
    Необходимость плагина в Cheat Engine Работает без ошибок                            Понятно как пользоваться Интерфейс плагина Удобство плагина Нравится Простая установка  
    Думаю, прикрутить аналитику прямо в плагины. Там будет как аналитика использования плагина, так и будет опросник выше.
    Ну и пользовательское соглашение об анонимном сборе данных для улучшения качества приложения. Чтобы можно было улучшать только те плагины, которые устанавливают и которыми пользуются.
  7. MasterGH
    Опубликованная в веб формате книга на официальном сайте.
    Язык английский
     
    Перейти
     
    Оглавление книги
     
    Книга о приемах программирования больших проектов, в которых огромное количество строк кода. Основная проблема, когда ты уже что-то написал и надо добавить в уже существующий проект внушительный функционал или же наборот его поменять, или убрать. Хватаешься за галову и думаешь, что проще написать проект заного. Автор из числа тех программистов, которые оставляют свой опыт и знания (есть донат). Порой бывает информация более полезной в блогах чем где-либо, редко бывает в виде книг.
     
    Про автора книги знаю очень мало, кому надо можете погуглить.
  8. MasterGH
    На видео показано рисование через поток и рисование без потока
    Когда происходит рисование без потока, то окно нельзя подвинуть, не работает кнопка и даже не возможно работать с Cheat Engine
     
     
     
     
     
    Код:
     
     
     
     
  9. MasterGH
    В этой записи блога не будет чего-то, что показало бы "вау, это что-то новое и есть результат". Все сырое и результат пока мне только снится — быстрый поиск условий и включение, и выключение ветвей по этим условиям. Мыслю я не инструкциями, не группой инструкций, а ветвлениями кода и условиями, которые их запускают. Проще 20 ветвлений по 5 окон, чем тонна инструкций... Жаль пока теория, практики с результатом нет.
     
    Рисунок. На нем слева прототип, справа текущий сырой вариант
     
    1) ставим брейкпоинт на адрес патронов
    2) от него расплетаются ветви кода от каждого хита, от каждой инструкции, и по ретам ветвление выходит из рутины
     
    Кружи означают ret-ы. Клик на круг будет переходлм в дизассемблер
    Стрелки будут показывать входы и выход связанные с соседними рутинами (поиск общих адресов будет стрелками)
     

     
    На экране справа вариант без стрелок, т.к. не успел еще их отладить. 4 ветки трассера по ретам из рутины связанные с адресом патронов, выстрелами.
    Потом я продолжал стрелять, перезаряжаться, выкидывать и поднимать оружие. В итоге собрал 20 ветвлений по ретам от инструкций связанные с патронами
     
     

     
    Как видно, довольно все еще сырое, но видно, что все 20 ветвлений по ретам сформировались до корневого цикла.
     
    Потом можно будет, я надеюсь, увидеть связи между этим ветвлениями, когда я прикручу стрелки. По кружкам кликать и переходить в дизассемблер и смотреть условия выше. На условии искать другие адреса, которое запускает ветвь кода. На адресах опять делать ветвления (новое окно с ветвлениями о ретам)... На практике будет получаться более двух таких окон (для патронов). Нужно будет искать адреса связанные с условиями в новом окне.
     
     
  10. MasterGH
    Установка:
    1. Файл GHL_ClassSettings.lua закинуть в autorun (нужен для сохранения и загрузки данных формы)
    2. Двойной клик на Lua Regular expression.CETRAINER вызовет это окно
     
    Описание:
    - Для тренировки и проверки написания регулярных выражений
    - Выбор извлечения строк в виде одной или в виде последовательности
    - При нажатии на кнопку или при вводе текста в memo вычисляется выражение
    Lua Regular expression.CETRAINER
    GHL_ClassSettings.lua
  11. MasterGH
    Нажали checkbox — заполнились данные по базовому адресу

     
    Отжали checkbox — удалились данные

     
     
    Если проще руками забить и поставить опцию раскрытия, то можно и без скрипта.
  12. MasterGH
    С точностью до тысячной доли секунды можно посчитать задержку выполнения кода, что можно применить как счет производительности.
    local x = os.clock() local s = 0 for i=1,100000 do s = s + i end print(string.format("elapsed time: %.3f\n", os.clock() - x)) После выполнения, показывает 2 тысячных секунды или 2 мс
    elapsed time: 0.002 Можно посчитать прошедшее время для другой цели. Например, если цикл в отладке выполняется более 3 секунд, то это вероятно корневой цикл, а если менее, то это вложенный цикл. На корневом цикле можно остановить трейслог. Об этом может быть потом напишу.
  13. MasterGH
    Наткнувшись на тему вспомнил, что  не все написал. В прошлом посте блога рассматривал бряк через 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. Если будет время напишу скрипт.
  14. MasterGH
    Уже была запись про тестирование производительности.
    В этом примере тестируем разное обращение к функции со средним арифметическим значением
     
     
    Результаты при 4-х запусках
    avg = 0.93333998758048 avg = 1.0322099291325 avg = 0.92657961891689 avg = 1.1883763135947  
    Вывод. Разница не существенная.
  15. MasterGH
    Был вопрос на форуме о том, как узнать, а куда смотрит игрок и как нарисовать линию в экранных координатах.
    Я не нарисую отрезки в окне игры в экранных координатах, но могу отобразить точки одного отрезка для одного глаза 2д-панельками в экранных координатах (хотя визуально, у Unity экранные координаты связаны с 3д координатами по масштабу пикселя на метр на сцене). Для наглядности все же в окнах сцены будут отрезки в 3д-координатах.
     

     
     
     
    Чтобы посмотреть функции операторов такие как умножение, сложение и свойства normalized, и переписать код на C++ можно декомплировать .net библиотеку C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll через ILSpay. Например, там есть расчеты умножения кватерниона (X,Y,Z,W) на эйлеровы углы (X,Y,Z), нормализация, сложение. Библиотеку это можно взять из Unity игр или установив движок Unity.
     
    Адреса позиции и углов обычно находятся рядом друг с другом.
  16. MasterGH

     
    На скриншоте 22 ветви трассеровки от адреса патронов не входя в call-ы до корневого цикла. Корневой цикл определяется, когда поиск происходит более трех секунд и не находит ничего. Вполне хватает этого времени. Буду еще повторно тестить и проверять доходит ли он цикла или надо еще что-то придумывать.
    Желтым выделяется точка, вертикальная полоса ветви и связи с такими же узлами. Узел это адрес выхода из ret
    Внизу ряд счетчиков от 00 до 99. Если более 99 то отсчет заного. Показывает дианамику обращения к ветвям после нахождения корневого цикла
    Есть еще несколько функций, которых не видно на скриншоте — в контекстном меню.
    Анализ можно запустить из окна CE из главной таблицы, выделив адрес и опцию либо на чтение, либо на доступ.
     
    При тестах увидел, что логи неполные. Например, первый кружок это инструкция читающая патроны очень часто. От этой инструкции идут вверх множество вариантов ветвей,а  у меня один вариант — вертикальная полоска с кружками. От первого круга надо сделать ветвление влево и вправо.
     
    Занялся модернизацией этого рисования и оптимизацией. Например, чтобы определить является ли проход по ret, то не нужен дизассемблер. Залез в доки и посмотрел опкоды
     
    function IsRet(address) local value = readBytes(address,1, false) return value == 0xC3 or value == 0xCB or value == 0xC2 or value == 0xCA end Скорость трассеровки должна в несколько раз увеличиться. К сожалению, смогу это узнать, когда перепишу текущий плагин.
    Там были уже сделаны изменения (все еще сырое для публикации плагина, пока не публикую)
     
     
  17. MasterGH
    Unity + ARKit 2.0 + Apple Device + iOS > 12.x  позволят сканировать через визуальную одометрию реальный мир и расставлять в нем виртуальные объекты и загружать их в точные места, куда раньше поставили. Особенность в том, что чем больше информации собрали физической камерой из разных положений и углов, тем больше шансов, что увидим объекты именно там куда их поставили. Это еще классно тем, что карту мира можно расширять, сохранять, загружать, передавать в реальном времени на разные устройства в мультиплеере. Далее ArKit похож на ArCore и Vuforia, EasyAR и т.п. сканируя изображения - маркеры, 3d-фигуры, сканирование плоскостей... И короче говоря,  могу добавить, что ARKit интересная штука. 
     
    Шлем и система виртуальной реальности + Unity. Стоит такая штука за 100К в России. Хотя цены бывают разные. На работе есть такая система и в ней очень круто. Манипуляторами как реальными руками можно делать много интересных вещей в 3д-комнате, при чем отфотканной с высоким качеством. Брать 3д-вещи в руки как реальные. Вращать, менять положение, бросать и так далее. Также было интересно на крыше в демке  "человека-паука". Это пейзаж с крыши, надевание маски, стрельба, звуки. В общем можно в шлеме путешествовать просто сидя дома. Если на Unity шаришь, можешь что хочешь сделать с этим шлемом. 3д- двери открывать,  делать механику разную, делать игры, так и что-то с пользой придумать, если конечно придумать.
     
    HaloLens - очки смешанной реальность. Стоят за 300К.  Они интересны тем можно связать обучение работы с приборами (с 30-той секунды). Сейчас тут взрослые люди обучаются, а могут так обучаться и дети, и студенты и взрослые.  Можно придумать:
    1) куда идти в аэропорте, могут показать очки (а это для смартфонов, а не для очков, таскаться с ними еще)
    1) как пользоваться плитой, стиральной машиной. телевизором... и другой техникой
    3) как приготовить еду
    4) ну и так далее... 
    Обучение программируется судя по видео
    С выставки. Самое интересное где-то с пятой минуты
     
    Все идет к тому, что у всех вместо телефонов могут быть очки, а передвигаться мы будем все на колесе, самокате или летающей машине, или индивидуальном пропеллере. Если сейчас можно видеть как все гоняют на самокатах и некоторые на колесе, то может лет через 100-300 люди могут летать на работу на пропеллерах за спиной.  Также все идет к том, что работа будет для большинства становится удаленной или роботы будут заменять людей, или люди будут управлять роботами как аватарами. Ну а путешествовать на пропеллере лучше на отдыхе чем на работу)
  18. MasterGH
    Дополненная реальность похоже на спецэффекты в кино, только на экране видим изображение получаемое с видео камеры, которой управляет пользователь. 
     
    Что интересно. Камера, которая есть у многих на телефоне и допустим некоторая программа с API(какой-нибудь дополненной реальности написанная вами) определяет, что происходит на изображении и по этим данным можно
     
    1) определить плоскости реальные в нашем мире
    2) определить положение объектов относительно друг друга в нашем мире
    3) определить уникальные маркеры и изображения
     
    Это было чтение данных, затем идет запись данных. На изображение накладывается поверх другое.
     
    Чтение данных с реального мира и запись данных поверх изображения по данным чтения это основные процессы.
     
    Что меня заинтересовало. Так это, что можно что-то делать в реальности, а камера будет писать программу. Самый простой пример. Берем маркер - бумагу с рисунком. Камера увидела и поставила на нем 3д-дом или светофор. Резко убираем маркер и дом остается в этом месте. Таким образом можно построить виртуальный город. Есть на Ютубе.
     
    Теперь можно взять вместо 3д-дома, 3д-светофоров маркеры для выстраивания алгоритма программы. Таким образом направив камеру можно что-то подхватывать из дополненной реальности, вытаскивать,  размещать таким образом программируя действия без строчки кода.
     
    Берем маркер А и рядом с ним ставим маркер S. Означает, чтобы запомнилось положение макера А в пространстве. Убираем маркер S. Далее ставим маркер R, означает запись движения. Далее перемещаем А на точку2. Убираем маркер R, что означает остановку слежеия за маркеромА. Далее ставим маркер P, который запускает движение 3д объекта связанного с маркером А.
     
    Ну и так далее. Это очень интересно в плане программирования маркерами...
     
    Видео по построению объектов в городе
     
  19. MasterGH
    В архиве два файла. Функции
    1. Контекстное меню. Компактное/ не компактное окно CE
    2. Сохранение и загрузка положения и размера формы CE
    3. Сохранение и загрузка компактного состояния формы или не компактного
     
    Сделано на энтузиазме после написания класса сохранения и загрузки параметров.
    После запуска, CE будет там, где её (CE) закрыли с позицией, размерами и с состоянием "Компактны режим", если последний был включен.
     
    Параметры сохраняются на жесткий диск в файл "..\autorun\userdata.txt"
    CompactView.rar
  20. MasterGH
    В версии Unity 2018 довольно много интересного.
     
    1. Это Unity Hub. Та штука, которая позволяет быть в курсе новых версий Unity. 
    2. PackageManager. Покажет пакаджи установленный в проекте.
    3. Pro Builder. Довольно интересный инструмент, который позволяет моделить оркужение в Unity и творить простые локации, здания и создавать примитивы с наложением текстур... там очень много чего, я не не смотрел особо. Это альтернатива террейну. Фишка в том, что мы не являясь художниками (2д, 3д артистами), на Pro Buildere можем вполне сносное сделать окружение в нереалистичном стиле.  И не очень мультяшный и не похожий на реалистичный стиль. В таком стиле в теории можно сделать быстро игру. Встроить туда рекламы и инаппов, ну и если все будет ок, то будет приносить прибыль на маркетах. Важнее продвинуть аппу вверх, на вид, чем сделать её;
    4. У Unity развиваются мощные системы сервисов. Есть поддержка иннпов, рекламы, аналитики, багрепорты (альфа версия), стеки крашей и исключений с характеристиками устройств пользователей. Не все баги там можно увидеть. Google Play консоль ловит больше багов, крашей и ANR (диалоги с "подождите ваша программа что-то долго делает или не отвечает, или будет закрыта").
    5. Запомнился 2d аниматор с ригом. Т.е. риг это склет обычно на 3д модель, а теперь риг можно делать на 2д модели.
    6. Пока больше не помню, что такого интересно... 
     
    В 2017 версии появилась возможность скрипты связывать с отдельными dll сборками. В теории это позволит увеличить скорость компиляции. Например, у нас в проекте на младших версиях Unity на правку уходит 8 секунд компиляции на мощном компе,т.к. все скрипты в одной сборке dll. Пока не тестили эту фичу...
×
×
  • Создать...

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

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