- Автор
-
@Garey
- Требования
-
Windows
Универсальный патчер файлов.
Особенности:
- Конфиг патчей в формате json.
- Поиск паттернов (сигнатур) и замена по маске с пропуском определенных байтов (wildcard).
- Для поиска можно использовать как массив из байтов так и строки.
- Возможность проверки результатов поиска.
- Возможность создавать вложенный поиск и патч.
- Возможность сдвига патча (offset) в зависимости от настроек конфига.
- Достаточно быстрый алгоритм поиска
Использование:
Примеры патчей на гитхабе:
В файле example_1.json и example_2.json фактически одинаковые патчи, только в первом примере показан вложенный поиск.
Возможные поля JSON конфига:
- pattern - обязательная строка с вложенными параметрами, должно содержать объект search
- search - обязательный объект, задает строку или массив из байтов для поиска в файле.
- max_search - возможный объект, указывает в каком промежутке от прошлого результата поиска (или от начла) искать сигнатуру или строку.
- wildcard - возможный объект, задает байт который будет пропускатся при поиске search
- name - возможный объект, задает имя патча для вывода в консоль.
- replace - возможный объект, при нахождении строки или байтов в поле search - заменяет байты заданные в этом объекте.
- replace_wildcard - возможный объект, задает байт который будет пропускатся при замене байтов replace
- replace_offset - возможный объект, перед заменой байтов - смещает область замены на указанное количество байтов вперед (для смещения замены назад - использовать знак минус)
- validate - возможный объект, используется для проверки байтов после нахождения байтов в search, если используется wildcard - он также действует на validate.
- вложенный pattern - необязательный объект с вложенными параметрами, может использоваться для точного поиска или замены, точкой старта будет успешный результат поиска родителя, если же результат поиска родителя провалится - вложенный pattern будет проигнорирован.
- -input - имя входного файла для работы с ним.
- -output - имя выходного файла (если не используется, выходной файл будет совпадать с входным + расширение ".patched"
- -config - имя конфигурации патчей формата json
- -force_invalid - если в конфиге используется валидация поиска (validate), то замена байтов будет осуществляться даже при несоответствии байтов.
JSON:
{
"pattern": {
"name": "Steam Low Resolution Patch",
"search": "817C24CC00030000",
"wildcard": "0xCC",
"replace": "817C24CC01000000",
"replace_wildcard": "0xCC"
}
}