Dark Side

Приветствую, решился написать об одной наболевшей проблеме, которая затрагивает многих начинающих юнитиводов с ограниченным бюджетом, да и не только. Больше шести лет уже люди просят тёмную тему редактора Unity сделать бесплатной, но как мы видим, воз и ныне там.

Существует много вариантов решения этого вопроса самостоятельно, а предложенный здесь способ хорош тем, что не требует никакого сомнительного ПО, которому бывает опасно доверять. Также отмечу, что тут пример для Unity на Windows, особо пытливые могут провернуть аналогичный трюк на macOS или GNU/Linux. Итак, для того чтобы исправить это недоразумение своими силами, нам понадобится:

  • Open-source отладчик x64dbg
  • Подопытный Unity (64-битная версия 5.x или выше)
  • Плюс немножко терпения и желание разобраться

Подготовка


Предполагается, что Unity уже установлен. Иначе зачем любопытный %UserName% читает эту статью? Обычно исполняемый файл редактора 64-битной версии Unity располагается по пути:

"C:\Program Files\Unity\Editor\Unity.exe"

Будем использовать этот путь для примера, поэтому скорректируйте под свою ситуацию в случае отличия. Настоятельно рекомендую сделать резервную копию! Чтобы потом не терять время на переустановку или поиск оригинального файла если пойдёт что-то не так, как задумано:

"C:\Program Files\Unity\Editor\Unity.exe.bak"

Затем скачиваем и распаковываем себе в любое удобное место x64dbg из раздела Releases. На момент написания статьи, самой новой была версия «snapshot_2017-12-26_13-39.zip». Запускаем x64dbg с помощью лаунчера x96dbg или же напрямую из его подкаталога:

x64dbg

Меняем одно условие


Итак, пришла пора действовать. Открываем меню File => Open (также горячая клавиша F3 или первая пиктограмка на панели инструментов) и шагаем в каталог установленного Unity, выбираем всё тот же исполняемый файл редактора «Unity.exe» о котором упоминалось выше, получим примерно следующее:

File=>Open

Переходим на вкладку Symbols и слева в списке модулей выбираем unity.exe:

Symbols

Интерфейс может чуток притормаживать при обработке больших списков, поэтому терпеливо пишем в поле Search строку «GetSkinIdx»:

Search

Двойным кликом по строке результата поиска переходим по его адресу на вкладку CPU:

GetSkinIdx

Здесь нас интересует инструкция jne. Опять таки двойным кликом по ней открываем диалоговое окно, в котором меняем эту инструкцию на je, остальное не трогаем:

jne-je

После применения правки, открываем контекстное меню и выбираем Patches (Ctrl+P):

Patches

При помощи кнопки Patch File сохраняем новый Unity.exe временно куда-нибудь, потому что текущий файл занят отладчиком:

PatchFile

Проверка результата


Поздравляю, всё выполнено успешно. Остаётся лишь закрыть отладчик и перезаписать оригинальный Unity.exe тем файлом, который сохранили при помощи Patch File. Убедиться в том, что не затронули случайно чего лишнего, можно сравнив по содержимому резервную копию с новым файлом, должен отличаться только один байт и больше ничего:

CompareContents

Запускаем и наслаждаемся тёмной темой оформления:

Professional

Вполне вероятно, что в Unity перепрятают тёмную тему и описанный тут метод перестанет работать. Но как известно, против лома нет приёма. Также может наоборот произойти чудо, наконец-то прислушаются к пользователям и таки сделают её бесплатной. Если устали ждать и хочется ещё больше кастомизации — рекомендую присмотреться к Zios Themes: описание на форуме Unity + исходники на GitHub.

Видеоверсия для тех, кто предпочитает смотреть (англ.)

Комментарии (10)


  1. Terras
    28.12.2017 18:35

    Зашел в пост исключительно по воле черного властелина


    1. gresolio Автор
      28.12.2017 20:44

      Значит КДПВ сработала превосходно :) А вообще хорошая была Unity Labs Demo, жаль что убрали её из Asset Store. Вот ещё ролик на YouTube, где видно «диван Властелина».


  1. MrGobus
    28.12.2017 22:49

    Больше шести лет уже люди просят тёмную тему редактора Unity сделать бесплатной, но как мы видим, воз и ныне там.


    То есть я правильно понял, это на хабре статья как взломать лицензионный софт с целью получения нелегального доступа к защищенному контенту? Ох уж эти бесстрашные русский хакеры =)


    1. Ascott
      29.12.2017 08:40

      Я согласен с Вами. Давайте начнем выкладывать посты о том как «обойти» ту или иную лицензию.
      При чем, я понимаю если бы данная статья была написана интересно с точки зрения обучения, в стиле туториала, но нет, автор ничего не поясняет. Те кто знаком с отладкой и так могут это сделать, а остальные, как мартышки будут повторять не понимая, что делают. (Не хотел обидеть мартышек)


      1. mickvav
        29.12.2017 11:53

        Ну, тут мы возвращаемся к старому спору о том, насколько вообще этично составлять лицензионные договора на ПО так, что лицензиат, исполняющий ПО на своем оборудовании, не имеет права вносить в такое ПО правки. На мой вкус — неэтично. И я по мере возможности бойкотирую таких поставщиков ПО. (Да, и не использую Unity, если что:) )


        1. expeon
          29.12.2017 15:02

          Споры об этичности и о том, как реагировать на отсутствие этой самой этичности — все-таки разные вещи…


  1. 0xcffaedfe
    29.12.2017 01:09

    Переманить Unity 2017.3.0f3 (MacOS) на темную сторону, можно как-то так.


    perl -pi -e 's|\xE8\x1F\x70\xA0\xFF\x84\xC0\x74\x03\x41\x8B\x1E|\xE8\x1F\x70\xA0\xFF\x84\xC0\x75\x03\x41\x8B\x1E|g' /Applications/Unity/Unity.app/Contents/MacOS/Unity


  1. NexusGen
    29.12.2017 01:14

    Не легче скачать UnityDarkSkin и нажать одну кнопку?


    1. gresolio Автор
      29.12.2017 01:15

      Всегда хорошо, когда есть альтернативные варианты. Пусть каждый сам решает, что выбирать.


  1. Evgeniy_Bond
    29.12.2017 01:23

    Посмотрел на Unity после более полугода неиспользования — казалось почему-то, что я работал в тёмной теме, а оказалось вот что: тема-то не тёмная, а серая, т.е. такая, которая не белая и при этом не режет глаза (вместе с f.lux вообще ОК). Также тут прикол в том, что Unity у меня используется в связке с VS2015, а там вполне себе есть тёмная тема без таких танцев с бубном.