Интерактивный патчер libaffinity.dll для Windows для отключения принудительной авторизации и офлайн работы в Affinity.
Утилита патчит libaffinity.dll по смещению 0x0043E451 и заменяет:
32 C0->B0 01XOR AL, AL->MOV AL, 1- Эффект: пропатченная функция возвращает
1вместо0
- Работает в интерактивном режиме меню и в режиме прямого запуска через CLI
- Использует путь по умолчанию
C:\Program Files\Affinity\Affinity\libaffinity.dll - Позволяет выбрать свой путь к DLL или папку, содержащую
libaffinity.dll - Устанавливает русификатор из папки
ruвC:\Program Files\Affinity\Affinity\ru - Создает резервную копию
.bakперед изменением файла - Определяет, был ли файл уже запатчен
- Отказывается применять патч, если байты по целевому смещению отличаются от ожидаемых
- Показывает текущий статус патча в главном меню
- Предупреждает, что текущий русификатор является частичным переводом
Программа читает установленную версию Affinity из:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{D5B4183A-DE48-405A-A106-D3E48EBFE23F}\DisplayVersion
Ожидаемая версия:
3.2.0.4351
Скачать версию 3.2.0.4351: Telegram | Официальный сайт
Поведение:
- Если версия ровно
3.2.0.4351, предупреждение не показывается - Если версия ниже
3.2.0.4351, выводится предупреждение о возможной некорректной работе патчера - Если версия отличается от
3.2.0.4351, но выше нее, предупреждение тоже будет показано - Если версию не удалось прочитать из реестра, также выводится предупреждение
Эта проверка носит информационный характер и сама по себе не блокирует патчинг.
При запуске без аргументов программа показывает:
- Папку Affinity по умолчанию
- Путь к
libaffinity.dllпо умолчанию - Найден ли целевой файл по умолчанию
- Запатчен ли уже файл по умолчанию
- Установленную версию Affinity
- Предупреждение о совместимости версии, если это нужно
Пункты меню:
1Патчlibaffinity.dllпо умолчанию2Патч своего файла или папки3Установить русификаторruв папку Affinity4Открыть репозиторий GitHub0Выход
Интерактивный режим:
python main.pyПатч конкретного DLL-файла:
python main.py "C:\Path\To\libaffinity.dll"Патч папки, в которой находится libaffinity.dll:
python main.py "C:\Path\To\Affinity"Если программа собрана в исполняемый файл, она принимает тот же одиночный аргумент с путем.
Перед записью любых изменений программа:
- Проверяет, что целевой файл существует
- Проверяет, что размер файла достаточен для указанного смещения
- Читает байты по адресу
0x0043E451 - Останавливается, если файл уже запатчен
- Останавливается, если байты не совпадают с ожидаемой оригинальной сигнатурой
- Создает
libaffinity.dll.bak, если резервной копии еще нет
Если файл изменится между проверкой и записью, применение патча будет отменено.
Целевой файл по умолчанию находится внутри Program Files, поэтому могут понадобиться права администратора.
На Windows скрипт пытается перезапустить себя с повышением прав, если это необходимо.
- Этот проект рассчитан на Windows
- Скрипт использует только стандартную библиотеку Python
- Используйте на свой риск при патчинге версий, отличающихся от
3.2.0.4351 - Русификатор в комплекте является частичным переводом, полного перевода на данный момент нет
Требуется pyinstaller:
pip install -r requirements.txt
Windows: pyinstaller --onefile --uac-admin --icon=icon.ico --name="Open_Affinity_Patcher_Windows" --noupx --clean --version-file=version.txt --add-data "ru;ru" main.pyПроект распространяется под лицензией GPL-3.0. Полный текст лицензии содержится в файле LICENSE.
- SBER:
2202 2050 1464 4675
