уни-патч для линукса и для макоси
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 1 по 10 из 49

Комбинированный просмотр

  1. #1
    Помогает людям
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    269
    Сказал(а) спасибо
    69
    Поблагодарили 1818 раз(а) в 397 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    Посмотрел я в 010editor на сборку 16-1030-macos (первая продуктивная в линейке 8.3.16) - файлы не подписаны ц.п., а вот последняя из этой линейки 16-1973-macos уже подписана ц.п.
    Применил я к 16-1030-macos унипатч, а она, дрянь такая, не "взлетает".
    В отладчике посмотрел "где грабли лежат?" - системный загрузчик отказывается загрузить вылеченный модуль бэкбейс.dylib.
    В коде 1cv8 сразу после загрузки либы бэкбейс идет вызов вирт.метода некоторого объекта либы бэкбейс - поскольку либа не загружена, то происходит обращение к памяти с адресом 0 - это "нарушение защиты памяти", процесс убивается с крахом SEGFAULT:11, в отчете о крахе примерно такое:
    Код:
    Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
    Exception Note:        EXC_CORPSE_NOTIFY
    Termination Signal:    Segmentation fault: 11
    Открываю "капот" и начинаю изучать вращение шестерёнок - в модуле коре83 есть объект, один из вирт.методов которого выполняет динамическую загрузку большинства модулей изделия.
    Этот метод в своих недрах вызывает в системном модуле /usr/lib/dyld функцию dlopen, которая выполняет динамическую загрузку либы в память процесса. Если dlopen почему-либо сбойнула, то надо сразу вызвать функцию dlerror, которая вернет указатель на текстовую строку с разъяснением "чё случилось плохого при выполнении dlopen?".
    Я проделал в отладчике этот кульбит (сразу после выхода из dlopen выполнить dlerror) и dlerror вернула мне такое:
    Код:
    dlopen(/opt/1cv8/8.3.16.1030/backbas.dylib, 9): no suitable image found.
    Did find:
    /opt/1cv8/8.3.16.1030/backbas.dylib: malformed mach-o image: __TEXT segment maps start of file but is writable
    /opt/1cv8/8.3.16.1030/backbas.dylib: stat() failed with errno=20
    Казалось бы - всё, ППЦ, "оставь надежду навсегда".
    Но тот же самый унипатч работает в изделии 8-2137-macos, это говорит о том, что есть в коде функции dlopen "фича" (читай - "бага"), своеобразный workaround для обхода ситуации "malformed mach-o image...ля-ля-ля-тополя".

    При изучении системного модуля /usr/lib/dyld (Mac OS X 10.13.6 (17G65) - т.н. "High Sierra")
    вижу строковую константу '@(#)PROGRAM:dyld PROJECT:dyld-551.4'
    заглянем на страницу какбы-опен-сорц-огрызка-яблока (не пытайтесь компилировать - не получица)
    выбираем свой (dyld-551.4) и смотрим исходник ImageLoaderMachO.cpp:
    а в нём
    Код:
    int ImageLoaderMachO::crashIfInvalidCodeSignature()
    {
        // Now that segments are mapped in, try reading from first executable segment.
        // If code signing is enabled the kernel will validate the code signature
        // when paging in, and kill the process if invalid.
    ...ля-ля-ля-тополя...
    }
    Короче: если вы отредактировали какой-то макосный модуль, имеющий ц.п., то ядро ОС, обнаружив невалидную ц.п., сделает вам "серпом по молоту".

    Если мне удастся понять, какие удачные стечения обстоятельств позволяют хакнутой либе бэкбейс работать и "не жужжать" в изделии 8-2137-macos, то, надеюсь, мне удастся заставить "взлетать" ВСЕ (и которые с ц.п.) сборки для macos после укола унипатчем.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  2. 4 пользователя(ей) сказали cпасибо:

    D@nge1 (12.06.2022), redhat2020 (06.06.2022), root7 (20.01.2024), vovashulga (06.06.2022)

  3. #2
    Помогает людям
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    269
    Сказал(а) спасибо
    69
    Поблагодарили 1818 раз(а) в 397 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    Цитата Сообщение от HPDX2300 Посмотреть сообщение
    ...унипатч работает в изделии 8-2137-macos, это говорит о том, что есть в коде функции dlopen "фича" (читай - "бага"), своеобразный workaround для обхода ситуации "malformed mach-o image...ля-ля-ля-тополя".
    Если мне удастся понять, какие удачные стечения обстоятельств позволяют хакнутой либе бэкбейс работать и "не жужжать" в изделии 8-2137-macos, то, надеюсь, мне удастся заставить "взлетать" ВСЕ (и которые с ц.п.) сборки для macos после укола унипатчем.
    в коде /usr/bin/dyld есть такие строки:
    // We need to ignore older code signatures because they will be bad.
    и
    // ...ignore code signatures in binaries built with pre-10.9 tools
    т.е. если сборка и подписывание осуществлялось SDK 10.8 или более старым, то ц.п. игнорируется.
    Последняя из линейки 16-1973-macos подписана ц.п. - меняем в заголовке файлов (толстый и тонкий клиенты, либа бэкбейс) поле sdkVersion на 10.8 и лечим либу бэкбейс унипатчем - и 16-1973-macos "взлетает" на High Sierra.
    21-ая линейка ,похоже, имеет доп."шестерёнки" - с первого пинка не "полетела", ну так "ёж птица гордая - не пнёшь, не полетит".
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  4. 3 пользователя(ей) сказали cпасибо:

    redhat2020 (07.06.2022), root7 (20.01.2024), vovashulga (07.06.2022)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 07.02.2012, 23:43
  2. Патч для Warcraft III 1.26 rus
    от GHoSt444 в разделе Игры (games)
    Ответов: 0
    Последнее сообщение: 30.06.2011, 18:18
  3. Патч к AMS Enterprise 2.9
    от kryak_er в разделе Полезности
    Ответов: 2
    Последнее сообщение: 09.06.2009, 23:06
  4. Установка Линукса.
    от Большой Брат в разделе LINUX
    Ответов: 18
    Последнее сообщение: 09.11.2007, 05:26

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •