Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Собственно, мои изыскания 22.02.05 11:49 Число просмотров: 3289
Автор: amirul <Serge> Статус: The Elderman
|
Дисклеймер: все описанное здесь производилось "в исключительно мирных, домашних целях", то есть в целях обучения и повышения квалификации. Любая попытка повторить описанное останется на вашей совести
Начиналось все хорошо:
Убил все hide-ы в %SystemRoot%\INF\sysoc.inf
windbg.exe sysocmgr.exe /i:%SystemRoot%\INF\sysoc.inf
0:000> bu tsoc!TSState::CanInstallAppServer
0:000> g
У нас в ecx - указатель на этот самый TSState, в нем по смещению 0x146 лежит WORD wProductType, а по смещению 0x144 - WORD wSuiteMask
Ничтоже сумняшеся делаем
0:000> ew (@ecx+144) 80
0:000> ew (@ecx+146) 3
0:000> bd *
0:000> g
Voila. Выбираем "Службы Терминалов" и устанавливаем. Он просит перезагрузиться - перезагружаемся. И тут видим первый облом: сервис "terminal services" не запустился. При попытке запустить его вручную винда пытается сказать чего то умное, но в очередной раз морозит глупость. Ясное дело, что не только для установки нужна правильная версия, но и для работы.
Делаем первый подход к снаряду:
regedit.exe
Идем в ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions
Меняем ProductType на ServerNT, а в ProductSuite добавляем например Enterprise. Попробовали? Поздравляю. Винда защищает эти ключи и говорит чего то о нарушении лицензии. Но человек, который действительно хочет выстрелить себе в ногу - обязательно найдет способ это сделать. Экспортируем этот ключ в виде хайва, подключаем хайв к HKLM-у, вносим изменения там, отключаем хайв, импортируем его на место. Опять вуаля. Перегружаемся и наблюдаем bugcheck (aka BSOD) 0x9A: SYSTEM_LICENSE_VIOLATION. Пуля вошла в ногу, а вышла через голову. При каждой загрузке винда сравнивает ключ продукта с типом продукта. Вот и вышла неувязочка. Можно дальше копать в этом направлении и пытаться отучить винду заниматься такими глупостями, но зачем?
Настало время поковырять DDK.
#define KI_USER_SHARED_DATA 0xffdf0000
#define SharedUserData ((KUSER_SHARED_DATA * const) KI_USER_SHARED_DATA)
typedef struct _KUSER_SHARED_DATA {
volatile ULONG TickCountLow;
ULONG TickCountMultiplier;
volatile KSYSTEM_TIME InterruptTime;
volatile KSYSTEM_TIME SystemTime;
volatile KSYSTEM_TIME TimeZoneBias;
USHORT ImageNumberLow;
USHORT ImageNumberHigh;
WCHAR NtSystemRoot[ 260 ];
ULONG MaxStackTraceDepth;
ULONG CryptoExponent;
ULONG TimeZoneId;
ULONG Reserved2[ 8 ];
NT_PRODUCT_TYPE NtProductType;
BOOLEAN ProductTypeIsValid;
ULONG NtMajorVersion;
ULONG NtMinorVersion;
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
ULONG Reserved1;
ULONG Reserved3;
volatile ULONG TimeSlip;
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
LARGE_INTEGER SystemExpirationDate;
ULONG SuiteMask;
BOOLEAN KdDebuggerEnabled;
volatile ULONG ActiveConsoleId;
volatile ULONG DismountCount;
ULONG ComPlusPackage;
ULONG LastSystemRITEventTickCount;
ULONG NumberOfPhysicalPages;
BOOLEAN SafeBootMode;
ULONG TraceLogging;
#if defined(i386)
ULONGLONG Fill0; // alignment
ULONGLONG SystemCall[4];
#endif
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
---
Просто запускаем винду под отладчиком, и где то посреди загрузки заходим и правим NtProductType на 3, а SuiteMask на 0x90.
Для автоматизации этого процесса можно например написать драйвер, поставить ему группу загрузки чего нибудь вроде Extended Base и в DriverEntry пропатчить эти значения и выйти. Драйвер, не создавший ни одного устройсва и не выставивший AddDevice будет сразу же выгружен.
Выставляем в свойствах компьютера "Разрешить удаленный досуп" и можно пытаться подключиться. Сразу скажу, что у меня подключиться не получилось потому как не зря винда стращала сервером лицензий (или чего то в этом роде). Но откручивать сервер лицензий я не нанимался
|
|
|