Подкатегории

  • 16 Темы
    16 Сообщения
    PromisingP
    Синтаксис и команды скриптов в 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

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