Имеется программа для продления триальности по принципу чистки реестра:
О продлении триальности программы Radmin Server 3.0
1. Radmin Server 3.0 устанавливает в реестре две записи о времени начала использования
программы. Этот процесс происходит не при инсталляции программы, а при первой попытке
клиента RadminViewer подключиться к серверу.
2. Обе записи находятся в ветке HKEY_CLASSES_ROOT\CLSID\
Причем, одна запись - это создается одна новая ветка с параметрами визуально
похожими на бессмысленный мусор. Имя этой ветки зависит от HardWare компьютера, на котором
установлен Rserver. Алгоритм формирования имени известен только Rserver.
А вторая запись - это по известному только RadminServer алгоритму выбирается уже существующая
ветка и в ней модифицируется запись "Default". Имя этой ветки зависит от HardWare компьютера,
на котором установлен Rserver. Причем, модификация заключается в добавлении к значению ключа
"Default" нескольких символов, которые следуют уже за маркером конца строки. Поэтому в regedit не
видно факта изменения значения параметра "Default" (и сделать такую модификацию стандартными
средствами нельзя). Можно только увидеть в Win2000 в regedt32.exe или в WinXP в regedit.exe
при выборе просмотра edit->modify binary data.
Эти ключи выбираются программой Rserver только один раз и их расположение больше не меняется (для
конкретно взятого компьютера).
Для продления срока триальности программы достаточно уалить новую ветку с "мусором", а в модифицированной
ветке перезапизать значение "Default".
3. Есть два способа сделать это:
а) Перед первым обращением клиента к серверу необходимо сделать слепок реестра программой
Regsnap и второй слепок реестра сделать сразу после попытки обращения клиента к серверу.
Сравнить эти два слепка и в строке NewKeys найти что-то типа:
New keys
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}\
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}\InprocServer32\
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}\InprocServer32\@
Value: String: "C:\WINDOWS\system32\ikcjafej.dll"
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}\Vsg\
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}\Vsg\@
Value: String: "ZWDEqsOi5hKn8qCrNZRM"
Значит, ветка HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}
должна быть целиком удалена.
Теперь ищем вторую запись в разделе Modified keys. Это должна быть запись "пустого" изменения параметра
что-то типа такого:
Modified keys
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{12D73610-A1C9-11D3-BC90-00C04F72DF9F}\@
New: String: "SpITNProcessor Class"
Old: String: "SpITNProcessor Class"
Значит, необходимо перезаписать значение "SpITNProcessor Class"
Это делается созданием REG-файла:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\CLSID\{40DEBFCD-419C-5972-20DC-1E665D31BA28}]
[HKEY_CLASSES_ROOT\CLSID\{12D73610-A1C9-11D3-BC90-00C04F72DF9F}]
@="SpITNProcessor Class"
Достаточно запускать этот REG-файла раз в месяц. Выгружать Rserver не надо.
б) А если отсчет триального периода уже начался?
Тогда для вылавливания новой ветки с мусором запускаем программу Regmon от Sysinternals.
Устанавливаем фильтр по rserver3.exe и включаем на запись все обращения к реестру и
делаем попытку обращения клиента к серверу. Останавливаем запись и просто просматриваем
протокол записи - ищем "мусор" типа "ZWDEqsOi5hKn8qCrNZRM". Соответственно, убиваем эту ветку.
Не закрывем этот протокол.
Теперь будем искать модифицированную запись. Для этого надо FAR v1.70 и плагин
Registry Browser - Вьюер-редактор системного реестра для FAR Версия 2.19, 11.10.2003
Запускаем FAR запускаем плагин Registry Browser. Идем в ветку HKEY_CLASSES_ROOT\CLSID\
Нажимаем комбинацию Alt+F7
в поле "A file mask or several file masks:" пишем (Default)
отмечаем галку [Х] Search for hex
вносим в поле "Containing text:" два нуля 00
и нажимаем [ Find ]
Среди найденных значений нас интересуют только те, у которых длина записи больше 4.
Все остальные (а их очень немного) можно проверить по имени ветки на предмет присутствия
при обращении rserver3.exe в Regmon от Sysinternals. А можно и просто все эти значения перезаписать.
Для этого просто открываем в реестре это значение и жмем OK.
END
--------------------------------------------------
Теперь поставил задачу сделать ее триальной навсегда, для этого достаточным и необходимым условием является выборочный запрет на запись/чтение в реестр.
есть несколько путей, я попытался пойти по пути написания proxy/stub библиотеки для advapi32.dll
но результат надо сказать плачевный, программа не подхватывает мою прокси библиотеку лежащую вместе с radmin, а все равно берет из систем32
вот вопросы, как сделать так чтоб бралась из той папки (в WinXP вроде есть функция использования разных версий библиотек для разных программ, как ее заюзать?). есть какие нить соображения? или может кто нить путем внедрения при помощи лоадера сможет это реализовать?