Итак, предлагаю вашему вниманию оригинальное решение
как снять лимит на одно входящее VPN подключение в Windows XP, собственно ниже инструкция:
Как сделать доступными в WinXP несколько входящих VPN подключений // © Decker
Как видно, вполне легко и непринужденно к WinXP SP3 подключено 5 VPN клиентов. Ну а теперь инструкция:
1. Загружаемся в безопасном режиме.
2. Распаковываем содержимое архива
http://depositfiles.com/files/y6csp4s5j в корень диска C:\
3. Запускаем пакетный файл прилагающийся в архиве (он осуществляет 4 действия, переименовывает %windir%\System32\rasppp.dll в %windir%\System32\rasppp.bak, переименовывает %windir%\System32\dllcache\rasppp.dll в %windir%\System32\dllcache\rasppp.bak, и копирует патченную rasppp.dll в %windir%\System32\ и %windir%\System32\dllcache\ соответственно)
4. Опять же в безопасном режиме запускаем редактор реестра. Находим ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\ , в ней будут ключи 0001, 0002, 0003 и т.п. Находим тот у которого "ComponentId"="ms_pptpminiport" и "MatchingDeviceId"="ms_pptpminiport", вообщем-то я думаю что пропустить тот раздел в котором в этих параметрах светится слово ms_pptpminiport просто нереально. Устанавливаем "WanEndpoints"=dword:00000080 (в десятичной системе 128), а "MaxWanEndpoints"=dword:000003e8 (в десятичной системе 1000).
5. Перезагружаем компьютер.
DLL'ку безопасно можно подменять если у вас установлена русская WinXP SP3, если версия отличается, то результат непредсказуем, т.к. с другими версиями ОС она не тестировалась. Собственно если "родная" версия файла rasppp.dll у вас имеет размер 210944 байта и версию 5.1.2600.5512, то она точно такая же как и у меня. В общем и целом, даже если будут какие-то проблемы скрипт rasppp.cmd сохраняет оригинальную версию файла и для возврата к ней, вам необходимо будет лишь переименовать файлы rasppp.bak в rasppp.dll обратно.
Для тех кому интересно, как это работает ... Что же все-таки изменено в этой dll'ке? Если мы посмотрим следующий участок кода в дизассемблере:
То мы увидим следующую вещь, что собственно ошибка 937 "Входящие подключения не могут принимать ваши запросы на подключение, поскольку используется другое подключение такого же типа" генерируется в .text:72236174, а туда ведут всего два условных перехода, при этом флаги которые передаются вместе с кодом ошибки хранятся в dword_722525EC . Проанализировав эти переходы, а также все возможные обращения к данным, хранящимся в dword_722525EC:
Мы наткнемся на следующий кусок кода:
Я понимаю что для вас все это темный лес, но через несколько секунд вы поймете смысл. Как видно из картинки вызывается функция RtlGetNtProductType и в зависимости от того возвращает она единицу или нет, младший бит dword_722525EC либо обращается в 1 либо нет. Так вот, на самом деле функция RtlGetNtProductType возвращает следующие значения:
Код: VER_NT_WORKSTATION 0x1 Professional(Workstation)
VER_NT_DOMAIN_CONTROLLER 0x2 Domain controller
VER_NT_SERVER 0x3 Server