Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотр
    26 131

Записи в этом блоге

Оптимизация CE Lua кода по сборке мусора

Есть инструкции, которые добавляют мусора больше чем другие.   Показываем объем памяти мусора print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024)) Ниже код того как попробовать узнать сколько мусора добавил код при парсинге ассемблерной строки двумя способами   Пример результатов могут отличаться. Фиг его знает почему. Возможно работает сборщик мусора в разные моменты времени Lua memory usage 1.8 MiB Lua memory usage 1.8 MiB Lua memory us

MasterGH

MasterGH

Делаем огромный брейкпоинт на всю структуру

Обычно, дается 4 аппаратных брейкпоинта на адреса памяти. Их можно включать одновременно  и найти инструкции, которые в данный момент срабатывают. Так можно определить тип данных у адресов и найти инструкции. По инструкциям найти смещения внутри дизассемблированной инструкции. По смещениям визуально определить структуры в структурах. Расструтуризовать структуру в dessect data и найти много интересных параметров для читов. Вручную с 4мя бряками делать очень хлопотно.    Начинается все с

MasterGH

MasterGH

Sikulix-скрипт сравнения изображений в играх

Вполне читерская программа Sikulix   Помощник для нахождения отличий   Исходник:   Картинки для тренировки   Игра Sikulix Документация Туториалы   Sikulix умеет: ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата); читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживат

MasterGH

MasterGH

CE 6.7 Lua. Интересный пример скрипта

Появилась такая опция асинхронного выполнения скриптов   Если эту опцию поставить на скрипты, то появляются вот такие часики   АА-шные скрипты могут искать в этот момент сигнатуру. Lua скрипты потестить было интересно, узнать действительно ли асинхронно выполняется. Например, один скрипт выполняет счет, второй выполняет счет. По выполнении выводится результат.     Во время выполнения включаем первую галку. Тут CE подвисает. Затем успеваем нажат

MasterGH

MasterGH

Cheat Engine 6.8 Beta 1. ShowSelectionList функция

Довольно интересная функция, мне понравилась.  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) --> Примеры выполне

MasterGH

MasterGH

Телепорт на Lua. 10 слотов. 3 типа данных

Функции: 1) Три типа данных: float, double, integer 2)  10 слотов сохранений 3) Управление горячими клавишами. ctrl+X - где X от 0 до 9 сохраняет позицию, shift + X загружает ранее сохраненную позицию 4) Озвучивание загрузки или сохранения Как пользоваться: 1. Подключаемся к процессу игры любым способом (хоть вручную, хоть на Lua, чем угодно) 2. В CE вставляем Lua скрипт   3. Меняем адрес teleport_address = "03D2C6DC"   на тот который нужно. Здесь

MasterGH

MasterGH

CE Lua Крестики и нолики

Игра с рандомом. Есть счет. Запускается через таблицу в аттаче.   Здесь мог быть AI на Lua, возвращающий номер клетки от 1 до 9. function InputAI() -- рандом return math.random (1, 9) end Извиняюсь, лучше рандома пока не могу предложить.     Крестики и нолики.CT

MasterGH

MasterGH

CE 7.2 Операции с трейслогом

Я решил рассмотреть три новые функции:   Пользовательские типы данных в hex-окне Фильтр на окне определения адресов Поиск данных в окне Tracer   1. Пользовательские тип данных в hex-окне   Пример как сделать:   Фильтр на окне определения адресов     3. Поиск данных в окне Tracer   Обычный поиск, как на прошлых скринах   Примеры   Ну и более интересная версия перебора и одновременн

MasterGH

MasterGH

Анализ Dissect Data Structure

Конечно не секрет, что типы данных не правильно определяются. Вот пример для 50-ти адресов   Слева как определил данные CE. Справа как определил их я по логу ниже Понравились данные с размером в 1 байт, привлекают в нимание. Как только я переключил на ноль или 1, то персонаж перестал двигаться и не реагировал на движение.   Лог инструкций   Пытаюсь по логам определить алгоритм для Lua, чтобы скрипт сам ставил тип и смещение. Конечно есть сюрпризы, когда

MasterGH

MasterGH

Не работает плагин сборки Firebase для AirTest IDE

Почти месяц ковыряюсь со сборкой апк, которая не запускается на инструментальном тестировании в Firebase   Рис.1 Сборка апк на инструментальное тестирование TestLab  от Firebase. Окно AirTest IDE   Две апк-шки создается. 1. В Unity, с иvпортом Poco SDK  2. В Плагине как на рисунке   Затем обе апк-шки отправляются на инструметальное тестирование в Firebase  Запускаю тест. Шесть секунд видео со стандартной заставкой и конец теста.  

MasterGH

MasterGH

Отладка Lua скриптов и stacktrace функций

Пример, который показывает как снять стек вызовов функций function A0() -- Здесь можно удалить ":gsub('\n','\r\n')", но тогда в консоли текст будет в одну строку print(debug.traceback():gsub('\n','\r\n')) end function A1() A0() end function A2() A1() end function A3() for i=1,3 do A2() end end A3()   Можно поставить пошаговую отладку в консоли Lua (как на скриншоте) и  пройти по шагам

MasterGH

MasterGH

Некоторые приемы создания читов

1. Персонаж падает с большой высоты и разбивается   Ищем адрес скорости прыжка прыгая под speedhack. Находим эту скорость. Ставим бряк на доступ. Прыгаем. Инструкции на чтение добавляем в список адресов и там начинаем нопить - Либо по одной - Либо рискнем по половине от половины - Либо рискнем и все сразу занопим   Если повезет, а должно повезти, то инструкция не прочитает то значение скорости, которое уложило бы персонажа на землю и можно будет прыгать на

MasterGH

MasterGH

CE Lua выход из рутины до ближайшего цикла

Особенности 1) переход на следующий адрес по инструкциям ветвления вычисляется Lua кодом по ret, jmp, jmp condition до исполнения кода 2) определение опкодов ветвления по readmem без дизассемблериования 3) по тестам последний брейкпоинт снимается на ближайшем цикле   Пример лога до близжайшего цикла, когда поднимается из рутины вверх &#

MasterGH

MasterGH

Плагин для ведения логов в CE

Плагин ведет историю поиска, отсева, отмены. Логи выглядят следующим образом Для чего может применятся На шаге отсева посмотреть в логах, какое значение искали до этого и какой способ поиска использовали. При неудачных поисках мы просматриваем как и что мы сканировали раньше. Если вообще ничего не получается при сканировании, то логами можно обмениваться. Горячие клавиши, которые настраиваются из окна настроек CE работают и в логах.   Установка: скоп

MasterGH

MasterGH

Lua Plugin CE Disassembler

Обновление плагина   Установка с репозитория: ссылка     Кратко 1. Добавил сохранение/загрузку параметров. Хранение в текстовом файле в папке autoruns 2. Добавил настройки графического интерфейса (слайдеры, пункт меню) Подбронее  

MasterGH

MasterGH

"AlphaGo Zero совсем на пальцах"

За нейронными сетями и быстрыми вычислениями (например на тензорных ядрах видеокарт)    скорее всего,  огромное будущее и огромный спрос. Стартануть в эту тему можно,  изучив статью с хабра о принципах AlphaGo Zero и вот эту.  Основные моменты это рекуррентные сети, которые ищут в глубь и сверточные сети, которые чем-то похоже на хеш-сумму (на тензорных ядрах они-то и быстро считаются).    На данный момент по своей работе я активно развиваюсь в нескольких направлениях: в мн

MasterGH

MasterGH

О стабильности CE 7.2, точке входа и выходе видео

Прошлая точка входа запускающая активирующий скрипт не хотела работать, если запустить гигантский трейнер (сгенеренный на CE), а потом игру.   Для работы трейнера точка входа теперь  задается вот таким образом после генерации кода трейнера   Подробнее в исходниках (лучше смотреть позже, после просмотра видео, которое еще готовится) gta3.CT   У версии CE 7.2 есть к сожалению баги. 1. При генерации трейнера нужно вручную править высоту надписей —  надписи

MasterGH

MasterGH

CE Lua Оптимизация splitDisassembledString()

Напишем функцию, которая в 3.2 раз быстрее кода ниже splitDisassembledString(disassemble(address))   Сравнивая скорости получаем оптимизацию в ~3.20 раза быстрее.   Пример использования function GetDebugString2(address) local clearString = string.gsub(disassemble(address), '%s','') return string.match(clearString, '^(.-)%-(.-)%-(.-)$') end local address, bytes, opcode = GetDebugString2(0x0045464A) print(address) print(bytes) print(opcode) gsub очищает пробелы

MasterGH

MasterGH

Обработка исключения в Cheat Engine Lua

pcall() функция может вызывать функцию, которая может вызывать исключение. Возвращает статус в виде булевой о том, есть ли исключение или нет и возвращает текст исключения.    Источник   Как этим пользоваться? Если вдруг знаем, что может произойти ошибка, то можно её обработать и выполнить правильное действие не останавливая работу Lua скрипта. Или например если  не выполняется условие, то можем сами создать ошибку с помощью функции error, что остановит скрипт.

MasterGH

MasterGH

Большой бряк на структуру размером 0x1000 за 10 секунд

Пример лога снятия данных с брейкпоинта на структуру 0x1000 за 10 секунд. В структуре по смещению 0x2C0  находится здоровье персонажа. На начало этой структуры и был поставлен брейкпоинт .   Ниже будет большой кусок опкодов, который работает со структурой. Можно посмотреть в каком порядке опкоды исполняются и с какими смещениями, насколько далеко они друг от друга. Некоторые смещения рядом с известными смещениями могут заинтересовать.  Одинаковые опкоды в определенном порядке, но

MasterGH

MasterGH

Unity + ML (Python)

Unity — среда для тренировки искусственного интеллекта. Ниже пример обучения ИИ для игры в гонки.     В новой версии Unity много изменений, если кому интересно на официальном сайте много информации по обновлениям

MasterGH

MasterGH

Чтение адресов и записи в адреса

Я обратил внимание на следующие поведения записи и чтения 1. Срабатывают только инструкции чтения до изменения параметра, адрес рабочий С адресом работают инструкции на чтение, но если в друг в этом адресе что-то поменять (например в CE), тот тут же выскочат инструкции на запись. Нельзя однозначно утверждать, что адрес является настроечным параметром, но и нельзя утверждать, что это не рабочий адрес. Какая-то инструкция может жестко менять значение, а может быть будет "стараться" измен

MasterGH

MasterGH

CE Lua программа пишет программу

Функция loadstring исполняет строку кода как функцию. f = loadstring ("print 'hello, world'") f () --> hello, world Есть еще и такая функция как string.dump. Она создает строку из функции function f () print "hello, world" end s = string.dump (f) -- Можно строку тут же запустить как код loadstring (s) () --> hello, world Если по обратной связи строить и исполнять строку кода, то

MasterGH

MasterGH

Unreal Engine 4.22. Как захотеть делать игры

У меня бывают такие случаи, когда увидишь простой пример кода после которого захочется заняться разработкой какой-нибудь игры.  Вот один из таких примеров о том, как сделать подъем и опускание предмета и затем его вращение. Это 5 строчек "таких" и 5 строчек "таких", вот подъем и вращение   На видео код можно применять для левитации предметов и вражеских персонажей, которых  можем поднимать, удерживать и бросать. 

MasterGH

MasterGH

×
×
  • Создать...

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

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