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

MasterGH

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

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

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

    129

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

  1. MasterGH
    В оригинале, если нет всех компонентов рецепта, то нельзя скрафтить вещь.

    Цель: скрафтить без компонетов по нажатию кнопки
     
    Игра на Unity и можно пробовать использовать в dnSpy модифицировать файл Assembly-CSharp.dll
    Открываем файлик и смотрим на классы связанные с крафтом
     
    Так находим кнопку, которая создаст указанное количество вещей крафта в CreateItem
       
    Задача скрафтить по имеющемуся рецепту любую вещь. Для этого я добавляю проверку количества вещей  и удаляю лишний код. Под сполерами оригинальный и модифицированный код
     
    Визуальное сравнение
     
    Модифицированный код
     
    Оригинальный
     
    Изменяем весь класс или метов в этом окне
     
    Если выводит ошибки при компяляции, то скачиваем IlSpy и его код вставляем в код в dnSpy. Или качаем DnSpy 3.2.0 или ранее
     
    Изменения сохраняем в модуль, запускаем игру и крафтим.
     
    Получить все рецепты (не проверял правда, попробуйте если хотите)
     
    Вещи не ломаются. Убрать отнятие "здоровья" у вещи
     
     
  2. MasterGH
    Довольно интересная функция, мне понравилась. 
    showSelectionList() позволяет просмотреть список класса Strings и выбрать свойство через список.
     
    Как пример посмотрим список свойств главной формы и выберем любое свойство
    local mainForm = getMainForm() local listProperties = getPropertyList(mainForm) local allowCustomInput = false local id, name = showSelectionList("Title", "Caption", listProperties, allowCustomInput) print ('Index: '..id..", Name: "..name) --> Примеры выполнения: --> Index: 55, Name: ShowHint --> Index: 10, Name: Top После исполнения Lua скрипта вот такой диалог появится. Можно искать свойство через ввод текста

     
     
    Список строк (Stringlist Class) используют:
    createStringlist(): Strings  - постой список
    getAutoAttachList(): Strings  - список имен процессов для автоподключения
    getPropertyList(class) : Strings - список свойств
    getCommonModuleList(): Strings  - список пропускаемых при сканировании модулей
    getProcesslist(Strings) - список процессов
    getWindowlist(Strings) - список окон
    getThreadlist(Strings) - список потоков
    Database.Params: Strings  - свойство  базы данных SQL
    ListItem.SubItems: Strings - свойство подстрок в визуальном компоненте списка
    ComboBox.Items: Strings - комбобокс
    Memo.Lines: Strings  - мемо компонент
    RadioGroup.Items: Strings  - компонент RadioGroup
    ListBox.Items: Strings - компонент ListBox
    FileDialog.Files: Strings  -  выбранные файлы в диалоге
  3. MasterGH
    pcall() функция может вызывать функцию, которая может вызывать исключение.
    Возвращает статус в виде булевой о том, есть ли исключение или нет и возвращает текст исключения. 
     
    Источник
     
    Как этим пользоваться? Если вдруг знаем, что может произойти ошибка, то можно её обработать и выполнить правильное действие не останавливая работу Lua скрипта.
    Или например если  не выполняется условие, то можем сами создать ошибку с помощью функции error, что остановит скрипт.
  4. MasterGH
    1. Открываем trainme Dark Byte.
    2. Проходим первый шаг (там нужно сделать One Hit Kill чит через прогресс бар, количество патронов тоже интересно поломать)
    3. Так вот на Step2  ищем адрес здоровья нашего космического корабля.
    Ставим брейкпоинт на доступ, стреляем.
    Видим, три адреса и вот теперь новые функции в контекстном меню как на скриншоте

     
    На "(1)-(2)" - вызываем контекстное меню выделив адрес своего корабля и добавляем его в группу1. Тоже самое делаем для красных адресов кораблей противников
    На "(2)" вызываем опцию сканирования и видим "(3)"
    На (3) выбираем скан по RAX или по другим значениям. Например, когда по RAX не нашли ничего.
     
    Дальше видим окно и галку ставим "Only find matching groups" и сканим. Видим результат 

     
    Т.е. по +70 и другим смещениям можно сделать фильтр свой - чужой.
     В общем замечательный инструмент для работы со структурами с заданием уровня сканирования по оффестам
  5. MasterGH
    Плагин ведет историю поиска, отсева, отмены. Логи выглядят следующим образом
    Для чего может применятся
    На шаге отсева посмотреть в логах, какое значение искали до этого и какой способ поиска использовали. При неудачных поисках мы просматриваем как и что мы сканировали раньше. Если вообще ничего не получается при сканировании, то логами можно обмениваться. Горячие клавиши, которые настраиваются из окна настроек CE работают и в логах.  
    Установка: скопировать GHL_log.lua в директорию "/autorun" Lua скрипт: 
    В комментариях можно написать про ошибки или про идеи улучшения плагина.
  6. MasterGH
    Дополненная реальность похоже на спецэффекты в кино, только на экране видим изображение получаемое с видео камеры, которой управляет пользователь. 
     
    Что интересно. Камера, которая есть у многих на телефоне и допустим некоторая программа с API(какой-нибудь дополненной реальности написанная вами) определяет, что происходит на изображении и по этим данным можно
     
    1) определить плоскости реальные в нашем мире
    2) определить положение объектов относительно друг друга в нашем мире
    3) определить уникальные маркеры и изображения
     
    Это было чтение данных, затем идет запись данных. На изображение накладывается поверх другое.
     
    Чтение данных с реального мира и запись данных поверх изображения по данным чтения это основные процессы.
     
    Что меня заинтересовало. Так это, что можно что-то делать в реальности, а камера будет писать программу. Самый простой пример. Берем маркер - бумагу с рисунком. Камера увидела и поставила на нем 3д-дом или светофор. Резко убираем маркер и дом остается в этом месте. Таким образом можно построить виртуальный город. Есть на Ютубе.
     
    Теперь можно взять вместо 3д-дома, 3д-светофоров маркеры для выстраивания алгоритма программы. Таким образом направив камеру можно что-то подхватывать из дополненной реальности, вытаскивать,  размещать таким образом программируя действия без строчки кода.
     
    Берем маркер А и рядом с ним ставим маркер S. Означает, чтобы запомнилось положение макера А в пространстве. Убираем маркер S. Далее ставим маркер R, означает запись движения. Далее перемещаем А на точку2. Убираем маркер R, что означает остановку слежеия за маркеромА. Далее ставим маркер P, который запускает движение 3д объекта связанного с маркером А.
     
    Ну и так далее. Это очень интересно в плане программирования маркерами...
     
    Видео по построению объектов в городе
     
  7. 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 люди могут летать на работу на пропеллерах за спиной.  Также все идет к том, что работа будет для большинства становится удаленной или роботы будут заменять людей, или люди будут управлять роботами как аватарами. Ну а путешествовать на пропеллере лучше на отдыхе чем на работу)
  8. MasterGH
    Нет времени, пока напишу заметки.
     
    1. Можно сделать плагин с визуализацией счетчиков обращений к видимым данным в MemoryView с подключенным DBVM.
    2. По аналогии в Dessect Data Scanner сделать выбор DBVM режима.
     
    DBVM позволяет обойти ограничение в 4 аппаратных брейкопинта и в реальном времени визуализировать данные, которые обращаются к памяти на чтение, запись. Показывать счетчик обращения и даже показывать спискок инструкций при наведении курсором на байт или иные данные в MemoryView. В случае c Dessect Data Scanner может ускорить расструктуризацию, а не по 1-ому брейкпоинту снимать показания X секунд пробегаясь по структуре.
     
    Кстати, кто-нибудь шарит в алгоритмах, структурах данных и паттернах проектирования? Если шарите, поделитесь в каких задачах применяли.
     
  9. MasterGH
    Для тех кому интересно, вопрос к ним. Какие критерии можно добавить спрашивая оценку плагина?
    Например, по 5-ти бальной шкале спрашивать оценку у пользователей:
     
    Необходимость плагина в Cheat Engine Работает без ошибок                            Понятно как пользоваться Интерфейс плагина Удобство плагина Нравится Простая установка  
    Думаю, прикрутить аналитику прямо в плагины. Там будет как аналитика использования плагина, так и будет опросник выше.
    Ну и пользовательское соглашение об анонимном сборе данных для улучшения качества приложения. Чтобы можно было улучшать только те плагины, которые устанавливают и которыми пользуются.
  10. MasterGH
    Unity — среда для тренировки искусственного интеллекта. Ниже пример обучения ИИ для игры в гонки.
     
     
    В новой версии Unity много изменений, если кому интересно на официальном сайте много информации по обновлениям
  11. MasterGH
    За нейронными сетями и быстрыми вычислениями (например на тензорных ядрах видеокарт) 
     
    скорее всего,  огромное будущее и огромный спрос. Стартануть в эту тему можно,  изучив статью с хабра о принципах AlphaGo Zero и вот эту.  Основные моменты это рекуррентные сети, которые ищут в глубь и сверточные сети, которые чем-то похоже на хеш-сумму (на тензорных ядрах они-то и быстро считаются). 
     
    На данный момент по своей работе я активно развиваюсь в нескольких направлениях: в многопоточном программировании на CPU/GPU,  вычислительных шейдерах, сокетах. Если писать программы на одном CPU ядре, то все чаще этого не хватает по мощности как на ПК так и тем более на мобильных устройствах. Такое ощущение, что без многопоточного программирования скоро нельзя будет никуда устроиться работать. Сейчас  тенденция много ядер на CPU и их использовать. А еще лучше и быстрее что-то "тяжелое" отправить вычислять на GPU. Это не говоря по обработке графических данных. С ними очень эффективно работают программы на GPU. А чтобы системы соединялись между собой на расстояниях надо хорошо знать сокеты и многопоточное программирование. Основная фишка в многопоточности это спланировать множество задач из одной точки программы и в другой точке ждать, когда они все одновременно выполнятся. Некоторые, задачи при этом должны синхронизироваться только с основным потоком. Когда все задачи выполняться на разных ядрах CPU, то итоговый результат на каком-то одном ядре уже сделает все что требуется. Бонусом к ускорению на CPU ядрах служат специальные ассемблерные инструкции, которые например, позволяют обрабатывать больше данных за меньшее количество тактов.
     
    Интересующимся ссылки в основном по Unity игровом движке
     
  12. MasterGH
    Функции:
    1) Три типа данных: float, double, integer
    2)  10 слотов сохранений
    3) Управление горячими клавишами. ctrl+X - где X от 0 до 9 сохраняет позицию, shift + X загружает ранее сохраненную позицию
    4) Озвучивание загрузки или сохранения

    Как пользоваться:
    1. Подключаемся к процессу игры любым способом (хоть вручную, хоть на Lua, чем угодно)
    2. В CE вставляем Lua скрипт
     
    3. Меняем адрес teleport_address = "03D2C6DC"   на тот который нужно.
    Здесь может быть указатель например  -"[[address+XX]+XX]" или через registersymbol() в АА скриптах.
    Не тестировалось если адрес еще невалидный, т.е. не существует в памяти. По идее слоты проинициализируются с нулевыми координатами по умолчанию. Поэтому лучше Lua скрипт запускать в момент существования адреса. Проверка на существование адреса - getAddressSafe(string, local OPTIONAL, shallow OPTIONAL): returns the address of a symbol, or nil if not found. Similar to getAddress when errorOnLookup is false, but returns nil instead. Проверку можно делать по таймеру. Запуск скрипта это последняя строка 
     
    4.Меняем тип данных type_data = 'INTEGER'            -- FLOAT, DOUBLE, INTEGER

    Данный скрипт предоставляется как есть. Сделан для всех пользователей форума и можно использовать его в любых целях: в образовательных, в коммерческих. Если что-то не работает, то придется править вам самим. У меня к сожалению нет времени на оказание помощи. Справочник по луа функциям в файле"celua.txt"
  13. MasterGH
    Обычно, дается 4 аппаратных брейкпоинта на адреса памяти. Их можно включать одновременно  и найти инструкции, которые в данный момент срабатывают. Так можно определить тип данных у адресов и найти инструкции. По инструкциям найти смещения внутри дизассемблированной инструкции. По смещениям визуально определить структуры в структурах. Расструтуризовать структуру в dessect data и найти много интересных параметров для читов. Вручную с 4мя бряками делать очень хлопотно. 
     
    Начинается все с установки огромного бряка на структуру из туториала CE.

     
    Логи
     
    По логам видим, что какие-то инструкции обращаются и скорее всего обращаются к нашей той самой структуре. Проверим так ли это и заодно увидим к каким другим структурам идет обращение
     

     
    Видим, что одна из инструкций действительно обращается к нашей структуре и далеко за пределам диапазона 4 брейкпоинтов. Т.е. это действительно огромный такой брейкпоинт на всю структуру.
    Также видим, что инструкция отработала по другим 4 структурам и это могли быть враги  и друзья игрока.
    Также видим, что тип данных автоматически неверно определился в окна DesectData и мы можем его скорективать - это будет 1 байт

     
    Вот так можно проводить ручную расструктуризацию. Кропотливо по байтикам на весь размер структуры выставлять коментарий и правильный тип данных - не все типы данных могут подцепиться и при экспериментах с изменением значений могут быть глюки в игре или даже вылеты. После того как вся структура изучена, можно сделать множество читов, которых нет ни в одном трейнере, если их еще не сделали.
  14. MasterGH
    Пример лога снятия данных с брейкпоинта на структуру 0x1000 за 10 секунд.
    В структуре по смещению 0x2C0  находится здоровье персонажа. На начало этой структуры и был поставлен брейкпоинт .
     
    Ниже будет большой кусок опкодов, который работает со структурой. Можно посмотреть в каком порядке опкоды исполняются и с какими смещениями, насколько далеко они друг от друга. Некоторые смещения рядом с известными смещениями могут заинтересовать.  Одинаковые опкоды в определенном порядке, но по разным RIP тоже могут заинтересовать. Switch-case могут заинтересоваь в виде cmp [x]. число. Инструкции чтения из структуры больше интересуют, т.к. они могут более вероятно, на что-то влиять - из них читается и для чего-то это нужно. 
     
     
    Причем последовательность инструкций идет в порядке вызова, но RIP всегда уникальный (RIP не дублируются). Здесь RIP, т.к. CE 64 разрядный
    Если последовательность к данным структуры примерно сохраняется, то можно обратить внимание на обращение к адресам в структуре рядом со здоровьем по смещению 2с0: до обращения к адресу здоровья, во время и после. Я выделил их стрелками. Эти смещения могут быть связаны со здоровьем

     
    Интересные моменты могут быть с так называемыми switch-case операциями. Можно пытаться их подменить

  15. 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. Если будет время напишу скрипт.
  16. MasterGH
    Я решил рассмотреть три новые функции:
     
    Пользовательские типы данных в 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  
    Практическое применение
     
    Больше всего могут интересовать реальные практические примеры. Если будет время, желание может быть сделаю, а так просто общий обзор.
  17. MasterGH
    Вполне читерская программа Sikulix
     
    Помощник для нахождения отличий
     
    Исходник:
     
    Картинки для тренировки
     
    Игра
    Sikulix
    Документация
    Туториалы
     
    Sikulix умеет:
    ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата); читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживать и перетаскивать; перемещаться по окнам по названию процессов; сохранять скриншоты в том числе определенные области; показывать много разных диалогов: ввода, тултипов, сообщений; сравнивать изображения и находить отличные области (пример выше); поиск элементов по маске; поиск групп элементов и перебор их; создание гайдов или руководств  
    Из наиболее интересных применений:
    1) в играх где необходим поиск графических элементов с действиями (кликеры, поиск отличий или поиск/подсчет элементов, маджонги и другие);
    2) нажать на найденных элементы(кнопки, чек-боксы);
    3) найти текстовое значение, перевести в число, посчитать;
    4) ожидает выхода человека из скайпа (или что-то вроде мониторинга чатов);
     
    Ну и так далее...
  18. MasterGH
    Планируется улучшать и дорабатывать плагины, показать как с ними работать.
     
    1. Вывод данных в окно логов: сканирование, подключение к процессу, опции сканирования, состояния активации и деактивации записией в таблице CE и другие 
    2. Запись действий из пункта 1, сохранение этих действий и воспроизведение по кнопке или горячим клавишам
    3. Показ в дизассемблере CE ветвлений кода при проходе потоками разными цветами (можно видеть код, который не был пройден в разных ситуациях)
    4. Дополнительное окно дизассемблера с опциями подсветки инструкций по типу в градации черно-белых цветов: математические инструкции, логические инструкции, инструкции ветвления, на чтение и запись. 
    5. Улучшение плагина "Dessect Data Scanner" с DBVM или на 4-HW брекйпоинта. В случае DBVM количество брейкпоинтов не ограничено и можно определить тип данных одновременно для каждого байта в структуре по смещениям, а в случае 4-х байтов это в режиме без DBVM одновременно задействуются все 4 hw брейкпоинта, а не 1 hw как сейчас.
     
    Extensions: 
  19. MasterGH
    У меня бывают такие случаи, когда увидишь простой пример кода после которого захочется заняться разработкой какой-нибудь игры. 
    Вот один из таких примеров о том, как сделать подъем и опускание предмета и затем его вращение. Это 5 строчек "таких" и 5 строчек "таких", вот подъем и вращение
     
    На видео код можно применять для левитации предметов и вражеских персонажей, которых  можем поднимать, удерживать и бросать. 
  20. MasterGH
    Сложность: 1/5.
    В этом видео рассматривается способ взлома игры "Удаление инструкций" (noping).
    С помощью этого способа игровое значение не будет перезаписываться игрой, потому что в игре удаляется инструкция записи значения.
     
     
  21. MasterGH
    Точка входа в работу читов на Cheat Engine на следующем видео будет начинаться с активирующего скрипта. Таблицу с читами по принципу активирующего скрипта я покажу на видео. В нем будет об общем принципе написания таблицы на CE и расширении её с большим количеством опций + фильтр свой/чужой через функцию commonalities + вынос адреса начала структуры + запись по оффсетам от начала структуры и т.п.
     
    "Активирующий скрипт" — главный скрипт, который вытаскивает адрес начала структуры игрока и помещает его в зарегистрированную метку.
    Также активирующий скрипт содержит однобайтовые регистрируемые метки читов, по которым происходит запись по offsets от начала структуры. По меткам другие скрипты записывают однобайтовые значения 1 или 0.
    Характерно для активирующего скрипта большой размер, много регистрируемых однобайтовых меток и активируется он до запуска читов, чтобы метки успели зарегистрироваться и их "увидели" другие скрипты. 
     
    Руководство. Как запустить так называемый активирующий чит до активации каких-либо читов автоматически.
     
×
×
  • Создать...

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

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