Серверок терминалов Windows

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

Модификация system32\termsrv.dll

Работа сервера терминалов основана на службе TERMSERVICE, которую перед изменением необходимо остановить.

net stop termservice

Затем оригинальный файл termsrv.dll следует заменить модифицированным.

takeown /f c:\Windows\System32\termsrv.dll /A
cacls c:\Windows\System32\termsrv.dll /G Администраторы:F
ren c:\Windows\System32\termsrv.dll termsrv.dll.bak
copy termsrv.dll c:\Windows\System32\

Файл termsrv.dll находится в папках:

  • C:\Windows\System32\
  • C:\Windows\ServicePackFiles\i386\
  • C:\Windows\System32\dllcache\

Патч

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

Практического значения приведенные ниже мнемоники не имеют, но кому-то они могут быть интересны. Дизассемблерование выполнено онлайн на сайте shell-storm.org и  defuse.ca.

Win 10 x64

1511 (10.0.10586.0 x64) November Update оригинал:

39 81 3C 06 00 00 0F 84 73 42 02 00
00021DA5: cmp DWORD PTR [rcx+0x63c],eax
00021DAB: je 0x2427f

1607  (10.0.14393.0 x64) Anniversary Update оригинал:

39 81 3C 06 00 00 0F 84 D3 DE 02 00
0001A3C5: cmp DWORD PTR [rcx+0x63c],eax
0001A3CB: je 0x2dedf

1703  (10.0.15063.0 x64) Creators Update оригинал:

39 81 3C 06 00 00 0F 84 53 71 02 00
0002D165: cmp DWORD PTR [rcx+0x63c],eax
0002D16B: je 0x2715f

1709  (10.0.16299.15 x64) Fall Creators Update оригинал:

39 81 3C 06 00 00 0F 84 B1 7D 02 00
00012185: cmp DWORD PTR [rcx+0x63c],eax
0001218B: je 0x27dbd

Универсальный патч для 1511, 1607, 1703, 1709:

B8 00 01 00 00 89 81 38 06 00 00 90
0: mov eax,0x100
5: mov DWORD PTR [rcx+0x638],eax
b: nop

1803  (10.0.17134.1 x64) Redstone 4 оригинал и патч (источник: github.com):

Find:
8B 99 3C 06 00 00 8B B9 38 06 00 00
Replace With:
B8 00 01 00 00 89 81 38 06 00 00 90

Find: (Concurrent Users Patch)
28 44 8D 77 01 44 89 32
Replace With:
28 44 8D 77 00 44 89 32

Find: (Local Only Patch)
00 74 18 48 8D
Replace With:
00 EB 18 48 8D
Win 8/81 x64

оригинал:

8B 87 38 06 00 00 39 87 3C 06 00 00 0F 84 A2 AF 01 00
0:  mov eax,DWORD PTR [edi+0x638]
6:  cmp DWORD PTR [edi+0x63c],eax
c:  je 0x1afb4

патч:

B8 00 01 00 00 89 87 38 06 00 00 90 90 90 90 90 90 90
0:  mov    eax,0x100
5:  mov    DWORD PTR [edi+0x638],eax
b:  nop
c:  nop
d:  nop
e:  nop
f:  nop
10: nop
11: nop
 Win XP sp3 x86

оригинал -> патч:

22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90

Защита файла

Файл termsrv.dll может быть восстановлен или обновлен системой без предупреждения. Для предотвращения такого сценария можно отменить Полный доступ к файлу для TrustedInstaller и ВСЕ ПАКЕТЫ ПРИЛОЖЕНИЙ.

Модификация ключей реестра

Win XP sp3 x86
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Licensing Core]
"EnableConcurrentSessions"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"EnableConcurrentSessions"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AllowMultipleTSSessions"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services]
"MaxInstanceCount"=dword:00000001

Лимит одновременных подключений увеличивается в групповых политиках:

gpedit.msc -> Computer Configuration -> Administrative Templates -> Windows Components -> Terminal Services -> Limit Number of Connections
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services]
"MaxInstanceCount"=dword:00000001

Для подключения также  необходимо:

  • разрешение на удаленный доступ в свойствах Мой компьютер на закладке Удаленные сеансы
  • включение Быстрое переключение пользователей в Панели управления -> Учетные записи

Патчеры

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *