Я пробовал ForceBindIP, но у него есть существенный недостаток - он не влияет на дочерние элементы приложения, которое я пытаюсь связать, а только на само приложение. Это также не может заставить приложение всегда запускаться через указанный интерфейс, оно должно выполняться forcebindip.exe
каждый раз. Это становится проблемой для приложений, таких как League of Legends, где дерево процессов выглядит так:
Панель запуска запускает патчер, патчер запускает клиент и т. Д. Я могу влиять только на родителя всех этих процессов в дереве, поэтому настоящая игра не привязана к желаемому интерфейсу, что делает все это бессмысленным.
Есть ли более современная альтернатива ForceBindIP для Windows 7? На этом сайте есть много вопросов, похожих на этот, но они в основном старые. Может быть, теперь есть лучший способ решить эту проблему?
Моя текущая идея заключается в следующем:
Настройте локальный сервер 3proxy, связанный с желаемым интерфейсом.
Запустите игру через Proxifier или аналогичное программное обеспечение, настроенное для запуска через этот локальный прокси.
Я не уверен, что это сработает, но даже если это сработает, это кажется неоптимальным решением. Ребята, у вас есть идеи получше?
Изменить: моя идея не сработала :(
Редактировать 2: По сути, я пытаюсь добиться привязки нескольких приложений к обычному интерфейсу во время работы VPN. Причина в том, что мне нужно подключаться через VPN большую часть времени, но некоторые приложения (например, игры) не работают должным образом из-за более высокого пинга и других проблем.
LolClient.exe
? Является ли или ех? Я играю с сторонним DLL-инжектором и, возможно, я могу вам помочь, но мне нужно больше информации.LolClient.exe
x86
x64
BindIp.dll
32-битный, поэтому он не будет работать с 64-битными процессами.Ответы:
Обновить
Я обнаружил, что ForceBindIp фактически передает параметры вызываемым исполняемым файлам. Он просто пропускает первый параметр . Поэтому я изменил свой сценарий для использования
ForceBindIp.exe
вместо пользовательского инжектора, и теперь похоже, что все проблемы сinjectory
исключениями исчезли и все работает.Вот модифицированные шаги и
BindIp.cmd
скрипт:Установите ForceBindIp как обычно
Поместите в
BindIp.cmd
любое место на вашем диске (напримерC:\BindIp\BindIp.cmd
)BindIp.cmd
сценарий:Затем выполните шаги 2-6 снизу.
Вступление
ForceBindIp не может автоматически внедрять
BindIp.dll
дочерние процессы ине передает параметры вызываемым исполняемым файлам. Но мне удалось обойти это, используя параметры выполнения файлов изображений в реестре , пакетный скрипт и сторонний DLL-инжектор . Подробности ниже.теория
Для использования
BindIp.dll
безForceBindIp.exe
нас нужно выяснить, как они общаются (ForceBindIp.exe
нужно как-то передать dll-адрес в dll).Я использовал IDA free и обнаружил, что
ForceBindIp.exe
создает переменную среды с именем,FORCEDIP
которая содержит IP-адрес иBindIp.dll
считывает IP-адрес из этой переменной, когда она вводится и выполняется в целевом процессе.Чтобы обнаружить запуск целевого приложения, мы можем добавить
Debugger
ключ в опциях исполнения файла образа в реестре для этого исполняемого файла:«Отладчик» в нашем случае будет пакетным скриптом, который установит
FORCEDIP
переменную и запустит инъекцию dll-injector. Injectory затем начнется процесс, передать аргументы командной строки и впрыснутьBindIp.dll
.практика
Создайте папку где-нибудь (
C:\BindIp
например) и поместите эти три файла в нее:BindIp.dll
BindIp.cmd
BindIp.cmd
сценарий:LolClient.exe
) для целевого исполняемого файла вHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
Добавьте строковое значение к этому ключу:
Debugger
C:\BindIp\BindIp.cmd
Предоставьте
Users
полные разрешения для этого ключа (скрипт должен будет изменять его при каждом запуске). Это должно выглядеть так:Установите необходимый IP-адрес в
BindIp.cmd
Повторите шаги 3 и 4 для каждого исполняемого файла , который вы хотите , чтобы связать (
rad_user_kernel.exe
,LolLauncher.exe
,LolPatcher.exe
и т.д.).Теперь каждый раз, когда вы запускаете исполняемый файл с соответствующей записью в реестре,
BindIp.cmd
вместо этого запускается скрипт и привязывает эту программу к нужному IP-адресу.Вывод
Я проверил это на своем ноутбуке под управлением Windows 8.1 x64 и смог успешно привязать различные программы ( AIMP 2 , BersIRC , Opera 12.4 ) к адаптеру Ethernet или WiFi, используя эту технику. К сожалению,
BindIp.dll
это 32-битный, поэтому он не будет работать с 64-битными процессами.источник
injectory
иногда возникают проблемы с--args
опцией. Не уверен почему.--args
какого-либо приложенияForceBindIp
самом деле может передавать параметры, см. Мой обновленный ответ.Я нашел это HideMyAss! VPN-клиент имеет функцию Secure IP Bind, которая позволяет привязывать приложения к интерфейсу VPN:
Я посмотрел на него, и он основан на пользовательских DLL- сервисе Layered Service Provider (LSP) и COM-интерфейсе для управления им. И его можно (ab) использовать без установки VPN-клиента HideMyAss.
Установка HideMyAss 'Secure IP Bind
bin
папку в распакованном установщикеСкопируйте эти три файла в папку на вашем диске (
C:\HMA_Bind
)Положите
Install.cmd
иUninstall.cmd
в эту папкуINSTALL.CMD
uninstall.cmd
Install.cmd
от имени администратора . Чтобы убедиться, что установка прошла успешно, вы можете использовать автозапуск :Windows PowerShell ISE (x86)
илиWindows PowerShell (x86)
, поскольку COM-компонент является 32-разрядным.Во-первых, вам нужно создать новый объект Secure IP Bind:
И тогда вы можете назвать его методами:
Удаление HideMyAss 'Secure IP Bind
Uninstall.cmd
от имени администратора , убедитесь, что удаление прошло успешно с помощью автозапуска.Примеры:
Обратите внимание, что вы должны создавать защищенный IP Bind COM-объект только один раз за сеанс PowerShell. В приведенных ниже примерах предполагается, что вы выполняете их в новом сеансе PowerShell, поэтому они всегда создают новый COM-объект.
Установите IP для привязки, добавления
firefox
к связанным приложениям, включения привязки.Глобально включить привязку IP:
Глобально отключить привязку IP:
Удалить приложение из списка (прекратить привязку для этого приложения):
Примечания
Поскольку привязка защищенного IP-адреса реализована как dll пользовательского многоуровневого поставщика услуг (LSP) , применяются следующие ограничения:
Я тестировал этот метод с различными приложениями со смешанными результатами: 32-битные приложения работают, но 64-битные нет, т.е. я смог связать 64-битный проводник (вероятно, потому что его процессы вкладок по умолчанию 32-битные), но не 64-битный браузер Waterfox или другие 64-битные приложения.
источник
Я могу придумать два решения проблемы:
Создайте виртуальную машину для запуска игры, которая использует только один сетевой адаптер.
Если вам известен диапазон IP-адресов, которые использует игра, создайте сетевой маршрут, который направляет этот диапазон к шлюзу определенного адаптера.
Я могу добавить больше информации, когда узнаю ваши предпочтения. Например, в пункте 1 предпочитаемый вами продукт виртуальной машины.
источник
Предположим, у вас есть две учетные записи Windows:
HomeUser
VpnUser
Когда вы входите в
VpnUser
учетную запись, вы можете запускать приложения (в частности, упомянутые вами игры) какHomeUser
(Shift + RMB для исполняемого файла -> Запускать как другой пользователь), и эти приложения запускают свои дочерние процессы какHomeUser
. Приложения, которые вы будете запускать стандартным способом (ярлыки, двойной щелчок на исполняемом файле), будут принадлежатьVpnUser
.При определении сетевых подключений Windows у вас есть возможность разрешить другим пользователям использовать это подключение. Давайте предположим, что вы определили:
HomeNetwork
исключительно дляHomeUser
VpnNetwork
исключительно дляVpnUser
и для упрощения:
Я думаю, что приложения:
VpnUser
должен использовать толькоVpnNetwork
.HomeUser
должен использовать толькоHomeNetwork
.Если мои предположения верны, то при входе в
VpnUser
учетную запись приложения будут использоватьVpnNetwork
, когда приложения будут запускаться какHomeUser
изVpnUser
учетной записи, которые следует использоватьHomeNetwork
.источник
Вы можете использовать forcebindip.exe, но вы должны написать вспомогательное приложение (другого варианта нет).
Приложение загружает XXX.ini, который содержит
Приложение работает
C: \ path1 \ app_to_run.exe 192.168.10.21 C: \ path1 \ app_to_run.exe Saved_Command_line
Приложение заканчивается
ПРОБЛЕМА: ForcebindIP не передает параметры вызываемой программе. затем, если вам нужно передать параметры в app_to_run.exe, вам нужен более развитый подход, где XXX.exe создает пакетный файл, включающий app_to_run.exe и переданные параметры, тогда этот пакет вызывается вместо app_to_run.exe в точке 4.
Вы также можете взглянуть на некоторые приложения с графическим интерфейсом, упаковывающие ForcebindIP. Некоторые из них могут работать с более чем одним приложением, но они не делают то, что вам нужно.
https://www.raymond.cc/blog/bind-windows-application-to-specific-network-adapter-with-forcebindip/
источник