Skip to content

HOOK Настройки

Общие настройки

  1. Кодовая страница

    INFO

    Эта настройка имеет смысл только если извлекаемый из игры текст является многобайтовой строкой без указания кодировки в внутренних механизмах HOOK. Если HOOK уже указал кодовую страницу внутри, или текст является широкой строкой (wide char) либо UTF32 строкой, эта настройка не имеет никакого эффекта.

    Обычно нет необходимости изменять эту настройку. Только в некоторых старых движках (например, Yuris) официальная китайская версия может использовать кодировки GBK/BIG5/UTF8. Если правильный текст не определяется, просто отправьте мне issue. Изменение этой настройки обычно бесполезно.

  2. Задержка обновления

    Если вы столкнулись с одной из следующих ситуаций:

     1. Текст извлекается по одному-два символа за раз;
     2. Текст извлекается построчно, заменя предыдущую строку, и в итоге отображается только последняя строка;
     3. Текст извлекается корректно, но очень медленно;
    

    то вам нужно отрегулировать этот параметр.

    Для случаев 1 и 2, поскольку текст в игре отображается слишком медленно, а задержка обновления слишком мала, каждые несколько символов или каждая новая строка сразу же отображаются. В этом случае вам следует увеличить задержку обновления или повысить скорость отображения текста в игре.

    Для случая 3 вы можете умеренно уменьшить задержку обновления, следя за тем, чтобы не возникли ситуации 1 и 2.

  3. Максимальная длина буфера

    Иногда текст может постоянно обновляться. В этом случае, если задержка обновления высока и не может быть уменьшена, текст будет продолжать поступать до тех пор, пока не заполнит буфер или пока обновления не прекратятся (обычно это происходит, когда игра теряет фокус, поэтому чаще всего буфер просто заполняется).

    Чтобы решить эту проблему, можно соответствующим образом уменьшить длину буфера, при этом важно не сделать длину буфера слишком маленькой, чтобы она не стала меньше фактической длины текста.

  4. Максимальная длина кэшированного текста

    Полученный исторический текст будет кэшироваться. При просмотре содержимого определенного текста в окне выбора текста будет запрашиваться кэшированный исторический текст. Если текстовых записей слишком много или текст постоянно обновляется, это приведет к накоплению избыточного кэшированного текста, что может вызывать заметные задержки при просмотре (иногда даже без активного просмотра). На самом деле большая часть этого кэша представляет собой бесполезный текст. Полезный исторический текст можно просмотреть в окне исторического текста, поэтому это значение можно свободно уменьшить (по умолчанию 1000000, но достаточно установить 1000).

Специальные настройки игры

  1. Дополнительные хуки

    1. Универсальные Win32-хуки

      После активации в игру будут внедрены универсальные Win32-функции хукинга, включая функции GDI, D3DX и строковые функции.

      Внедрение слишком большого количества хуков может замедлить работу игры, поэтому по умолчанию эти хуки не внедряются.

      Если не удается извлечь правильный текст, можно попробовать активировать эти две опции.

    2. Специальный код

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

  2. Отложенная инъекция

    Иногда игра требует, чтобы хуки вставлялись в DLL, а DLL загружается только после непродолжительной работы игры. Нам также нужно дождаться загрузки DLL перед внедрением.

  3. Настройки специальных HOOK

    Настройки в разделе "Настройки HOOK" в интерфейсе настроек являются настройками по умолчанию. Они применяются, если для игры не указаны специальные настройки HOOK.

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

    Details

    img

    img

Формат специальных кодов

  1. HOOK

    {H|B}{A|B|C|W|I|S|Q|U|V}[F][N][codepage#][padding+]data_offset[*deref_offset][:split_offset[*deref_offset]]@addr[:module[:func]]

    H - это inlineHook, B - это vehhook

    Одиночные символы: A/B - mbcs little-endian/big-endian, C - UTF8, W - UTF16, I - UTF32.

    Строки: S - строка ASCII по умолчанию, Q - UTF16, U - UTF32, V - UTF8.

    F: добавлять символ новой строки после каждого чтения строки

    N: игнорировать контекст

    寄存器的data_offset:

    • 32-бит EAX -4, ECX -8, EDX -C, EBX -10, ESP -14, EBP -18, ESI -1C, EDI -20
    • 64-бит RAX -C, RBX -14, RCX -1C, RDX -24, RSP -2C, RBP -34, RSI -3C, RDI -44, R8 -4C, R9 -54, R10 -5C, R11 -64, R12 -6C, R13 -74, R14 -7C, R15 -84
  2. JIT HOOK

    {H|B}{A|B|C|W|I|S|Q|M|U|V}[F][N][codepage#][padding+]arg_index[*deref_offset][:split_offset[*deref_offset]]@{info}:JIT:{UNITY|YUZU|PPSSPP|VITA3K|RPCS3}

    arg_index是JIT函数的参数index。M为C#字符串,仅UNITY可用。

    Информация UNITY: [сборка]:[пространство имён]:[имя класса]:[имя функции]:[количество параметров]

    Информация YUZU/PPSSPP/VITA3K/RPCS3: эмулируемый адрес

  3. Встраивание

    E[D][S][N|O]HOOKCODE

    E - использование встроенной аннотации, HOOKCODE - специальный код JIT или специальный код HOOK.

    D:При записи конвертировать китайские символы в японский набор символов

    S:При извлечении использовать способ извлечения текста, указанный в HOOKCODE

    N:При записи создать новую строку и поменять указатель строки

    O:При записи перезаписать исходную строку

  4. Прямое чтение памяти

    R{S|Q|V|U}[codepage#]@addr

    R - это маркер прямого чтения памяти

    S - строка ASCII по умолчанию, Q - UTF16, U - UTF32, V - UTF8