GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Синтаксис и команды

    Запланировано Прикреплена Закрыта Перенесена Базовая информация
    assemblercheat engineскриптскриптысинтаксис
    1 Сообщения 1 Posters 1.6k Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • PromisingP
      Promising
      отредактировано Promising

      Синтаксис и команды скриптов в Cheat Engine.


      Скриптовой язык в Cheat Engine в основном позволяет создавать и внедрять в игру ассемблерный код на ходу, и выгружать его из игры восстанавливая оригинальный код.

      Окно скриптинга может быть открыто через окно отладчика, или сочетанием клавиш Ctrl+A в этом окне:

      aa3d2169-17ba-46a0-8283-610eeac9bb0d-изображение.png

      После открытия вы увидите следующее окно:

      dc90933e-a171-435d-8681-fc97e5aa4bde-изображение.png

      В нём можно написать скрипт и нажать кнопку Execute что позволит выполнить скрипт. Что бы добавить скрипт в таблицу и сохранить его, вам сначала нужно добавить в него определённые команды, а именно две команды обозначающие разделы, которые будут выполняться при включении и выключении скрипта [ENABLE] [DISABLE]:

      18a14491-4909-4895-b017-9a3a8e5b33e0-изображение.png

      Эти команды обозначают правила для включения и выключения скрипта. После их добавления можно добавить скрипт в таблицу с помощью контекстного меню:

      e2ab9f5a-ac29-458f-9db2-7d45305ec53b-изображение.png

      Если всё сделано верно, скрипт появится в таблице и окно редактора можно закрыть:

      3549713b-31a9-4a37-a1e6-9651812135a0-изображение.png

      Теперь вы можете снова открыть редактор, но уже для конкретно этого скрипта в таблице. Для этого дважды кликните по нему в графе Value, или откройте редактор через контекстное меню:

      8dfbfc3d-4265-41c7-b5c8-6f3a7e013269-изображение.png

      Откроется редактор для конкретно этого скрипта, вы можете сохранить изменённый скрипт нажав кнопочку OK:

      7ab76f83-bde0-4213-b5b1-28cbcca1d222-изображение.png

      Основные команды которые могут пригодиться:

      Запись данных по адресу, необходимо указывать размерность:

      //db - byte
      //dw - word
      //dd - dword
      //dq - qword
      
      (Адрес):
      db/dw/dd/dq(размерность) (число)
      
      //Пример, записать по адресу 0087745A подряд 12 байт, сначала 0, дальше 5, потом 7.
      
      0087745A:
      dd 0 5 7
      
      //Пример, записать по адресу метки label подряд 4 байта 1, 7, 10, 2
      
      label:
      db 1 7 A 2
      

      Каждая метка обозначает после себя регион памяти все метки в котором будут относиться к ней, если они уже не определены в другом месте, или не являются настоящим адресом.

      //По адресу 0087745A располагается метка label, метка label нигде не определена, 
      //значит она определяется и обозначается как место в скрипте после добавления. 
      //Таким образом в данном примере label идёт в зоне 0087745A, сразу после него и указывает на тоже самое место, 
      //то есть далее использовать label будет тоже самое что указать 0087745A:
      
      0087745A:
      label:
      dd 0
      
      //В следующем примере, указано что после 0087745A выделено 4 байта со значением 0, 
      //зарезервировано командой dd 0, получается, метка будет указывать на следующие 4 байта после первых идущих в 0087745A:
      
      0087745A:
      dd 0
      label:
      dd 0
      

      Метка может быть зарегистрирована в текущем скрипте, или даже объявлена глобально для использования из других скриптов.
      label(lack) зарегистрировать метку lack для текущего скрипта.
      registersymbol(lack) зарегистрировать метку lack глобально.
      unregistersymbol(lack) снять регистрацию с метки lack, обычно используется в секции [DISABLE].

      Пример скрипта, который записывает при включении по адресу 0087745A число float 4 байта 5, а при выключении int32 0:

      6a28906b-91b1-4705-8723-eb71d17e7f3a-изображение.png

      С помощью скрипта вы можете легко выделить память и записать в неё значения. Выделяется память с помощью команды alloc(newmem, 1000), эта команда выделяет новую память как минимум размером 1000 и создаёт для неё метку newmem, которая аналогична адресу выделенной памяти.

      Пример скрипта в котором выделяется новая память и в неё записывается значение, после выключения скрипта память освобождается командой dealloc(newmem):

      0587b40e-a7b4-48ce-82f9-d96514d6d49c-изображение.png

      Мы можем зарегистрировать newmem что бы получить возможность добавить эту метку как адрес в таблицу и увидеть значение:

      b11f6e64-bb52-40f6-a153-d2eed90574af-изображение.png

      Добавьте адрес newmem в таблицу, нажав на кнопку Add Address Manually:

      8f3006e6-3215-494d-b885-53061d0a6d72-изображение.png

      b027a2c5-e3cf-489f-b746-2308e7aca1c3-изображение.png

      Включите скрипт нажав на квадратик слева от него, если всё сделано верно вы увидите значение записанное в память, не забудьте что Cheat Engine должен быть подключён к какому то процессу:

      a191fe28-9104-466d-9804-ff62d53e3ea8-изображение.png

      Значение float, измените его тип дважды кликнув на 4 Bytes в столбике Type что бы оно отображалось корректно:

      c9687ac4-c521-46f7-89d8-caf560d90eae-изображение.png

      Более продвинутые команды и примеры скриптов рассмотрены в следующих статьях.

      1 ответ Последний ответ Ответить Цитировать 1
      • Первое сообщение
        Последнее сообщение