Как вернуть права на ветки реестра (обсуждение)

Тема в разделе "Оффтоп", создана пользователем Vadim Sterkin, 14 окт 2009.

  1. Vadim Sterkin
    Оффлайн

    Vadim Sterkin VN Наблюдательный совет

    Сообщения:
    108
    Симпатии:
    152
    2 пользователям это понравилось.
  2. Drongo
    Оффлайн

    Drongo Ассоциация VN/VIP Разработчик

    Сообщения:
    7.902
    Симпатии:
    8.221
    Vadim Sterkin, Спасибо. Дополнил. :)
     
  3. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    http://safezone.cc/forum/showthread.php?t=2437

    Зачем скачивать и юзать дополнительные утилиты - если данные действия можно произвести в AVZ при помощи функции RegKeyResetSecurity:
     
    Последнее редактирование: 15 окт 2009
    2 пользователям это понравилось.
  4. Вархаммер
    Оффлайн

    Вархаммер Активный пользователь

    Сообщения:
    162
    Симпатии:
    203
    Извиняюсь, а можно вопрос? А если я просто в "Редакторе реестра" шелкну "Разрещения" и добавлю себе права, разве не сработает?
     
  5. ТроПа
    Оффлайн

    ТроПа Активный пользователь

    Сообщения:
    399
    Симпатии:
    738
    Скорее всего сможете, в большинстве случаев, но эта рекомендация на тот случай, когда не получится.
    Во-первых, посмотрите дату создания темы и выпуска АВЗ версии 4.32 и тогда кое-что поймёте, во-вторых относительно Windows, вторична АВЗ, а приведенная утилита разработана специалистами МС. Притом блокируется доступ для того что бы поправить внесённые изменения, например такие как замена systemroot на fystemroot, тут удаление ключа не поможет.
     
    2 пользователям это понравилось.
  6. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    Здесь может быть много нюансов:
    1) Зловред может отключить редактор реестра.
    2) Я не пробывал вручную менять права доступа у ключей созданных зловредами - поятому точно ничего утверждать не могу (получится или нет)...
    3) Идёт речь о лечение компьютеров с помощью спец утилит, а не ручной правке реестра - можно например вручную менять ключ запуска проводника на оригинальный, удалять записи о отладчиках процессов (зловреды так блочат запуск зашитного софта), править файловые ассоциации - но проще всё же это сделать с помощью спец утилит...
    4) Тут как кому удобнее - у меня напрмер стоит MD - она имеет прямой доступ к файловой системе и реестру - поэтому у неё проблем с нехваткой прав не возникнет - удалит всё что угодно (P.S. исключение TDSS и ему подобные - если он активен на машине до установки MD (он блочит антируткитам прямой доступ к файлам и реестру), так как после её установки и работе - он ничего не сможет сделать)...

    Вот мой скрипт AVZ для исправления этой проблемы:
    Код (Text):
    begin
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    end.
    :)
    Кстати причём тут удаление ключа - я вроде о нём ничего не упоминал...
     
    Последнее редактирование: 15 окт 2009
  7. Вархаммер
    Оффлайн

    Вархаммер Активный пользователь

    Сообщения:
    162
    Симпатии:
    203
    Еще проще твиками.
    Возникает вопрос, а зачем Вам учиться если Вы все знаете? Мне вот например все интересно, так как все в новинку. А Вы судя по подписи, вроде даже с помощью GMER лечите. Я здесь уже почти месяц, а до альтернативных утилит даже еще не дошел. :(
     
    Последнее редактирование: 15 окт 2009
  8. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    [OFF]Знаний много не бывает - AVZ, HijackThis и GMER я владею (но у вас тут ещё учат другим утилитам) - не знаю правда какова в них необходимость - так представленного выше набора мне хватает (разве что в очень редких случаях они пригодятся) - но всё равно ознакомится с их работой будет полезно - да и лишняя практика не помешает...

    Я вообше придерживаюсь классического подхода при личение - использовать как можно меньше разнообразных утилит - дабы не путать пользователей и не заставлять их делать кучу разных логов в которых нет острой необходимости...[/OFF]
     
  9. akok
    Оффлайн

    akok Команда форума Администратор

    Сообщения:
    12.432
    Симпатии:
    13.941
    AVZ 4.32 вышла 21.08.2009, а вот тема создана 07.07.2009. Тогда такого функционала в AVZ не предусматривалось.

    Да и скрипт по исправлению последствий fystemRoot не совсем полон.

    Windows Registry Editor Version 5.00

    ; Registry Search 2.0 by Bobbi Flekman © 2005
    ; Version: 2.0.6.0

    ; Results at 14.04.2009 19:13:34 for strings:
    ; 'fystemroot'
    ; Strings excluded from search:
    ; (None)
    ; Search in:
    ; Registry Keys Registry Values Registry Data
    ; HKEY_LOCAL_MACHINE HKEY_USERS


    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\BITS]
    ; Contents of value:
    ; %fystemRoot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\wuauserv]
    ; Contents of value:
    ; %fystemroot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\BITS]
    ; Contents of value:
    ; %fystemRoot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\wuauserv]
    ; Contents of value:
    ; %fystemroot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\controlset004\Services\BITS]
    ; Contents of value:
    ; %fystemRoot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\controlset004\Services\wuauserv]
    ; Contents of value:
    ; %fystemroot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS]
    ; Contents of value:
    ; %fystemRoot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv]
    ; Contents of value:
    ; %fystemroot%\system32\svchost.exe -k netsvcs
    "ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
    00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
    6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

    ; End Of The Log...

    Если и исправлять последствия то в полном объеме.
     
    2 пользователям это понравилось.
  10. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    Тогда не было - сейчас есть - нужно идти в ногу со временем и дополнить статью.

    Я привёл вам лишь пример скрипта правящий данные изменения, а вы говорите про конкретный случай заражения - скрипт нужно писать для каждого случая отдельно...
    Хотя можно организовать в скипте перебор разделов реестра и внесение изменений при наличие соответствующего раздела - сделать единый скрипт для всех случаев...
     
    Последнее редактирование: 16 окт 2009
  11. akok
    Оффлайн

    akok Команда форума Администратор

    Сообщения:
    12.432
    Симпатии:
    13.941
    Ingener, а никто и не отказывается. Дополним. :)
     
  12. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    Кстати для поиска изменённых ключей тоже не нужно дополнительных утилит - AVZ и это делать умеет:
    Вот пример скрипта:
    Код (Text):

    begin
     RegSearch('HKLM', 'System', 'fystemRoot');
    end.
     
  13. ТроПа
    Оффлайн

    ТроПа Активный пользователь

    Сообщения:
    399
    Симпатии:
    738
    Если вы не выгнали всех зловредов то смысла в правке реестра практически нет, за редким исключением.

    Если зловред удалён, то получится.


    Внимательнее прочитайте цитату приведенную в вашем сообщении


    Вынужден с вами не согласится. т.к. после того как в логе АВЗ нет никаких зловредов, другие утилиты удаляют ещё их, иногда одного-двух, а иногда и десятки.

    Тут можно вспомнить пресловутый Кидо, которого долгое время АВЗ в своих логах вообще не отображала, а логи Combofix и Gmer дополняли друг друга, кстати, снова начали встречаться разновидности Кидо, которые АВЗ не видит.
     
    4 пользователям это понравилось.
  14. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    Ещё раз повторю то что я уже писал:
    На это тему можно ещё долго спорить.

    Это вам стоит внимательно перечитать цитату и понять что там написано...
    Вы просто выдернули из контекста фразу RegKeyDel (Данная функция полезна для удаления ключей реестра) и начали говорить об этой функции хотя речь идёт о RegKeyResetSecurity, а там лишь упоминалось что при использование команд RegKeyDel и DeleteService - они автоматически вызывают RegKeyResetSecurity в случае необходимости, т.е. не нужно дополнительно прописывать в скрипте RegKeyResetSecurity для удаляемых ключей.
    Основная мысль там:
    Ваша цитата:
    О том как поправить изменения я вам уже написал, повторяться не буду...

    В реальной практике лечения такие случае возникнут редко (имеется ввиду невозможность определить зловреда при помощи связки AVZ + HijackThis + GMER) - поэтому и логи дополнительными утилитами нужно просить делать когда этими утилитами отработали по полной, а проблемы остались (зловред не обнаружен или не добит), т.е. только при реальной необходимости в дополнительных логах, а не сразу - пользователь пришёл лечиться - ему говорят скачайте 10 утилит, разберитесь в их работе, сделайте 10 логов этими утилитами, выложите их и т.д. (цифра 10 так от болды взята) - зачем пользователя изначально загонять в тупик - заставлять делать лишнюю работу - но это чисто моё мнение - я его никому не навязываю...

    Добавлено через 22 часа 48 минут 37 секунд
    Вот уневерсальный скрипт для полного исправления проблемы с fystemroot (Большое спасибо Kuzz за помощь в написание скрипта!!!):
    Код (Text):
    var count:integer;
    begin
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    for count:=1 to 9 do
     begin
     if RegKeyExists('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)) then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS');
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Раздел ControlSet00'+IntToStr(count)+' найден.');
      end;
     end;
    for count:=10 to 99 do
     begin
     if RegKeyExists('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)) then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS');
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Раздел ControlSet0'+IntToStr(count)+' найден.');
      end;
     end;
    for count:=100 to 999 do
     begin
     if RegKeyExists('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)) then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS');
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Раздел ControlSet'+IntToStr(count)+' найден.');
      end;
     end;
    end.
    Ну как вам скрипт..?
     
    Последнее редактирование: 17 окт 2009
  15. akok
    Оффлайн

    akok Команда форума Администратор

    Сообщения:
    12.432
    Симпатии:
    13.941
    Хорошо. Обновляю тему :)

    Спасибо Kuzz и Вам.


    Из реальной практики. У AVZ есть несколько довольно неприятных недостатков
    1. Не логируются файлы, которые не прописаны в автозапуск (и по моим данным расширение функционала в эту сторону не предусматривается, а жаль). И после полного лечения тот же "лже-антивирус" MBAM, а если остались симптомы, то CF удаляют еще не мало.
    2. Слабый бортовой антируткит (не так давно и Gmer был под анафемой "лишняя утилита") :) вспомним Kido и Tdss

    Я тоже в свое время занимал довольно аскетическую позицию по выбору утилит, но чем дальше изучал множество альтернативных инструментов, все больше и больше замечал мутных пятен на "нимбе" AVZ.
    Cогласен в одном, выбор инструментария сугубо индивидуальное дело каждого специалиста.
     
    2 пользователям это понравилось.
  16. Drongo
    Оффлайн

    Drongo Ассоциация VN/VIP Разработчик

    Сообщения:
    7.902
    Симпатии:
    8.221
    Ingener, Привет. Я с Delphi поверхностно знаком. Мне бы хотелось понять не что именно этот скрипт делает, а как он работает. Тоесть нужно помочь мне его перевести на нормальный человеческий язык (псевдокод.)
    Код (Text):
    var count:integer;
    begin
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    for count:=1 to 9 do
     begin
     if RegKeyExists('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)) then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS');
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Раздел ControlSet00'+IntToStr(count)+' найден.');
      end;
     end;
    for count:=10 to 99 do
     begin
     if RegKeyExists('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)) then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS');
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Раздел ControlSet0'+IntToStr(count)+' найден.');
      end;
     end;
    for count:=100 to 999 do
     begin
     if RegKeyExists('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)) then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS');
      RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Раздел ControlSet'+IntToStr(count)+' найден.');
      end;
     end;
    end.
    В общем-то я понимаю:
    1-я строка, сброс ограничений прав для ветки ...\BITS
    2-я строка, сброс ограничений прав для ветки ...\wuauserv
    3-я строка, изменяет в ветке ...\BITS, значение параметра ImagePath на следующий %SystemRoot%\System32\svchost.exe -k netsvcs
    4-я строка, делает тоже что и 3-я, но для ветки ...\wuauserv
    ---------------------
    Код (Text):
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
    RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
    RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
     
    Не ясен момент цикла со счётчиком... Почему используется счётчик от 0 и до 10, от 10 и до 10, от 100 и до 999. То что значения могут содержать первые два нуля или первый нуль, это понятно. Просто у меня на компе только два ControlSet'a:
    1-й ControlSet001
    2-й ControlSet002
    И всё, зачем нужен перебор до 999 ?

    P.S. В гугле я нашёл значение ControlSet100 и ControlSet004, это к слову, но не знаю отчего зависит количество этих разделов?
     
    Последнее редактирование: 21 окт 2009
  17. Ingener
    Оффлайн

    Ingener Активный пользователь

    Сообщения:
    25
    Симпатии:
    96
    Перебор до 999 задан чисто теоретически - я сам точно не знаю какой максимальный номер может быть задан, поэтому чисто решил остановится на числе 999. В логах GMER встречал записи созданные зловредами если мне не изменяет память с нумерацией разделов до 100 (т.е. он например создавал разделы ControlSet044, ControlSet057) - поэтому я с запасом решил сделать перебор до 999 - но на ресурсоемкости серипта это никак не отображается - скрипт вмиг перебирает все разделы.

    интервалы от 0 и до 10, от 10 и до 10, от 100 используется из-за для организации корректного перебора ключей:
    Если просто задать перебор интервалом от 0 до 999 то получим:
    Код (Text):
    ControlSet1
    ***
    ControlSet10
    ***
    ControlSet100
    ***
    ControlSet999
    Т.е. скрипт начнёт действовать только с 100-го раздела реестра.
    А нам нужен такой перебор:
    Код (Text):
    ControlSet001
    ***
    ControlSet010
    ***
    ControlSet100
    ***
    ControlSet999
    Люди говорили что как-то можно добавить ведущие нули, но я не разобрался как это сделать - кстати вот усовершенствованная модель скрипта - с оптимизированным перебором разделов реестра и откорректирован ряд моментов - сейчас ещё потестирую скрипт на виртуалке - нет ли там ошибок и можно заменить его в той теме:
    Код (Text):
    var j:integer; NumStr:string;
    begin
    for j:=0 to 999 do
     begin
        if j=0 then
            NumStr:='CurrentControlSet' else
            if j<10 then
                NumStr:='ControlSet00'+IntToStr(j) else
                if j<100 then
                    NumStr:='ControlSet0'+IntToStr(j) else
                    NumStr:='ControlSet'+IntToStr(j);
     if RegKeyExists('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS') then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS');
      RegKeyStrParamWrite('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Значение параметра ImagePath в разделе реестра HKLM\SYSTEM\'+NumStr+'\Services\BITS исправлено на оригинальное.');
      end;
     if RegKeyExists('HKLM', 'SYSTEM\'+NumStr+'\Services\wuauserv') then
      begin
      RegKeyResetSecurity('HKLM', 'SYSTEM\'+NumStr+'\Services\wuauserv');
      RegKeyStrParamWrite('HKLM', 'SYSTEM\'+NumStr+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
      AddToLog('Значение параметра ImagePath в разделе реестра HKLM\SYSTEM\'+NumStr+'\Services\wuauserv исправлено на оригинальное.');
      end;
     end;
    SaveLog(GetAVZDirectory + 'fystemRoot.log');
    end.
    Добавлено через 1 час 14 минут 9 секунд
    Скрипт протестировал на виртуалке - полностью рабочий - замените плиз в соответствующей теме.
     
    Последнее редактирование: 21 окт 2009
  18. Drongo
    Оффлайн

    Drongo Ассоциация VN/VIP Разработчик

    Сообщения:
    7.902
    Симпатии:
    8.221
    А, понял, спасибо.
    Эта версия с условиями если\иначе будет лучше, не будет лишних затрат.
     
  19. Drongo
    Оффлайн

    Drongo Ассоциация VN/VIP Разработчик

    Сообщения:
    7.902
    Симпатии:
    8.221
    Ingener, Мой друг Serega, реализовал пример-программу на Delphi с ведущими нулями перед числом. Оригинальный код:
    Код (Text):
    program Project1;

    uses
      Windows,
      SysUtils;

    var
      i: Integer;
      s: string;
     
    begin
      for i:= 0 to 10 do s:= s + FormatFloat('Template0000', i) + '.txt' + #13;
      MessageBox(0, PChar(s), 'Сообщение', MB_ICONEXCLAMATION);
    end.
    Тест-программа, выводит в примере имена файлов с ведущими нулями от номера от 0000 до 0010.

    [​IMG]

    Я думаю можно исправить приблизительно так:
    Код (Text):
    ...
    NumStr:= NumStr + FormatFloat('ControlSet000', j);
    ...
    if RegKeyExists('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS')
    ...
     
    2 пользователям это понравилось.

Поделиться этой страницей