J'ai essayé ForceBindIP, mais il présente un inconvénient important - il n'affecte pas les enfants de l'application que j'essaie de lier, il affecte uniquement l'application elle-même. Il ne peut pas non plus forcer une application à toujours exécuter une interface spécifiée, elle doit être exécutée à forcebindip.exe
chaque fois. Cela devient un problème avec des applications comme League of Legends où l'arborescence de processus ressemble à ceci:
Le lanceur exécute le patcher, le patcher exécute le client, etc. Je ne peux qu'affecter le parent de tous ces processus dans l'arborescence, donc le jeu réel n'est pas lié à l'interface que je veux, ce qui rend cette aventure inutile.
Existe-t-il une alternative plus moderne à ForceBindIP pour Windows 7? Il existe de nombreuses questions similaires à celle-ci sur ce site, mais elles sont pour la plupart anciennes. Peut-être existe-t-il maintenant une meilleure façon de résoudre ce problème?
Mon idée actuelle est de faire ce qui suit:
Configurez le serveur 3proxy local lié à l'interface souhaitée.
Exécutez le jeu via Proxifier ou un logiciel similaire configuré pour s'exécuter via ce proxy local.
Je ne sais pas si cela fonctionnera, mais même si c'est le cas, cela semble être une solution sous-optimale. Avez-vous de meilleures idées?
Edit: Mon idée n'a pas fonctionné :(
Edit 2: Fondamentalement, ce que j'essaie de réaliser, c'est de lier quelques applications à une interface normale, alors que VPN est en cours d'exécution. La raison en est que je dois me connecter via VPN la plupart du temps, mais certaines applications (telles que les jeux) ne fonctionnent pas correctement de cette façon, en raison d'un ping plus élevé et d'autres problèmes.
LolClient.exe
? EstLolClient.exe
unx86
oux64
exe? Je joue avec un injecteur de DLL tiers et je peux peut-être vous aider, mais j'ai besoin de plus d'informations.BindIp.dll
est 32 bits, donc cela ne fonctionnerait pas avec les processus 64 bits.Réponses:
Mise à jour
J'ai trouvé que ForceBindIp transmet en fait des paramètres aux exécutables appelés. Il omet simplement le premier paramètre . J'ai donc modifié mon script pour l'utiliser à la
ForceBindIp.exe
place de l'injecteur personnalisé et maintenant il semble que tous les problèmes avec lesinjectory
exceptions ont disparu et que tout fonctionne.Voici les étapes et le
BindIp.cmd
script modifiés :Installez ForceBindIp comme d'habitude
Mettez
BindIp.cmd
n'importe où sur votre disque (par exempleC:\BindIp\BindIp.cmd
)BindIp.cmd
scénario:Suivez ensuite les étapes 2 à 6 ci-dessous.
introduction
ForceBindIp ne peut pas injecter automatiquement
BindIp.dll
dans les processus enfants etne transmet pas de paramètres aux exécutables appelés. Mais j'ai pu contourner cela en utilisant les options d'exécution de fichier image dans le registre , le script de traitement par lots et l' injecteur de DLL tiers . Les détails sont ci-dessous.Théorie
Pour l'utiliser
BindIp.dll
sans,ForceBindIp.exe
nous devons savoir comment ils communiquent (ForceBindIp.exe
doit passer l'adresse IP à la DLL en quelque sorte).J'ai utilisé IDA gratuitement et j'ai découvert qu'il
ForceBindIp.exe
crée une variable d'environnement avec un nomFORCEDIP
qui contient l'adresseBindIp.dll
IP et lit l'adresse IP de cette variable lorsqu'elle est injectée et exécutée dans le processus cible.Pour détecter le lancement de l'application cible, nous pouvons ajouter une
Debugger
clé dans les options d'exécution du fichier image dans le registre pour cet exécutable:Le «débogueur» dans notre cas, sera un script batch, qui définira la
FORCEDIP
variable et lancera l' injecteur dll-injector. L' injection démarre alors le processus, passe les arguments de ligne de commande et injecteBindIp.dll
.Entraine toi
Créez un dossier quelque part (
C:\BindIp
par exemple) et mettez-y ces trois fichiers:BindIp.dll
BindIp.cmd
BindIp.cmd
scénario:LolClient.exe
) pour l'exécutable cible dansHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
Ajoutez une valeur de chaîne à cette clé:
Debugger
C:\BindIp\BindIp.cmd
Accordez des
Users
autorisations complètes sur cette clé (le script devra la modifier à chaque lancement). Ça devrait ressembler à ça:Définissez l'adresse IP requise dans
BindIp.cmd
Répétez les étapes 3 et 4 pour chaque exécutable que vous souhaitez lier (
rad_user_kernel.exe
,LolLauncher.exe
,LolPatcher.exe
, etc.).Désormais, à chaque fois que vous lancez un exécutable possédant une entrée de registre correspondante, le
BindIp.cmd
script se lance à la place et lie ce programme à l'adresse IP souhaitée.Conclusion
J'ai testé cela sur mon ordinateur portable exécutant Windows 8.1 x64 et j'ai réussi à lier divers programmes ( AIMP 2 , BersIRC , Opera 12.4 ) à un adaptateur Ethernet ou WiFi en utilisant cette technique. Malheureusement,
BindIp.dll
c'est 32 bits, donc cela ne fonctionnerait pas avec les processus 64 bits.la source
injectory
parfois des problèmes avec l'--args
option. Pas certain de pourquoi.--args
aucune applicationForceBindIp
réellement peut passer des paramètres, voir ma réponse mise à jour.J'ai trouvé que HideMyAss! Le client VPN a une fonction Secure IP Bind qui permet de lier des applications à l'interface VPN:
Je l'ai regardé et il est basé sur une dll personnalisée LSP (Layered Service Provider) et une interface COM pour le contrôler. Et il peut être (ab) utilisé sans installer le client VPN de HideMyAss.
Installation de la liaison IP sécurisée de HideMyAss
bin
dossier dans le programme d'installation décompresséCopiez ces trois fichiers dans un dossier sur votre disque (
C:\HMA_Bind
)Mettez
Install.cmd
etUninstall.cmd
dans ce dossierInstall.cmd
Uninstall.cmd
Install.cmd
tant qu'administrateur . Pour vérifier que l'installation a réussi, vous pouvez utiliser les exécutions automatiques :Windows PowerShell ISE (x86)
ouWindows PowerShell (x86)
, car le composant COM est 32 bits.Tout d'abord, vous devez créer un nouvel objet Secure IP Bind:
Et puis vous pouvez appeler ses méthodes:
Désinstallation de la liaison IP sécurisée de HideMyAss
Uninstall.cmd
tant qu'administrateur , vérifiez que la désinstallation a réussi avec l'exécution automatique.Exemples:
Notez que vous ne devez créer un objet COM de liaison IP sécurisé qu'une seule fois par session PowerShell. Les exemples ci-dessous supposent que vous les exécutez dans une nouvelle session PowerShell, afin qu'ils créent toujours un nouvel objet COM.
Définissez l'IP à laquelle se lier, ajoutez
firefox
aux applications liées, activez la liaison.Activez globalement la liaison IP:
Désactivez globalement la liaison IP:
Supprimer l'application de la liste (arrêter la liaison pour cette application):
Remarques
Étant donné que Secure IP Bind est implémenté en tant que DLL LSP (Layered Service Provider) personnalisée , ces limitations s'appliquent:
J'ai testé cette méthode avec diverses applications avec des résultats mitigés: les applications 32 bits fonctionnent, mais pas 64 bits, c'est-à-dire que j'ai pu lier l'explorateur 64 bits (probablement parce que ses processus de tabulation sont 32 bits par défaut), mais pas le navigateur Waterfox 64 bits ou d'autres applications 64 bits.
la source
Je peux penser à deux solutions au problème:
Créez une machine virtuelle pour exécuter le jeu, qui utilise uniquement la seule carte réseau.
Si vous connaissez la plage d'adresses IP que le jeu utilise, créez une route réseau qui dirige cette plage vers la passerelle de l'adaptateur spécifique.
Je peux ajouter plus d'informations une fois que je connais vos préférences. Par exemple, au point 1, votre produit de machine virtuelle préféré.
la source
Supposons que vous ayez deux comptes d'utilisateurs Windows:
HomeUser
VpnUser
Lorsque vous vous connectez à un
VpnUser
compte, vous pouvez exécuter des applications (en particulier les jeux que vous avez mentionnés) en tant queHomeUser
(Maj + RMB sur un fichier exécutable -> Exécuter en tant qu'autre utilisateur) et ces applications exécutent leurs processus enfants en tant queHomeUser
. Les applications que vous exécuterez de manière standard (raccourcis, double-clic sur le fichier exécutable) seront la propriété deVpnUser
.Lorsque vous définissez des connexions réseau Windows, vous avez la possibilité d'autoriser d'autres utilisateurs à utiliser cette connexion. Supposons que vous ayez défini:
HomeNetwork
exclusivement pourHomeUser
VpnNetwork
exclusivement pourVpnUser
et pour simplifier:
Je suppose que les applications:
VpnUser
doit utiliser uniquementVpnNetwork
.HomeUser
doit utiliser uniquementHomeNetwork
.Si ma spéculation est vraie, alors lorsque vous vous connectez au
VpnUser
compte, les applications utiliserontVpnNetwork
, lorsque les applications exécutées àHomeUser
partir duVpnUser
compte devraient utiliserHomeNetwork
.la source
forcebindip.exe peut être utilisé mais vous devez coder une application d'assistance (pas d'autre option).
L'application charge XXX.ini qui contient ie
L'application s'exécute
C: \ path1 \ app_to_run.exe 192.168.10.21 C: \ path1 \ app_to_run.exe Saved_Command_line
L'application se termine
PROBLÈME: ForcebindIP ne transmet pas de paramètres au programme appelé. puis si vous devez passer des paramètres à app_to_run.exe, vous avez besoin d'une approche plus évoluée où XXX.exe crée un fichier de commandes comprenant app_to_run.exe et les paramètres transmis, ce lot est alors appelé à la place de app_to_run.exe au point 4.
Vous pouvez également jeter un oeil à certaines applications GUI encapsulant ForcebindIP. Certains d'entre eux sont capables de fonctionner avec plusieurs applications, mais ils ne font pas ce dont vous avez besoin.
https://www.raymond.cc/blog/bind-windows-application-to-specific-network-adapter-with-forcebindip/
la source