Существует три логических оператора: and, or, not.
Те, кто уже знаком с языками программирования знают, как эти логические операторы работают.
Например,
A = true
B = true
if A and B then print('Условие "A and B" выполняется') end
if A or B then print('Условие "A or B" выполняется') end
B = false
if not (B == A) then print('Условие "not (B == A)" выполняется') end
Но, дальше интереснее.
Все логические операторы считают false
Ниже находится обучающий пример плагина для CE Lua с установкой компактного режима применяя парадигму ООП — инкапсуляции.
Для программирования плагинов на Lua могут пригодится приемы ООП. Это касается сущностей, их поведений и взаимодействий между ними. В данном примере CECompactView — описание класса на основе мета-таблицы и оно является сущностью. Функции класса — uncompact() и compact(), которые реализуют поведения этой сущности. Основной скрипт с описанием сущности можно помести
Пример раскрашивания адресов без каких-либо условий
source
1) Из прошлой записи блога нашли "MainForm.Foundlist3" для работы с TListView (компонент от Lazarus среды разработки)
2) OnCustomDrawSubItem — функция обработчик раскрашивания вложенных элементов в Item. Не поленитесь, зайдите в файл документации (C:\Program Files\Cheat Engine 7.4\celua.txt)
Также есть OnCustomDrawItem — раскрашивание невложенных элементов.
Этот способ раскрашивания можно использо
Скрипт позволит вывести иерархию компонентов CE в виде текста.
Иерархия компонентов CE нужна для написания плагинов.
Например, для ColorPicker и для смены шрифта (подобротнее об этом было где-то было в блоге).
Скрипт:
Для CE 6.7
Завтра состоится очень скромная премьера 27 июня в 19.00 (по Московскому времени) видео "Фильтр-свой" чужой.
Почему видео находится не на официальном канале? Какая цель у видео?
Это личное любительское видео-хобби по отладке и изменению игрового кода — взлому игр. Я записываю видео для себя и для желающих.
Приходите смотреть
gta3.CT
Прошлая точка входа запускающая активирующий скрипт не хотела работать, если запустить гигантский трейнер (сгенеренный на CE), а потом игру.
Для работы трейнера точка входа теперь задается вот таким образом после генерации кода трейнера
Подробнее в исходниках (лучше смотреть позже, после просмотра видео, которое еще готовится)
gta3.CT
У версии CE 7.2 есть к сожалению баги.
1. При генерации трейнера нужно вручную править высоту надписей — надписи
Точка входа в работу читов на Cheat Engine на следующем видео будет начинаться с активирующего скрипта. Таблицу с читами по принципу активирующего скрипта я покажу на видео. В нем будет об общем принципе написания таблицы на CE и расширении её с большим количеством опций + фильтр свой/чужой через функцию commonalities + вынос адреса начала структуры + запись по оффсетам от начала структуры и т.п.
"Активирующий скрипт" — главный скрипт, который вытаскивает адрес начала структуры игрок
Сложность: 1/5.
В этом видео рассматривается способ взлома игры "Удаление инструкций" (noping).
С помощью этого способа игровое значение не будет перезаписываться игрой, потому что в игре удаляется инструкция записи значения.
Сложность: 1/5.
В этом видео рассматривается самый простой способ взлома игр "Заморозка значения".
Ссылка на скачивание Cheat Engine
Ссылка на типы данных
Вполне читерская программа Sikulix
Помощник для нахождения отличий
Исходник:
Картинки для тренировки
Игра
Sikulix
Документация
Туториалы
Sikulix умеет:
ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата);
читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживат
Я решил рассмотреть три новые функции:
Пользовательские типы данных в hex-окне
Фильтр на окне определения адресов
Поиск данных в окне Tracer
1. Пользовательские тип данных в hex-окне
Пример как сделать:
Фильтр на окне определения адресов
3. Поиск данных в окне Tracer
Обычный поиск, как на прошлых скринах
Примеры
Ну и более интересная версия перебора и одновременн
Наткнувшись на тему вспомнил, что не все написал. В прошлом посте блога рассматривал бряк через DBVM. К сожалению, та версия dbvm из поста блога пропускала очень много инструкций и практически смысла нет её юзать. Например она определяла 16 инструкций, когда их было несколько тысяч, т.е. например 500 оффестов и на каждой по 10 инструкций. По DBVM надо, конечно, писать Дарк Байту, но желания нет.
Так вот. Не только с DBVM можно ставить бряки на участок памяти. Есть еще тип брейкп
Пример лога снятия данных с брейкпоинта на структуру 0x1000 за 10 секунд.
В структуре по смещению 0x2C0 находится здоровье персонажа. На начало этой структуры и был поставлен брейкпоинт .
Ниже будет большой кусок опкодов, который работает со структурой. Можно посмотреть в каком порядке опкоды исполняются и с какими смещениями, насколько далеко они друг от друга. Некоторые смещения рядом с известными смещениями могут заинтересовать. Одинаковые опкоды в определенном порядке, но
Обычно, дается 4 аппаратных брейкпоинта на адреса памяти. Их можно включать одновременно и найти инструкции, которые в данный момент срабатывают. Так можно определить тип данных у адресов и найти инструкции. По инструкциям найти смещения внутри дизассемблированной инструкции. По смещениям визуально определить структуры в структурах. Расструтуризовать структуру в dessect data и найти много интересных параметров для читов. Вручную с 4мя бряками делать очень хлопотно.
Начинается все с
Функции:
1) Три типа данных: float, double, integer
2) 10 слотов сохранений
3) Управление горячими клавишами. ctrl+X - где X от 0 до 9 сохраняет позицию, shift + X загружает ранее сохраненную позицию
4) Озвучивание загрузки или сохранения Как пользоваться:
1. Подключаемся к процессу игры любым способом (хоть вручную, хоть на Lua, чем угодно)
2. В CE вставляем Lua скрипт
3. Меняем адрес teleport_address = "03D2C6DC" на тот который нужно.
Здесь
За нейронными сетями и быстрыми вычислениями (например на тензорных ядрах видеокарт)
скорее всего, огромное будущее и огромный спрос. Стартануть в эту тему можно, изучив статью с хабра о принципах AlphaGo Zero и вот эту. Основные моменты это рекуррентные сети, которые ищут в глубь и сверточные сети, которые чем-то похоже на хеш-сумму (на тензорных ядрах они-то и быстро считаются).
На данный момент по своей работе я активно развиваюсь в нескольких направлениях: в мн
Unity — среда для тренировки искусственного интеллекта. Ниже пример обучения ИИ для игры в гонки.
В новой версии Unity много изменений, если кому интересно на официальном сайте много информации по обновлениям
В таблице поиска есть колонки ссылающиеся на название Lua перменных: "value" и "previousvalue"
А что можно делать?
Сравнивать текущее и предыдущие значения вместе или по отдельности, в том числе на разных вкладках CE
Примеры:
value == 65
value == 0x65 (или поставить галку hex)
value ~= 65 (или поставить галку not)
Можно и такое сравнение сделать после поиска неизвестного используя математические функции:
math.abs(value - previousvalue)
11 декабря 2019 года форуму Gamehacklab исполнится 10 лет. Это дата первого пользователя форума.
Поздравляю всех:
активных пользователей,
высший состав форума, админов и модеров,
старожил,
помогаторов,
тех кто был на форуме очень давно и перестал заходить.
Отдельно @Xipho, @srg91, @partoftheworlD, @Garik66, @LIRW, @SER[G]ANT, @gmz. Извините, если кого-то персонально пропустил.
Можно пожелать всем бесконечного энтузиазма на тему поиск
Вдохновение появилось после просмотра видео @Xipho по Ultimap
Когда в Ultimap появляются Nx адресов с одним счетчиком, то хочется увидеть эти связи на графиках IDA.
Появилась идея загуглить как в IDA через IDC скрипт отрисовать ветвь кода или ветви кода, на которых эти самые адреса связаны между собой, а все вложенные другие скрывать.
Пока из подсказок я нашел это и это
Допустим для тренировки даны два адреса из одной ветви кода (это я точно знаю, т.к. получен н