Как стать автором
Обновить

Как я винду по-реверсерски чинил

Время на прочтение 3 мин
Количество просмотров 20K

Ваша винда не работает как хотелось бы? Все советы из поисковика перепробовали установили Linux, а оно всё равно не работает? Вы реверс-инженер или кто вообще, ну в самом деле!? Применим свои навыки владения отладчиком, поможем Шиндовс нормально (по мере её сил) работать!

На написание данной статьи меня подтолкнула злость. Злость на поделие от индусских говнокодеров под названием Windows, на то, что гугол выдаёт мне абсолютно нерабочие решения столетней давности. И вот, когда даже обновление до 11-й винды (с сохранением всех настроек и программ), а потом ещё и установка её же поверх себя не помогли, я решил, что нужно подойти с другой стороны - не как пользователь, а как реверс-инженер.

Суть проблемы

"Some settings are managed by your system administrator". Но я и есть администратор!
"Some settings are managed by your system administrator". Но я и есть администратор!

Как видно на картинке моя собственная система решила ограничить меня в возможностях конфигурирования параметров дисплея. Если вы попробуете загуглить данную строчку, вам выдадут тонну вариантов, среди которых: включение полной телеметрии, переустановка драйверов видеокарты, установка их в режиме совместимости с Windows 8 (!!!), перезапуск службы Windows Update, прикладывание горчичников к системному блоку... Как, ну скажите, как это должно вообще помогать? Очевидно, что оно и не помогло.

Источник проблемы

Я, если честно, без понятия. Не так давно винда мне стала предлагать опциональное обновление для моей AMD Radeon видеокарты, после установки которого центр управления Radeon Software взял и перестал видеть графическое устройство. Переустановка драйверов, множество ребутов вроде бы помогли, но, если бы всё закончилось хорошо, статьи бы не было.

Решение проблемы

Имея за плечами, какой-никакой опыт реверс-инжиниринга, я подумал: а почему не попробовать решить данную проблему иначе? Открыть отладчик, найти виновника, выяснить, что для него является триггером на выдачу сего сообщения, и изменить условие на противоположное (конечно, надежда на реестр).

В качестве отладчика я вооружился x64dbg. Процесс, который выводит окно настроек также быстро нашёлся:

Аттачусь к нему. Далее перехожу на вкладку Symbols, и загружаю pdb-файлы для процесса и всех загруженных в него DLL-ок. После этого присматриваюсь к их списку:

Выглядит как минимум интересно: "settingshandlers_display.dll"
Выглядит как минимум интересно: "settingshandlers_display.dll"

Обнаруживается эта интересная DLL, а заодно ещё и парочка других кандидатов на поиск в них причины моей проблемы:

Я решил пройтись по экспортам этих трёх библиотек и поискать что-нибудь со словами enable/disable:

Лишь в одной DLL-ке settings_handlers_pcdisplay.dll находятся интересные на мой взгляд функции: IsDisabledByGroupPolicy, IsDisabledByPolicy. Ставлю на них бряки, и пробую отобразить меню с той надписью про администратора:

Вуху! Бряк сработал.
Вуху! Бряк сработал.

Присмотревшись к имеющемуся коду, я вижу вызов одной странной функции:

Гугление SHRestricted приводит меня к данной странице, с которой есть ссылка на перечисление RESTRICTIONS, где, в свою очередь, находится значение 0x4000007B:

REST_NODISPLAYCPL
REST_NODISPLAYCPL

Так, погодите-ка! Кажется, я уже видел очень похожую строку в реестре, в разделе Policies (там я ранее как раз искал какой-нибудь параметр, который и мог приводить к проблеме):

NoDispCPL
NoDispCPL

Кто её туда записал я не знаю. Но, я уже догадывался, что удаление этого аргумента решит мою проблему:

Ура!
Ура!

Так и есть, всё заработало (после перезапуска процесса systemsettings.exe).

Выводы

Пора уже решать проблемы своей операционной системы самостоятельно! Особенно, если отладчики для вас софт не чуждый.

Всем спасибо.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+147
Комментарии 79
Комментарии Комментарии 79

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн