Пост для тех, кто интересуется Lua в Cheat Engine.
Можно подхватить разные моменты активации и деактивации записи в таблице CE и рассчитать размер кода между метками
1. По шаблону вставляем АА код для туториала Cheat Engine
2. Регистрируем метки-маркеры в АА коде
3. Этими метками в Lua считаем и выводим ""endCode - startCode" размер байтов
Пример, который подсчитал 15 байтов
Пример скрипта
Документация ко
Вступление
В CE выделим участок кода и функцию
Sub eax,edx - вычитание и наиболее значимее чем запись и чтение.
После декомпиляции
Если выделили две инструкции
Обращать внимание будем на математику, логику, условия и потом на чтение и запись.
В данном случае, нужно найти вычитание из адреса "eax4->f1152 = eax4->f1152 - (eax3 + 1)"
Как поставить декомпилятор
1. С форума Cheat Engine качаем архив
2. Распаковыв
Инфа по совместной работе с гитом. Может быть пригодится кому, а может и нет. Такую систему я использую на работе недавно.
Можно совместно работать над одним большим проектом через git-flow. Возможно, кто-то из форумчан тоже использует git flow на работе.
Кратко. Модель контроля версии построена на 4 ветках
master - релизы
develop - разработка
feature - фичи
hotfix - исравления
С develop начинается разработка через копирования в ветк
Источник
Как вступление. Мне нравится Lua, потому что в нем можно писать код в виде строковых данных (и Lua строки, и ассемблерные строки), а затем выполнять эти строки как код. В теории код может по фидбеку делать другой код в автоматическом режиме. Это на мой взгляд неисчерпаемые потенциальные возможности AI ограничивающиеся железом.
В CE 6.7 функция autoAssemble вызываемая в Lua скриптах позволяет включать и теперь выключать скрипт со "своим" dealoc-ом.
При
UserData в Lua это пользовательский тип. Точно не знаю, но я думаю в документации в CE Lua (celua.txt или здесь на офф. сайте) тип userData у всех классов или большинства классов. Например, проверим, что главная форма CE это userData тип
local mainFormCE = getMainForm()
print(type(mainFormCE))
> userdata (вывод из консоли)
Выводим список свойств следующим образом через getmetatable функцию. Метатаблица — это особая таблица свойств Lua-переменной (подробнее здесь)
local mainF
Завтра состоится очень скромная премьера 27 июня в 19.00 (по Московскому времени) видео "Фильтр-свой" чужой.
Почему видео находится не на официальном канале? Какая цель у видео?
Это личное любительское видео-хобби по отладке и изменению игрового кода — взлому игр. Я записываю видео для себя и для желающих.
Приходите смотреть
gta3.CT
Планируется улучшать и дорабатывать плагины, показать как с ними работать.
1. Вывод данных в окно логов: сканирование, подключение к процессу, опции сканирования, состояния активации и деактивации записией в таблице CE и другие
2. Запись действий из пункта 1, сохранение этих действий и воспроизведение по кнопке или горячим клавишам
3. Показ в дизассемблере CE ветвлений кода при проходе потоками разными цветами (можно видеть код, который не был пройден в разных ситуациях)
4. До
Поиск по модулям
Исходник
Поместить ModuleListRegioScan.lua в autorun.
Что интересно, Дарк Байт решил написать на Lua. Эта функция жестко в CE не впиливается. Можно выбирать, хочу это расширение поставить или нет. Посмотрел, если понравится, то оставил. Cheat Engine перекомплировать не нужно и не нужно в нем делать опции скрывать или показывать функционал.
Источник
Как контролировать включение и выключение скриптов в таблице
AA или "Autoassembler code" код похожий на язык программирования ассемблера.
Обычный АА-скрипт состоит из двух директив и добавляется в таблицу CE как запись
// Код срабатывающий как при активации, так и при деактивации
[ENABLE]
// Код активации
[DISABLE]
// Код деактивации
Чтобы код активировался, нужно включить галку напротив записи в таблице и наоборот выключить.
Есть такие директивы как {
1. WebSite-Watcher позволяет отслеживать изменения на веб-страницах в том числе по по регулярным выражениям. Можно отслеживать изменения на сайтах Cheat Engine и других. Форум отслеживать смысла особого нет. Проще подписаться на обновление и почтовый клиент поставить.
2. Программы тестирования и автоматизации под разные ОС:
Sikuli — открытая кросс-платформенная визуальная среда создания сценариев-скриптов
AirTest IDE — почти как Sikuli и более того, китайские разработчики
Репозиторий
1. На адрес устанавливается брейкпоинт.
2. Идем в игру делаем или не делаем что-то
3. Начинают срабатывать инструкции на брейкпоинте
4. От каждой инструкции начинается трейслог, подобный тому, который есть
Отличная книга по изучению паттернов проектирования. Ее можно читать со шпаргалкой по паттернам (иллюстрацию по паттернам можно загуглить).
Перед этим еще загуглить SOLID + Unity .
До кучи еще алгоритмы и структуры данных.
Все это пригодится, чтобы пойти работать на программиста игр или приложений с разными типами реальности: дополненная, виртуальная и смешанная. А так же сейчас можно встретить вакансии по программированию не только Android, iOS устройств, шлемов и очков, но раз
Решил попробовать написать CE Lua скрипт, который прочесывает структуру и в Dissect data/structures окне создавал бы структуру только со смещениями, с которыми код работает, т.е. читает или пишет.
Например, мой персонаж прогуливается по городу, а каждые 200 мс ставится брейкпоинт на смещение +1 до гипотетической N границы структуры (например до 4096).
Я не успел сделать определение типа, но смещения внутри структуры получить я успел.
Итак, находим начало стру
Кому интересно как c помощью инструмента Fuse сделать модель вроде той, что я набросал на скриншоте выше и заставить её бегать, я предлагаю посмотреть в этом видео, незнакомого автора.
1. Открываем trainme Dark Byte.
2. Проходим первый шаг (там нужно сделать One Hit Kill чит через прогресс бар, количество патронов тоже интересно поломать)
3. Так вот на Step2 ищем адрес здоровья нашего космического корабля.
Ставим брейкпоинт на доступ, стреляем.
Видим, три адреса и вот теперь новые функции в контекстном меню как на скриншоте
На "(1)-(2)" - вызываем контекстное меню выделив адрес своего корабля и добавляем его в группу1. Тоже самое делаем д
Пример1. Узнать во сколько раз string.match() медленее string.find()
Пример2. Создание лишней локальной переменной
Ответы: 1.38, 1.04.
Если значение меньше единицы, то оптимизированный код хуже.
Если значение больше единицы, то стоит использовать более оптимизированный вариант.
Для простого поиска лучше использовать string.find чем string.match.
Еще несколько примеров
Для чего может пригодиться. Может пр
Вполне читерская программа Sikulix
Помощник для нахождения отличий
Исходник:
Картинки для тренировки
Игра
Sikulix
Документация
Туториалы
Sikulix умеет:
ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата);
читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживат
Обычно, дается 4 аппаратных брейкпоинта на адреса памяти. Их можно включать одновременно и найти инструкции, которые в данный момент срабатывают. Так можно определить тип данных у адресов и найти инструкции. По инструкциям найти смещения внутри дизассемблированной инструкции. По смещениям визуально определить структуры в структурах. Расструтуризовать структуру в dessect data и найти много интересных параметров для читов. Вручную с 4мя бряками делать очень хлопотно.
Начинается все с
Можно в редакторе сделать автозавершение инструкци для CE Lua и даже для CE Autoassembler.
Накидал пример, может быть, кому интересно будет для других языков.
Установка. Поместить файл в директорию на скриншоте
lua.xml
Настройки