macOS
- Процессор
- Apple Silicon
- Система
- macOS 13 и новее
- Файл
- touchdesigner-2025-33230-baked.dmg
1e8a005bfc3061a4a8303b907e7987069f81d34a0768215c8966fdcac3506114Ссылки на тему, .torrent и magnet появятся после публикации.
2025.33230
Собирает интерактивную графику нодами и выводит её в реальном времени.
Эта сборка только для macOS, на этом компьютере она не запустится.
TouchDesigner это программа для компьютера. На телефон они не ставятся: открой эту страницу на Mac или PC.
TouchDesigner — среда для графики в реальном времени: ноды, шейдеры, звук, железо. На нём делают сцены, инсталляции, VJ-сеты и управление светом. Бесплатный режим Non-Commercial закрывает часть возможностей и ставит водяной знак.
Художникам и инженерам, которым нужна графика в реальном времени и управление внешними устройствами.
TouchDesigner 2025.33230: проект открыт, ограничений Non-Commercial нет
12из 12
TouchDesigner нельзя патчить на диске: он замечает правку и тихо закрывается через 105–124 секунды. Поэтому правка живёт в памяти, а файл программы остаётся оригинальным и подписанным.
Ничего: каждую проверку в списке я снял.
Вернуть оригинал можно командой отката: раздел «Для технарей» на этой же странице.
| Проверка | Адрес | Как задумано | Что сделано | Почему работает |
|---|---|---|---|---|
| Почему файл нельзя трогать | ||||
| Проверка целостности | libUT.dylib | своя, внутри программы | файл на диске не меняется | В бандле нет SecStaticCodeCheckValidity и csops: подпись кода на ходу не проверяется, значит проверка своя и подписью её не обмануть. |
| Тихий выход | libUT+0x1578E4 / +0x157A20 | приложение завершается через 105–124 с | не завершается | lldb: блок libUT+0x157a20 ставит terminate в главную очередь. Это не краш и не таймаут лицензии. |
| Прокси в памяти | ||||
| Точка входа | Contents/Frameworks/libminizip.dylib | libminizip загружается раньше libUT | прокси-библиотека реэкспортирует 40 символов minizip | Зависимости инициализируются раньше зависимых: конструктор прокси успевает до инициализаторов libUT. |
| Поиск функции | UT_LM::adoui31 | UT_LM::adoui31 в таблице экспорта | dlsym(RTLD_DEFAULT), запасной адрес 0x7E4A8 | Если символы срежут, остаётся фиксированное смещение этой сборки. |
| Запись в память | mach_vm_protect | mprotect на __TEXT запрещён hardened runtime | mach_vm_protect с VM_PROT_COPY | Обычный mprotect не даёт писать в __TEXT подписанного бандла. |
| Код | 80 00 80 52 c0 03 5f d6 | функция возвращает уровень лицензии | mov w0,#4; ret | Уровень 4 — Pro. Байты: 80 00 80 52 c0 03 5f d6. |
| Состояние | UT_LM+0x30 | UT_LM[+0x30] хранит уровень | = 4, isPro() = true | |
| Что получилось | ||||
| Подпись Derivative | | проверяется при обновлении | не тронута, хеш файла не менялся | libUT.dylib остаётся с оригинальной подписью: меняется только память запущенного процесса. |
| Время жизни | | файловый патч: 105–124 с, максимум 303 с | 26 мин 39 с без выхода | Обычный запуск, не тестовый сценарий. В тестах с патчем в памяти было и 375, и 604 секунды. |
| Ограничения NC | isPro() | водяной знак, лимит разрешения | сняты вместе с уровнем 4 | |
| Печать бандла | ||||
| Проверка подписи сборки | Contents/_CodeSignature | у стоковой сборки codesign --verify падает на libndi_licenses.txt | codesign --verify --strict проходит | Печать пересобрана: текст убран изподписи, запрещённые для ad-hoc права сняты. Без этого Gatekeeper видел бы «приложение повреждено». |
| Файл библиотеки лицензий | libUT.dylib | стоковый, подписан Derivative | байт-в-байт тот же | Сравнивается после установки: прокси не трогает libUT на диске. |
/Applications/TouchDesigner.app/Contents/Frameworks/libminizip.dylib/Applications/TouchDesigner.app/Contents/Frameworks/libminizip_orig.dylibПрокси лежит внутри программы в образе и грузится при любом запуске: Finder, Dock, open, двойной клик по .toe. Файл libUT.dylib остаётся стоковым.
# libUT.dylib: файл не меняется, правка идёт в память- UT_LM::adoui31 возвращает уровень лицензии (0 у Non-Commercial)+ 0x7E4A8 mov w0, #4 ; Pro+ 0x7E4AAC ret байты: 80 00 80 52 c0 03 5f d6# Прокси: libminizip.dylib реэкспортирует 40 символов minizip+ dlsym(RTLD_DEFAULT, "UT_LM::adoui31") — запасной адрес 0x7E4A8+ mach_vm_protect(VM_PROT_COPY) — mprotect на __TEXT запрещёнmacOS. Удали TouchDesigner из «Программ» и поставь стоковую сборку с derivative.ca. Патч живёт только в бандле, файлов в системе он не оставляет.
rm -rf "/Applications/TouchDesigner.app"Началось с файлового патча: правка функции уровня лицензии, подпись заново. Сплэш показывал PRO, но приложение жило 105–124 секунды и тихо завершалось с кодом 0; стоковая сборка в тех же условиях работала 303 секунды, значит дело не в таймауте лицензии. Точка останова на завершении показала: terminate ставит в главную очередь блок из libUT. Проверка своя, подписью её не обойти, поэтому патч переехал в память, а печать бандла пришлось пересобрать: у стоковой сборки Derivative подпись сломана на текстовом файле, и Gatekeeper видел «приложение повреждено».
1e8a005bfc3061a4a8303b907e7987069f81d34a0768215c8966fdcac3506114Ссылки на тему, .torrent и magnet появятся после публикации.
.dmg: появится окно с колибри..app: рядом лежат библиотеки./Applications/TouchDesigner.app/Contents/Frameworks/libminizip.dylib — прокси/Applications/TouchDesigner.app/Contents/Frameworks/libminizip_orig.dylib — оригиналБольше ничего: файлов в системе сборка не оставляетОбщие вопросы про сборки, безопасность и удаление собраны отдельно.
Все вопросыОна правила файл libUT.dylib на диске. Программа проверяет свои файлы и через 105–124 секунды сама завершается. Теперь правится только память запущенного процесса.
Да, обновление заменит бандл, и прокси исчезнет. Нужен свежий образ этой сборки: старый прокси может не подойти, если изменился набор символов minizip.
Правда. libUT.dylib остаётся байт в байт оригинальным, с подписью Derivative. Сравнить можно: подпись проверяется командой codesign --verify.
Готовой сборки нет. Прокси собран под arm64, для Windows нужен свой патч и отдельная проверка на живой машине. Как только пройдёт проверку, появится в каталоге.
macOS подменяет путь запуска через App Translocation, и бандл живёт во временной папке. Перетащи приложение в «Программы» и запусти оттуда.
Команды для каждой системы в разделе «Конфигурация», вкладка «Для технарей».
Сборки не подписаны, поэтому macOS и Windows один раз переспрашивают. Как пройти первый запуск.