Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [Горячий вопрос] Защита своего дистрибутива!

Ответить
Настройки темы
[Горячий вопрос] Защита своего дистрибутива!

Покинул форум


Сообщения: 3254
Благодарности: 893


Конфигурация

Профиль | Цитировать


Изменения
Автор: prokazzza
Дата: 22-09-2006
Описание: Добавил статью
Предисловие: захожу сеня к кенту и вижу ставит новую систему, радостный говорит сеня купил (цензура), Винда типо 2006 года, все дела, у мя уже тогда закралось сомнение и, ТОЧНО!!! загружается мой Boot Screen, захожу в систему, моя фотка красуется в oeminfo. Все знают грязные ручки юзеров, оказась стырили мой дистрибут, который я месяц облизывал, не ел не спал ночами, хорошо он не законченный был, так сказать "бета". А так гляди по всему городу. Хотя конешно прикольно моя фотка на винде, но все равно, я тут делать, а кто-то будет на этом бабки.

Так вот у мя вопрос ко всем как можно ЗАЩИТИТЬ свой родной дистрибут????

Если есть у кого-нить мыслишки прошу...

Защита своего дистрибута UACD.

мой перевод статьи How to protect your UACD с форума MSFN

Читать дальше

1) Загрузите приложения в конце этого поста.
2) Извлеките их во временную папку.
3) Скопируйте файл PKUnzip в папку дистрибута $OEM$\$1
4) Скопируйте файлы ProtectUA.cmd и Protect.vbs в $OEM$\$$\system32
5) Запустите Analyze.vbs, для того чтобы получить код BIOSа вашей материнки.



6) Откройте файл ProtectUA.vbs и поместите полученный код в
Код: Выделить весь код
Dim arrayAllowedHosts(2)
arrayAllowedHosts(0) = "xxxxxxxxxxxxxxxxxxxx"
arrayAllowedHosts(1) = "xxxxxxxxxxxxxxxxxxxx"
7) Повторите шаги 5 и 6 для каждого компьютера, на которых вы хотите использовать UACD. Если вы используете, больше чем два компьютерах тогда, вышеупомянутый код может быть добавлен, просто добавив больше строк arrayAllowedHosts.
Код: Выделить весь код
Dim arrayAllowedHosts(2)
arrayAllowedHosts(0) = "xxxxxxxxxxxxxxxxxxxx"
arrayAllowedHosts(1) = "xxxxxxxxxxxxxxxxxxxx"
arrayAllowedHosts(2) = "xxxxxxxxxxxxxxxxxxxx"
Помните, что все начинается с 0. (То есть, 3 это - 4 компьютеров)

8) В папке $OEM$\$1 создайте архивный файл Protect.zip. Он может содержать все .cmd файлы и .reg файлы, которые вы используете при установке вашего диструбута. Файл обязательно должен быть зашифрован паролем.
9) Учтите, что PKUNZIP работает только работает с 8.3 файлами (имя - 8, расширение - 3). Переименуйте все свои .cmd и .reg файлы под 8.3
10) Введите пароль в ProtectUA.vbs
Код: Выделить весь код
strPassword = "SET YOUR PASSWORD HERE"
Кавычки "" обязательны иначе не будет работать!

11) Далее отредактируем RunOnceEx.cmd. ProtextUA.cmd должен быть 1-ой операцией в RunOnceEx.cmd. Архив должен быть извлечен прежде, чем запустятся остальные команды. Примечание: архив будет распакован на диск C, не забудьте отредактировать .cmds и .reg файлы в RunOnceEx.cmd. Пример RunOnceEx.cmd:
Код: Выделить весь код
@echo off

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

REG ADD %KEY% /V TITLE /D "Installing Applications" /f

REG ADD %KEY%\001 /VE /D "Preparing Installation Profile..." /f
REG ADD %KEY%\001 /V 1 /D "%SystemDrive%\Windows\System32\ProtectUA.CMD" /f

здесь пример REG ADD %KEY%\002 /VE /D "Inital Registry Changes and Tweaks" /f
REG ADD %KEY%\002 /V 1 /D "REGEDIT /S %systemdrive%\musicMov.reg" /f
REG ADD %KEY%\002 /V 2 /D "%systemdrive%\NWIcon.vbs" /f
12) Как только вы сделали все это и удостоверились, что правильный пароль и ID находятся в файле VBS.нужно будет все протестировать. Примечание: если вы будете устанавливать на Виртуальной Машине (VM), то вы должны будете взять ID BIOS с VM.
13) Протестируйте ваш дистрибут. Если все прошло на ура, протесте еще раз свой дистрибутив, измените ID Bios в файле ProtectUA.vbs на неверное значение. Машина должна уйти в перезагрузку и появится сообщение "NTLDR is missing"
14) Когда все тесты будут окончены, код VBS должен быть зашифрован. Скачайте и установите "Windows Script Encoder". Скопируйте файл encrypt.cmd в конце этого поста. Скопируйте ваш ProtectUA.vbs на диск C:\ и запустите encrypt.cmd. ProtectUA.vbs обязательно должен быть в на диске C:\ для этого, чтобы все заработало. Затем отредактируйте ProtectUA.cmd.
Код: Выделить весь код
REM Start Machine Authentication and wait for its end
START /WAIT %SOURCEPATH%\Cscript.EXE //Nologo ProtectUA.VBS
на
Код: Выделить весь код
REM Start Machine Authentication and wait for its end
START /WAIT %SOURCEPATH%\Cscript.EXE //Nologo ProtectUA.VBE
15) Замените в $OEM$\$$\system32 файл ProtectUA.vbs на ProtectUA.vbe.


Скачать файлы:
ProtectionUA.zip
encrypt.cmd
Способ предложенный ShaddyR довольно неплох, если его немного доработать
мысль такова в определенную папку положить маркерный файл, при установке проверить его наличие в известном месте, при отсутствии посылать тачку в ребут...
Цитата:
1) Допустим, у тебя есть папка D:\Install\Utils. Создаешь в ней файл check.txt, хоть пустой, хоть нет.
2) В файле cmdlines.txt прописываешь запуск файла check.bat следующего содержания:
Код: Выделить весь код
@echo off
IF  EXIST  "D:\Install\Utils\check.txt" goto Ok
reboot.exe 
:Ok
...
Чтобы не было лишних вопросов, отображение окна с проверкой можно спрятать соответствующей утилитой.
ессно, вместо "reboot.exe" вписать имя утилиты для тихой перезагрузки.
я б вместо ребута Format d: /q написал бы, прикольно былоб посмотреть лицо юзера, когда он поставит другую винду, тупо смотря на пустой диск D непонимая куда делась вся инфа с винта.

Отправлено: 22:45, 29-08-2006

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Dark Engel
Цитата:
А можно как нибудь сделать что бы был не нужен первый этап установки?
В принципе можно уже сейчас, распаковав и переименовав сгенерированный в режиме "Scan" файл Setup.exe - этот скрипт лишь копирует в System32 две указанные выше утилиты и выполняет команду "Devcon Find" (на сообщение о перезагрузке можно не обращать внимания). Но в этом случае придется поиграть с параметром DevFind, чтобы результат работы "DevCon Find" не отличался в пред-установочном окружении и после полной установки системы. Совпадение можно гарантировать только при полном повторении всех условий - именно поэтому я в руководстве указал требование имитации установки при сканировании, в других ситуациях я просто не тестировал...

В любом случае не советую использовать маску всех устройств (DevFind=*). Например, включение перечислителя ACPI поставит результат в зависимость от настроек BIOS, а USB* соответственно от подключенных USB-устройств. Кстати, все перечисляемые DevCon-ом устройства можно просмотреть в ветке реестра [HKLM\SYSTEM\CurrentControlSet\Enum].

Отправлено: 16:04, 26-09-2006 | #51



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Dark Engel

Старожил


Сообщения: 150
Благодарности: 12

Профиль | Отправить PM | Цитировать


amel27

Цитата:
В любом случае не советую использовать маску всех устройств (DevFind=*). Например, включение перечислителя ACPI поставит результат в зависимость от настроек BIOS, а USB* соответственно от подключенных USB-устройств. Кстати, все перечисляемые DevCon-ом устройства можно просмотреть в ветке реестра [HKLM\SYSTEM\CurrentControlSet\Enum].
В таком случае возможно стоит предусмотреть несколько наборов предустановок? Я просто плохо в железе вообще понимаю.

-------

"Чем больше мы умнеем, тем больше понимаем что мы глупцы."


Отправлено: 16:18, 26-09-2006 | #52


Аватара для borzoy

Пользователь


Сообщения: 134
Благодарности: 11

Профиль | Отправить PM | Цитировать


XXXler

amel27

Boa Soft

не могли бы вы более падробнее рассказать
я понимаю для вас и участников форума, но вот простому юзеру не очень понятно тем более я тока начал этим заниматься

Отправлено: 18:21, 26-09-2006 | #53


Аватара для simplix

Silent


Сообщения: 1305
Благодарности: 1328

Профиль | Сайт | Цитировать


Вложения
Тип файла: rar Protect.rar
(19.0 Kb, 68 просмотров)

Напишу и свой способ, тем более он успешно прошёл тесты и достоин быть одним из вариантов защиты Юзать на XP Rus Corp SP2.

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

Первым делом компилим следующий код:
Код: Выделить весь код
;Encrypt.exe
ReadINIStr $0 $EXEDIR\Winnt.sif UserData ProductKey
Exec '"$EXEDIR\WINNT32.EXE" /ENCRYPT:"$0:30" /UNATTEND:"$EXEDIR\Winnt.sif'
Это можно и вручную сделать, но так проще. Число 30 означает, в течение скольких дней после установки защиты ключ дистрибутива будет вводиться автоматически - сейчас установлен один месяц, можно изменить на конкретный день или диапазон. Эта команда шифрует ключ установки таким образом, что в любые другие дни ключ нужно будет вводить вручную. Как пользоваться: помещаем Encrypt.exe в каталог i386, где уже лежит файл Winnt.sif с рабочим ключом установки, меняем системную дату компьютера на начало того периода, в который система должны устанавливаться с диска (например если мы поставим дату на 02.11.06 и в скрипте укажем период на 30 дней, то система будет работоспособной, если перед установкой в биосе поставить любой день диапазона 02.11.06-02.12.06), и только после этого запускаем Encrypt.exe. Убеждаемся, что в Winnt.sif вместо ключа содержится зашифрованная строка и удаляем Encrypt.exe (больше он не нужен) и меняем системную дату компа на правильную. Защита установлена, но если дата не совпадёт с нужной, программа установки запросит ввести ключ вручную, а это нам совсем не нужно. Поэтому копируем из дистрибутива три файлика: Syssetup.dl_, Winnt32u.dll и Activ.ht_. Распаковываем Syssetup.dl_ и Activ.ht_. Редактором ресурсов (рекомендую PE Explorer) удаляем из Syssetup.dll диалог 208 и из Winnt32u.dll диалог 158 (актуально для XP Rus Corp), сохраняем изменения (не забываем воспользоваться Modifype и Killwfp.lst, сами файлы не используются системой никак и существуют исключительно на этапе установки, так что система от этого не пострадает). Таким образом даже если дата не будет соответствовать серийнику, он никогда не будет запрошен - система установится без него, но запросит активацию, а нам не нужно чтобы юзер мог ввести свой код, поэтому в распакованном файле Activ.htm в самом конце удаляем строчки:
Код: Выделить весь код
<td>
<BUTTON ID="btnNext" class="buttons" TABINDEX=6 ACCESSKEY="Д"><label for=btnNext><id id="LocalBtnNext_Text"><u>Д</u>алее</id></label></BUTTON>
</td>
Теперь если будет предложена активация винды, юзер не сможет ввести свой код, т. к. тупо будет отсутствовать кнопочка "Далее". Запаковываем обратно Syssetup.dl_ и Activ.ht_. Остаётся устранить последнюю потенциальную дырку - безопасный режим, в который юзер может загрузиться и с которого может запустить какой-нибудь AntiWPA и ломануть эту активацию. Для этого компилим следующую вещь:
Код: Выделить весь код
;Protect.exe
CopyFiles /SILENT $EXEDIR\Protect.exe $SYSDIR\Protect.exe
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" "Shell" "Explorer.exe,Protect.exe"
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "ProductId"
IntCmp $0 0 false false true
false:
WriteRegDWORD HKLM SYSTEM\Setup SystemSetupInProgress 1
Delete /REBOOTOK $EXEDIR\Protect.exe
Reboot
true:
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" "Shell" "Explorer.exe"
Delete /REBOOTOK $EXEDIR\Protect.exe
Или берём готовый Protect.exe. Смысл его такой - если система установлена с пустым серийником, т. е. с неправильной датой, и юзер загрузил её в безопасном режиме, она автоматически уйдёт в ребут и заблокируется, а без безопасного режима его будет поджидать активация без кнопки "Далее". Тупик короче. Если ключ в системе есть, скрипт не сделает ровным счётом ничего, поэтому ничем не повредит, даже если будет запущен на рабочем компе. Как использовать: сделать из него аддон методом Svcpack (кстати если немного поправить скрипт (в строчке CopyFiles /SILENT $EXEDIR\Protect.exe $SYSDIR\Protect.exe), переименовав Protect.exe в какой-нибудь KBxxxxxx.exe с соответствующей иконкой, на глаз будет сложно отличить его от обновления). А если взломщик его всё-таки удалит, система от этого рабочей не станет, и не станет даже если удалит Winnt.sif - только если будет правильная дата, система установится как обычно, так же, как бы она установилась без защиты вообще.

Такая защита - только идея и первый шаг. Кому нужно - доработайте её так, чтобы было по-настоящему трудно ломать (хотя и эту защиту среднестатистический юзер не сломает, т. к. облом вылезет только после полной установки винды перед первым входом в систему админа, а отследить где и как закопано не прочитав эту статью - не так просто). Принцип защиты не затрагивает лицензионное соглашение и по сути редактирование ресурсов можно приравнять к патчу Uxtheme.dll, т. е. это не варез и защита не направлена на взлом системы или ослабление её защиты, наоборот защищает её от неавторизованого доступа, если диски с дистрибутивами хранятся в общедоступном месте. Аминь.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:41, 26-09-2006 | #54


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как насчет того, чтобы просто хранить свой диск от чужих рук? Для товарищей, которые хотят взять у меня винду, есть обрезок - WinXP SP2 с интегрированным DirectX и все...

Отправлено: 00:24, 27-09-2006 | #55


Аватара для simplix

Silent


Сообщения: 1305
Благодарности: 1328

Профиль | Сайт | Цитировать


Ilja77
Смысл темы в том, что это просто интересно, как можно его защитить
На практике мне лично никакая защита даром не нужна, т. к. мну сторонник свободного ПО. И за мир во всём мире

Отправлено: 01:14, 27-09-2006 | #56


Новый участник


Сообщения: 16
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте!
Спасибо Вам за изложенные выше способы, есть очень интерессные методы.
Правда мне, как программеру, легше написать свой софт для защиты дистрибутива. Дать юзеру после установки системы пару дней на активацию, после чего потребовать от него код или специально сгенерированый под его машину ключевой файтик, который будет созданый мною же. Так я смогу знать к кому попал мой диск.
Плюс этого метода в том, что мне не нужно пересобирать свой дистриьутив. Программка автоматом все сгенерирует, юзеру нужно быдет только взять у меня файлик.
Если получется че-нибудь толковое, то поделюсь программкой.

-------
Нет ничего, чего нельзя было б сделать. Главное догадаться как :-)


Отправлено: 08:05, 27-09-2006 | #57


Старожил


Сообщения: 454
Благодарности: 17

Профиль | Отправить PM | Цитировать


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

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

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

-------
моя самоделка

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:50, 27-09-2006 | #58


Аватара для simplix

Silent


Сообщения: 1305
Благодарности: 1328

Профиль | Сайт | Цитировать


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

Отправлено: 09:38, 27-09-2006 | #59


Покинул форум


Сообщения: 3254
Благодарности: 893

Профиль | Цитировать


amel27

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

Отправлено: 11:02, 27-09-2006 | #60



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [Горячий вопрос] Защита своего дистрибутива!

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Fujitsu-Siemens Amilo Pro V3405. Потухла матрица и Горячий процессор. Borod888 Ноутбуки 2 25-11-2009 17:41
вопрос насчет домена (своего) Bars66 Вебмастеру 5 14-02-2009 10:56
Создание своего сервера schtefan Хочу все знать 2 08-08-2008 21:24
Создание своего дистрибутива через файл каталога (*.clg) haker-kirik Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 1 25-04-2008 00:12
Мысли по поводу своего сервера... vadimiron Вебмастеру 14 07-10-2005 01:37




 
Переход