Pull to refresh

Comments 84

реверс инженер это не специальность, это методология.

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

Может вы ее и создали?

Может вы ее и создали?

Конечно нет.

При выводе элементов в реестре они сортируются по алфавиту (как и все остальные на скриншоте), но созданные до первого перечитывания реестра находятся внизу (как на скриншоте). Выглядит странно.

Очевидно, что я писал статью не по ходу решения проблемы, а после её решения.

Значит, все-таки создали! :-)

Так и до изнасилования Реверс-инженером журналиста комментатора не далеко =)

Реверс-изнасилования

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

Я принял челлендж на "прогуглить проблему", и похоже, что данная проблема была как минимум год назад:

https://www.dell.com/support/kbdoc/ru-ru/000155876/how-do-i-resolve-the-error-message-your-system-administrator-disabled-the-display-control-panel-in-microsoft-windows

...и 11 лет назад:
https://onlinecomputertips.com/support-categories/pc-troubleshooting/208-system-administrator-disabled-the-display/

Альтернативный вариант фикса "Some settings are managed by your administrator" (и самый правильный) - это установить групповую политику Disable the Display Control Panel в "Not Configured" или "Disabled" (скрин с Win10):

Administrative Templates / Control Panel / Display

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

Да, порой кунг-фу гугления оказывается сложнее расчехления специализированной тулзы (или как минимум приятнее).

С Виндой проблема в том, что при гуглинге всплывает тонна SEO-буллшита, пытающегося пропихнуть очередную платную бесполезную утилиту, абсолютно бесполезного и засоряющего весь поиск...

Немножко помогает uBlacklist, у меня уже список из пары сотен таких сайтов.

а куда-нибудь на pastebin.com можно?

В смысле, никаких подсказок? Фраза "управляется вашим системным администратором" в настройках просто кричит о том, что где-то выставлена специальная политика управления данной настройкой и надо её найти и отключить, если компьютер домашний и администратор этого компьютера по трезвой памяти такие политики не настраивал.

Фраза "управляется вашим системным администратором"
если компьютер домашний и администратор этого компьютера по трезвой памяти такие политики не настраивал

… просто кричит о том, что где-то само собой творится что-то нездоровое.

Не бывает "оно само". Никогда. Всегда это происходит по какой-то причине.

Поскольку речь идет о пользователе, то, в данном случае, само собой стоит читать как без явного вмешательства пользователя.

UFO landed and left these words here
UFO landed and left these words here

Но где что выставлено это не помогает понять.

Речь же о поиске в гугле (мой ответ не абстрактный, а на конкретный комментарий был). Не надо перечитывать весь гугол найденных вариантов. Достаточно лишь погуглить политики, которые могли так сделать.

UFO landed and left these words here
Ну так чтобы задать правильный вопрос нужно знать половину ответа.

По факту быстрее переустановить с нуля даже чем обновку насильно поставить (с нуля — это полчаса времени и потом файлики поперекидывать, обновка насильно — это часа 4-5 на скачку, установку и надписей «погодите, мы тут что-то делаем»)

На компьютере офисного клерка - может быть. А у меня дома пять экранов установленных приложений (может быть три, если убрать либы) и несколько вечеров на отладку валившегося обновления сэкономили кучу времени на перенос настроек с лицензиями.

Кстати, тут отличное руководство тоже от сотрудника MS, но уже настоящего, а не болванчиков с форума.

UFO landed and left these words here
всегда радовали умения других в дебагинге даже таких сложных штук, как винда
Да винда как раз крайне дружелюбна к разработчикам и реверсерам.
А вот если вы захотите подобным образом реверсить Linux, вот тут-то вы и познаете настоящий ад. Потому что у нас тут ни дружелюбных отладчиков (есть один только древний динозавр GDB, пользоваться которым по-настоящему мучительно), ни нормальной документации по библиотечным функциям, конфиги размазаны тонким слоем по всей системе, а взаимодействие компонент и подсистем крайне запутано.

Мне для большинства нужд хватает поиск в исходниках и strace. bpftrace в особо запущенных случаях. Зачем в Linux реверсить если можно просто пересобрать со своими изменения и посмотреть?

Вот совершенно нет. "Динозавр gdb" - это, простите, про наиболее мощный и развивающийся отладчик, который разрабатывают и по сей день? Который имеет поддержку для кучи платформ? У которого куча gui-нашлёпок, если кому-то с консолью не совладать? Что до ОС, то для каждого пакета линукса (ок, говорим про Ubuntu/Debian для конкретности) есть пакет с отладочными символами и исходным кодом. Так что подцепиться отладчиком можно не просто так же просто, как показано в статье, да ещё и с исходным кодом! Вряд ли для windows будет исходный код. Конфиги в бОльшей части концентрируются в /etc, а реестр windows, в таком случае, тоже давно превратился в помойку, куда пихают всё все компоненты. Разбираться и там и там придётся. Взаимодействие компонент в windows не запутано? Оу-оу. Оно и запутано, и написано индусами внутри компании и не документировано. А компоненты в Линукс, так как пишутся зачастую, разными людьми/группами, имеют очень даже неплохую документацию по каждому такому компоненту отдельно. Документации по библиотечным функциям, говорите? Ну, вообще смешно. Мы о публичном API? Для большинства стандартных библиотек libc, glibc, gtk, qt - огромная масса док, не хуже MSDN. А что до внутренних функций типа той, что описана в статье, ну-ка покажите на неё документацию, и отдельно на компонент, который автор отлаживал? В Линуксе я не просто дебажил систему, как свой домашний проект, так ещё и пересобирал пару модулей из стандартной поставки дистрибутива, чтобы бажку пофиксить. И теперь они - часть системы.

Я много времени работал разработчиком под Windows до ухода к пингвинам. Windows до 7-ки включительно была вполне юзабельна, нетребовательна к ресурсам, стабильна, и не решала за меня, что мне лучше, чей это компьютер, и когда тут обновляться. Куда пошла компания мелких после этого, один шайтан ведает. Не хочется вообще теперь иметь дело с их поделиями вообще никогда.

Подскажите, GDB сервер уже начал выдавать более осмысленные коды ошибок, чем просто "ошибка 01"?

конфиги в бОльшей части концентрируются в /etc

.config например — тот самый реестр но на текстовых файлах ;)
Как когда-то были ini файлы в Windows. Потом Microsoft призвала всех писать в реестр.
… а потом появился .NET и официальной рекоминадцией стало размещение параметров для программы имя.exe в файле имя.exe.config (на этапе разработки в проекте VS содержимое этого файла берется из app.config). Так что ничто не вечно под луной, увы.

.config это hkcu, только куда проще и понятнее.

UFO landed and left these words here

К слову о Линухе: пробовал недавно IDA + ее отладчик для линуха - вполне норм!

Для него есть огромная куча графических интерфейсов. Та же IDA.

И дружелюбие винды нелишне, к примеру в случае когда переключение раскладки клавиатуры анализировалось приложением на трёх различных уровнях.
UFO landed and left these words here

Для несведущих, о каких полях данных речь при смене материнки?

UFO landed and left these words here
Каждый решает проблемы на основе того, чему он учился.

Я, вот, как системный администратор Windows, в том числе, сразу, чисто по сообщению, понял, что у вас управление дисплеем было заблокировано политикой. И я даже примерно представляю, где, в каком из административных шаблонов эту политику надо искать (но наизусть не помню). А так как компьютер у вас не в домене, то политика может быть только локальной. Так что я бы запустил редактор локальной групповой политики gpedit.msc, нашел бы нужное место и поправил. Если же ваша версия Windows не поддерживает политику (точнее, ее редактирование), то я бы взял файл шаблона политик (они все лежат в C:\Windows\PolicyDefinitions), нашел бы, где там определен нужный параметр, посмотрел бы ключ и значение реестра, которое он меняет, и поменял бы.

Тем не менее, поздравляю с успешным решением проблемы самостоятельно, а не через гугл(почти). Не поймите меня неправильно — это не упрек и не укор: если что, такими способами решения проблем известный и авторитетный спец по Windows Марк Руссинович не брезговал пользоваться.

PS В порядке общей информакции — вдруг кто не знает, а ему пригодится. Для поиска подозрительных ключей реестра (и файлов конфигурации) есть менее трудоемкий путь, чем использовать отладчик — утилита procmon (Process Monitor) от Sysinternals (сейчас это давно уже часть Microsoft, но утилиты эти поддерживатся до сих пор). С его помощью можно получить трассу обращений к реестру/файловой системе и что-нибудь, имея эту трассу, сделать.

PPS Записал к себле в копилочку интересный факт: оказывается, новый — стильный, модный, моложежный — интерфейс настроек Windows вполне поддерживает старые настрой политик для Control Panel. По крайнейе мере — может.

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

При включении телеметрии производится модификация некоторого набора параметров реестра, среди которых и нужное нам (случайно или намеренно) затесалось. Я бы так предположил.

Окей, а вот как тогда людям помогает включение полной телеметрии при наличии такого же сообщения в других разделах (даже видео есть)

Если честно — без понятия. Я эти рецепты ни разу подробно не смотрел, что там делать предлагают.
Где связь, и как бы вы решали это?

Как бы решал я, написано выше, и гугление, которое могло бы вывести меня на рекомендации включить полную телеметрию, в изначальный алгоритм решения просто бы не входило. Просто потому, что мне, как администратору, и без гугла было понятно, откуда начинать рыть, из уже имеющихся знаний.
А представить, что бы я делал без этих знаний, у меня фантазии не хватает.
Тем не менее, в винде есть куча параметров реестра, которые вообще нигде не описаны, и кроме как реверсингом их не обнаружить. Например, у драйвера sdbus.sys есть параметр NonremovableDevice, который сделает SD/MMC карту «несъемной», с возможностью разбивать на разделы и загрузиться с нее. А что делает параметр SdCmdFlags того же драйвера — попробуйте угадать (он используется в .inf).
Увы, документировано не все. Но хотя бы по некоторой (и весьма большой) части ОС и приложений документации есть. И это радует.
Спасибо, интересно! Но. Ваша статья приобрела бы ещё большую ценность, если бы вы продублировали ключевые слова/параметры текстом (NoDispCpl, REST_NODISPLAYCPL, и т.п.), ибо по тексту в скриншотах ни хабр, ни даже гугл искать не умеют…

Напомнило мне, как я на заре своей ИТ-карьеры фар (Far Manager) ломал - надоели мне пара "закрытых" меню, я взял отладчик и через несколько часов хождения по коду радостно сообщил коллегам, что дело сделано, мир спасен! А мне посоветовали заглянуть в read.me, а там русским по белому (синему) написано, как легально да пару минут зарегить продукт.

Лингвистический оффтоп

Интересно, как так получилось, что engineer - инженер, а engineering - инжиниринг?...

Всегда задавался этим вопросом. Ответа так и не нашёл.

Потому что инженер - это ingénieur. Несколько более раннее заимствование, когда брали не из английского, а из французского.

Так, что engineering по-русски будет "инженерия".

А "инжиниринг" это просто неассимилированная калька с английского.

Я такие вещи дебагал на куда более высоком уровне, с помощью procmon.exe. Запускаем как админ, запускаем процесс, воспроизводим ошибку, останавливаем захват procmon, фильтруем по процессу или имени ехе, и пошли читать, куда оно лезет и за чем. Кроме того, вот эта фраза "some settings are managed by" означает почти во всех микрософтовых приложениях наличие управляющих политик, а они уже находятся в реестре в разделе HKLM|HKCU/Software/Policies для прикладного софта, и в найденном вами месте для системного.

Мне было проще порыться в отладчике. Как уже сказали выше: "кто на что учился".

Главный вопрос - кто ж туда этот параметр записал? :-D

Я склоняюсь к тому, что это сделал тот самый предлагаемый виндой опциональный апдейт, больше некому.

Ээээ. Что я только что прочитал?

Строчка эта означает, что на машину применена какая-то настройка групповой политики.

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

Ждём свежих открытий

Я не сделал никаких открытий.

какая-то настройка групповой политики

"Произошла кокаето ошибка". Ну, очевидно же, что дело в групповых политиках, только каких?

Связанных с дисплеем? Можно было сразу в реестре посмотреть, возможно можно было в файлике registry.pol посмотреть, возможно можно было запустить mmc посмотреть. Что тут реверсить?

Тупо гадать что нужно изменить вообще не вариант. Мне хотелось знать точно, и почему.

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

ну и пошли сложным путем через отладчик, а если бы вы действительно были администратором, то знали бы что возникновение этой надписи означает что этими настройками управляет GPO и идти надо туда ;)

Так я и пошёл туда. А что искать-то дальше?

искать логическим путем, но названию пунктов, там к каждому параметру есть довольно подробное описание, да и само дерево политик хоть и запутанное но подчинено определенной логике и минут 15-20 ковыряний вы найдете где хранятся параметры дисплея
p.s. пример подсказать не могу. уже года два как на линух с концами переехал

В оснастке gpedit.msc есть фильтр по измененным из дефолтного состояния (настроенным) политикам. Поиск измененных значений займет очень мало времени.

В Home версии сложнее, по дефолту только в реестре искать.

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

А автору статьи спасибо за демонстрацию принципа!

В Твиттере дискуссия про "PowerShell vs. C#" для небольших утилит завершилась схожим выводом - разработчику проще воспользоваться знакомым инструментом, чем заниматься ненормальным программированием со скриптами.

Чем-то напомнило статью на одном беговом форуме в которой один увлеченный бегун любитель рассказывал как на бегу померять пульс на руке не останавливаясь. Так вот он на полном серьезе в 2021ом году не знал о существовании спортивных часов с функцией пульсометра

Очень интересная статья, попалась в рекомендациях. И сразу возник такой вопрос. Нечто подобный метод я недавно думал применить к решению своей небольшой проблемы. Имеется Windows (не важно какая версия), в ней установлен плеер VLC, а также имеется устройство видеозахвата. Я хочу открыть в VLC данное устройство, чтобы смотреть изображение с видеоисточника. Делается это через dshow://. Если оставить параметры dshow:// по умолчанию, то устройство в плеере открывается некорректно. Если указать параметр :dshow-config, то запуск будет предварительно сопровождаться в отдельном окне диалоговым режимом по настройке устройства (источник видеовхода, разрешение, цветовая схема, аппаратные ускорители и т.д.). Это окно настроек берётся из драйвера на устройство. Откуда конкретно именно - я не нашёл. Как только там привожу в порядок некоторые параметры, то всё становится чётко, как мне надо. При повторном запуске настройки сбрасываются, не сохраняются. Данные настройки - вне VLC и вне dshow, они исключительно от устройства. Вопрос у меня такой. Каким образом заставить драйвер по умолчанию конфигурировать моё устройство видеозахвата правильными нужными мне настройками? Чтобы я каждый раз не прибегал к вызову диалога конфигурации параметром :dshow-config. Документации на драйверы и их организацию нету. В реестре ничего не нашёл (мож плохо искал). Наверно надо залезть в файлы драйверов и что-то там исправить.

Сходу сказать сложно, но одно точно - если система x64, то драйвера с непройденной проверкой подписи не загрузятся. Нужно будет включать Test Mode.

Что забавно, обновление не ставил, а указанный в статье флаг сегодня снова кто-то установил.

Во-первых, это может делать вполне себе штатный клиент групповой политики: установки локальной политики на базе административных шаблонов хранятся не непосредственно в реестре, а в файле Registry.pol в каталоге Windows в подкаталоге system32\GroupPolicy (это — скрытый каталог): либо в подкаталоге Machine (политика компьютера), либо в подкаталоге User (политика пользователя), и клиент групповой политики их периодически применяет.

А если очень хочется узнать, какой процесс и когда изменил ключ реестра, можно включить аудит доступа к этому ключу. Для этого нужно, во-первых, разрешить аудит для подкатегории «Аудит реестра» (или всей категории «Доступ к объектам»). Делается это либо, опять-таки, с помощью редактора политики (там есть особенность — аудит для категорий и для подкатегорий включается в несколько разных местах интерфейса, подробности, если нужно, расскажу), либо командой auditpol. А, во-вторых, настроить список контроля доступа в непосредственно в свойствах ключа реестра: на вкладке Аудит в окне Дополнительных параметров безопасности (вызываемых по кнопке Дополнительно из окна разрешений). События аудита пишутся в журнал событий Безопасность.
Имеет также смысл включить аудит запуска процессов (подкатегория Аудит создания процессов в категории дополнительное отслеживание), чтобы иметь информацию, позволяющую идентифицировать процесс, изменивший ключ реестра.
PS События из журнала Безопасность для анализа (их там может оказться много) можно экспортировать, например, командой Powershell Get-WinEvent, или обычной командой wewtutil.exe
Обновления политики точно не трогают, так что это однозначно какой-то пользовательский софт. Ставлю на всякие говнотвикеры — их авторы обожают отстреливать пользователям ноги, причём, безо всякой практической пользы.

Включите что-то типа Process Monitor и настройте фильтр на конкретный ключ.

Я не пользуюсь твикерами ещё со времён Windows XP.

как насчет того, чтобы поискать-таки виновника и, по итогу, дописать UPD в статью?

Под линуксом для решения страшненький проблем пользуюсь wireshark и strace (ltrace). Под виндой часто спасает processmonitor. Здесь, думаю, он тоже бы помог(особенно если знать что искать)).

У вас тоже круто получилось, отличный способ.

В Windows Server 2022 в некоторых диалогах сделали ссылку с указанием конкретных политик, которые блокируют настройки:

Hidden text

Расшифровка не самая подробная, но хоть что-то:

Hidden text
Only those users with full accounts are able to leave comments. Log in, please.