Я обратил внимание на следующие поведения записи и чтения
1. Срабатывают только инструкции чтения до изменения параметра, адрес рабочий
С адресом работают инструкции на чтение, но если в друг в этом адресе что-то поменять (например в CE), тот тут же выскочат инструкции на запись. Нельзя однозначно утверждать, что адрес является настроечным параметром, но и нельзя утверждать, что это не рабочий адрес. Какая-то инструкция может жестко менять значение, а может быть будет "стараться" измен
Unity — среда для тренировки искусственного интеллекта. Ниже пример обучения ИИ для игры в гонки.
В новой версии Unity много изменений, если кому интересно на официальном сайте много информации по обновлениям
С точностью до тысячной доли секунды можно посчитать задержку выполнения кода, что можно применить как счет производительности.
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 секунд, то это вероятно корневой цикл, а если менее, то
В игровом движке может быть следующая архитектура
Менеджер сцен
Список сцен
Сцена1
Менеджер игровых объектов
Список игровых объектов
Игровой объект1
Игровой объект2
Игровой объект3
Сцена2
Менеджер игровых объектов
Список игровых объектов
Напишем функцию, которая в 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 очищает пробелы
Сложность: 1/5.
В этом видео рассматривается самый простой способ взлома игр "Заморозка значения".
Ссылка на скачивание Cheat Engine
Ссылка на типы данных
У меня бывают такие случаи, когда увидишь простой пример кода после которого захочется заняться разработкой какой-нибудь игры.
Вот один из таких примеров о том, как сделать подъем и опускание предмета и затем его вращение. Это 5 строчек "таких" и 5 строчек "таких", вот подъем и вращение
На видео код можно применять для левитации предметов и вражеских персонажей, которых можем поднимать, удерживать и бросать.
На видео показано рисование через поток и рисование без потока
Когда происходит рисование без потока, то окно нельзя подвинуть, не работает кнопка и даже не возможно работать с Cheat Engine
Код:
&
Скрипт позволит вывести иерархию компонентов CE в виде текста.
Иерархия компонентов CE нужна для написания плагинов.
Например, для ColorPicker и для смены шрифта (подобротнее об этом было где-то было в блоге).
Скрипт:
Для CE 6.7
Нет времени, пока напишу заметки.
1. Можно сделать плагин с визуализацией счетчиков обращений к видимым данным в MemoryView с подключенным DBVM.
2. По аналогии в Dessect Data Scanner сделать выбор DBVM режима.
DBVM позволяет обойти ограничение в 4 аппаратных брейкопинта и в реальном времени визуализировать данные, которые обращаются к памяти на чтение, запись. Показывать счетчик обращения и даже показывать спискок инструкций при наведении курсором на байт или иные да
В этой записи блога не будет чего-то, что показало бы "вау, это что-то новое и есть результат". Все сырое и результат пока мне только снится — быстрый поиск условий и включение, и выключение ветвей по этим условиям. Мыслю я не инструкциями, не группой инструкций, а ветвлениями кода и условиями, которые их запускают. Проще 20 ветвлений по 5 окон, чем тонна инструкций... Жаль пока теория, практики с результатом нет.
Рисунок. На нем слева п
Для тех кому интересно, вопрос к ним. Какие критерии можно добавить спрашивая оценку плагина?
Например, по 5-ти бальной шкале спрашивать оценку у пользователей:
Необходимость плагина в Cheat Engine
Работает без ошибок
Понятно как пользоваться
Интерфейс плагина
Удобство плагина
Нравится
Простая установка
Думаю, прикрутить аналитику прямо в плагины. Там будет как аналитика использования плагина, та
В архиве два файла. Функции
1. Контекстное меню. Компактное/ не компактное окно CE
2. Сохранение и загрузка положения и размера формы CE
3. Сохранение и загрузка компактного состояния формы или не компактного
Сделано на энтузиазме после написания класса сохранения и загрузки параметров.
После запуска, CE будет там, где её (CE) закрыли с по
Пример раскрашивания адресов без каких-либо условий
source
1) Из прошлой записи блога нашли "MainForm.Foundlist3" для работы с TListView (компонент от Lazarus среды разработки)
2) OnCustomDrawSubItem — функция обработчик раскрашивания вложенных элементов в Item. Не поленитесь, зайдите в файл документации (C:\Program Files\Cheat Engine 7.4\celua.txt)
Также есть OnCustomDrawItem — раскрашивание невложенных элементов.
Этот способ раскрашивания можно использо
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" может попадать некоторая другая функция с аргументом найденного слова (тогда будет вызов этой другой функции при каждом захвате символа или
На скриншоте 22 ветви трассеровки от адреса патронов не входя в call-ы до корневого цикла. Корневой цикл определяется, когда поиск происходит более трех секунд и не находит ничего. Вполне хватает этого времени. Буду еще повторно тестить и проверять доходит ли он цикла или надо еще что-то придумывать.
Желтым выделяется точка, вертикальная полоса ветви и связи с такими же узлами. Узел это адрес выхода из ret
Уже была запись про тестирование производительности.
В этом примере тестируем разное обращение к функции со средним арифметическим значением
Результаты при 4-х запусках
avg = 0.93333998758048
avg = 1.0322099291325
avg = 0.92657961891689
avg = 1.1883763135947
Вывод. Разница не существенная.
В версии Unity 2018 довольно много интересного.
1. Это Unity Hub. Та штука, которая позволяет быть в курсе новых версий Unity.
2. PackageManager. Покажет пакаджи установленный в проекте.
3. Pro Builder. Довольно интересный инструмент, который позволяет моделить оркужение в Unity и творить простые локации, здания и создавать примитивы с наложением текстур... там очень много чего, я не не смотрел особо. Это альтернатива террейну. Фишка в том, что мы не являясь художниками (2
Ниже находится обучающий пример плагина для CE Lua с установкой компактного режима применяя парадигму ООП — инкапсуляции.
Для программирования плагинов на Lua могут пригодится приемы ООП. Это касается сущностей, их поведений и взаимодействий между ними. В данном примере CECompactView — описание класса на основе мета-таблицы и оно является сущностью. Функции класса — uncompact() и compact(), которые реализуют поведения этой сущности. Основной скрипт с описанием сущности можно помести
Нажали checkbox — заполнились данные по базовому адресу
Отжали checkbox — удалились данные
Если проще руками забить и поставить опцию раскрытия, то можно и без скрипта.