• CE Документация

    Прикреплена Перенесена
    1
    0 Голоса
    1 Сообщения
    337 Просмотры
    MasterGHM
    Основная: CeWiki Исчерпывающая: Lua.txt (обновление 2023) Форум: cheatengine.org Сайт: cheatengine.org Использовать CE можно разными способами. Самый простой - ничего не програмировать, а искать адреса в памяти процесса игры по правилам поиска, замораживать их значения. Посложнее - искать и использовать указатели на адреса памяти, чтобы после перезапуска уровня или игрового процесса таблица с адресами правильно работала. Посложнее будет правка дизассемблированного кода с помощью скриптов cheat engine, что даст гораздо больше управления над значениями адресов памяти, например, записать здоровье дружественным юнитам и даже создание предметов на карте или в инвентаре. Работа с cheat engine это один из самых интересных способов познакомиться с программированием на асемблере через асемблерные вставки и через прогон отладочного кода в пошаговой отладке (или без прогона через брейкпонты). Также можно ознакомиться с програмированием на lua, программированием dll-ок на c++. На C++, reclass и IDA можно построить классы и управлять игровым поцесссом более гибко и масштабно. Также есть инструменты под определенные игровые движки, которые облегчают реализацию читов, например, поиск функций (отладочных, декомпилированных) для читов и их создания. Скорее всего, если поискать, то можно много новых инструментов найти в Интернете. Также ознакомиться с программированием можно на уровнях игровых движков (unity, unreal engine, cry engine и других) через поиск в Интернете. Так можно получить представление о древовидной связи игровых обьектов сущностей и связи этих обьектов с обьектами классов-поведений. Часть классов-поведений(компоненты) являются частью игрового движка, а часть является особенностью определеной игры. Например, создание, удаление, копирование обьекта-сущности с его компонентами - это прерогатива функций игрового движка, на котором делают множество игр. А, например, управление игровой механикой это уже связь с конкретной игрой или даже конкретной версии игры. Когда, работаешь с игровым движком, то прекрасно понимаешь почему динамические указатели имеют место быть. И это и сцена, которая хранит дерево обьектов, это само дерево обьектов и это место в динамическом списке компонентов и сам компонент, который может работать с переменной локальной или же обращаться к обьектам других компонентов или классов не на основе компонентов. Короче говоря, если планируешь изучать прогоаммирование, то ничего нет интересней начать с программирования читов и изучения архитектуры операционной системы (начиная с процессов, потоков, памяти и т.п.). Также изучая готовые примеры скриптов, кодов, исходников игр и трейнеров. Написание трейнеров и обхода защит от трейнеров, тоже очень поможет в изучении программирования.
  • ASM API

    Прикреплена Перенесена
    1
    0 Голоса
    1 Сообщения
    687 Просмотры
    MasterGHM
    Опкоды из Intel-ловской документации Instruction_Set_Reference.pdf 64-ia-32-architectures-software-developer-vol-2a-manual.pdf 64-ia-32-architectures-software-developer-vol-2b-manual.pdf
  • Windows API

    Прикреплена Перенесена
    1
    0 Голоса
    1 Сообщения
    686 Просмотры
    MasterGHM
    API Windows - это пользовательские функции для работы с процессами и памятью. Все программы, приложения, сервисы, в том числе и программа CE используют эти функции и даже игры. Функции что-то делают, что-то вызывают, какие-то результаты возвращают. Смотрим справки Win32.chm - справочник Другие ресурсы: Справочник по Windows API Вызов функций Windows API Основы программирования для Win32 API Софт для работы с API: API Monitor: Spy on API Calls and COM Interfaces (Freeware 32-bit and 64-bit Versions!) | rohitab.com https://sematext.com/blog/api-monitoring-tools/[Win32.chm](/assets/uploads/files/1683990989161-win32.chm) Книги: Книга "[RU] Джефри Рихтер Windows для профессионалов. 4 издание.pdf"
  • CE Auto Assembler API

    Прикреплена Перенесена
    1
    0 Голоса
    1 Сообщения
    106 Просмотры
    MasterGHM
    Auto Assembler Auto Assembler - Commands - Cheat Engine (описание команд Autoassebler c примерами). Там же вставки C-языка {$CCODE playerbase=RCX newhealth=RBX} int isplayer=*(*int)(playerbase+0xb8); if (isplayer) ​newhealth=100000; else ​newhealth=0; {$ASM} Руководство по C языку (https://www.geeksforgeeks.org/c-programming-language/) Там же вставки Lua языка {$LUACODE playerbase=RCX newhealth=RBX} if readInteger(playerbase+0xb8)==1 then newhealth=100000 else ​newhealth=0 end {$ASM} Руководство по Lua (https://www.lua.org/manual/5.4/) Lua классы в CE (https://wiki.cheatengine.org/index.php?title=Cheat_Engine:Lua)
  • CE Lua API

    Прикреплена Перенесена
    1
    0 Голоса
    1 Сообщения
    54 Просмотры
    MasterGHM
    CE 7.5.0.7431 (в репозитории файл с кратким описанием API celua.txt, который можно найти рядом с CE) Wiki: Lua - Cheat Engine (содержит более полное описание классов с примерами)
  • Unity API (игровой движок)

    Перенесена
    1
    0 Голоса
    1 Сообщения
    89 Просмотры
    MasterGHM
    API
  • Panda3D API (игровой движок)

    Перенесена
    1
    0 Голоса
    1 Сообщения
    50 Просмотры
    MasterGHM
    API API Reference — Panda3D Manual
  • Frostbite API (игровой движок)

    Перенесена
    1
    0 Голоса
    1 Сообщения
    61 Просмотры
    MasterGHM
    API Frostbite API Блоги [Week 7] A Real Game Engine - Isetta Engine
  • CryEngine API (игрвой движок)

    Перенесена
    1
    0 Голоса
    1 Сообщения
    67 Просмотры
    MasterGHM
    Изучив API, можно управлять иерархией сущностей, сценами, физикой и т.п. в играх созданных на этом движке. Игровой бинарный код будет состоять из функций игрового движка и функций разработчиков игры. Можно управлять сущностями на основе API движка или же функциями разработчиков.
  • UnrealEngine API (игровой движок)

    Перенесена
    1
    0 Голоса
    1 Сообщения
    83 Просмотры
    MasterGHM
    UnrealEngine - популярный игровой движок с открытым API. Открытое API должно позволить управлять иерархией сущностей (акторы). Т.е. создать сущности, удалять, менять положение в иерархии. Управлять сценами с этими сущностями, физикой, Meshes, эффектами, звуками... Единственное нужно разобраться в этом API, собрать dll модуль на языке программирования и загрузить его в игру... ну, и возможно, управлять этим модулем извне.
  • Работа с системой контроля версий в команде разработчиков

    git-flow версионирование
    1
    0 Голоса
    1 Сообщения
    100 Просмотры
    MasterGHM
    Инфа по совместной работе с гитом. Может быть пригодится кому, а может и нет. Такую систему я использую на работе недавно. Можно совместно работать над одним большим проектом через git-flow. Возможно, кто-то из форумчан тоже использует git flow на работе. git-flow — это набор расширений git предоставляющий высокоуровневые операции над репозиторием для поддержки модели ветвления Vincent Driessen. Кратко. Модель контроля версии построена на 4 ветках master - релизы develop - разработка feature - фичи hotfix - исравления С develop начинается разработка через копирования в ветку feature. Над фичей идет работа, а после завершения feature мержится с develop и feature сразу удаляется. После запланированных изменений develop мержится с master уходя в релиз. Если возникли баги, то от master создается ветвь на hotfix . После фиксов hotfix мержится с master. Доступ к мастер ветки может иметь один человек или его доверенные лица. Ветка Develop открыта для разработчиков. Это значит, что множество разработчиков колдуют в Develop ветке, а мержит изменения с master уже главный разработчик или несколько главных разработчиков. В мастере создаются теги с обозначением версии. Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать: МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API. МИНОРНУЮ версию, когда вы добавляете новый функционал, не нарушая обратной совместимости. ПАТЧ-версию, когда вы делаете обратно совместимые исправления. Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ формату. git-flow заметки Семантическое версионирование
  • Lua ООП конспект

    ce lua oop
    1
    0 Голоса
    1 Сообщения
    70 Просмотры
    MasterGHM
    Пригодится для создания больших плагинов в Cheat Engine. Более ~500 строк Наследование ClassX = {} function ClassX:New(_argument1, _argument2) local obj = {} obj.argument1 = _argument1 obj.argument2 = _argument2 -- Через "self" function obj:GetValue1() return obj.argument1 end function obj:GetValue2() return obj.argument2 end setmetatable(obj, self) obj.__index = ClassX return obj end someObject = ClassX:New("A", "B") print(someObject.GetValue1()) print(someObject.GetValue2()) Woman = {} --наследуемся setmetatable(Woman ,{__index = ClassX}) --проверяем masha = Woman:New("Марья","Ивановна") print(masha:GetValue1()) --->результат: Марья Инкапсуляция Person = {} function Person:new(name) --приватное свойство local private = {} private.age = 18 local obj = {} --публичное свойство obj.name = name or "Вася" -- "Вася" - это значение по умолчанию function obj:getAge() return private.age end setmetatable(obj,self) self.__index = self return obj end vasya = Person:new() print(vasya.name) --> результат: Вася print(vasya.age) --> результат: nil print(vasya:getAge()) --> результат: 18 Полиморфизм Person = {} function Person:New(name) local private = {} private.age = 18 local obj = {} obj.name = name or "Вася" -- Защищенный от переорпеделения function obj:GetName() return "Person protected "..self.name end -- Переопределяемый function Person:GetName2() return "Person "..self.name end setmetatable(obj, self) self.__index = self return obj end --создадим класс, унаследованный от Person Woman = {} setmetatable(Woman,{__index = Person}) function Woman:GetName() return "Woman protected "..self.name end function Woman:GetName2() return "Woman "..self.name end --проверим masha = Woman:New() print(masha:GetName()) --> Person protected Вася print(masha:GetName2()) --> Woman Вася ref
  • FPU инструкция FINCSTP. Очистка ST(0)

    ce aa fincstp
    1
    1
    0 Голоса
    1 Сообщения
    89 Просмотры
    MasterGHM
    Команда FINCSTP добавляет единицу (без переноса) к трехбитному полю TOP слова состояния FPU. Эффект действия команды FINCSTP заключается во вращении стека. Она не изменяет регистров тэгов и не перемещает данные. Она не эквивалентна операции выталкивания из стека, потому что, она не устанавливает тэг старой вершины стека в значение пустой. Флаги C0, C2, C3 регистра SW после выполнения команды не определены, флаг C1 устанавливается равным 0. Похожа на FSTP, также вращает стек регистров FPU (я кстати не знал, увидел при тестах в CE), но только не перемещает значение по адресу. FSTP [здесь указывается адрес или регистр] FINCSTP Если нужно вытолкнуть значение из ST(0), а адрес куда его выталкивать не нужен, то можно сделать так FINCSTP Или аналог FSTP ST(0) При использовании стоит обратить внимание на флаги, возможно их состояние будет влиять на исполнение кода. *Вообще не помню почему я пишу "выталкивать значение" через fstp, когда оно появляется снизу в ST(8). Т.е. не выталкивается по сути.
Любое копирование материалов с указанием первоисточника.
СeLua[RU] 2026©