He intentado ForceBindIP, pero tiene una desventaja significativa: no afecta a los hijos de la aplicación que estoy tratando de vincular, solo afecta a la aplicación misma. Tampoco puede forzar a una aplicación a ejecutarse siempre a través de una interfaz específica, debe ejecutarse forcebindip.exe
siempre. Se convierte en un problema con aplicaciones como League of Legends donde el árbol de procesos se ve así:
El lanzador ejecuta el parche, el parche ejecuta el cliente, etc. Solo puedo afectar al padre de todos estos procesos en el árbol, por lo que el juego real no está vinculado a la interfaz que quiero, lo que hace que esta aventura no tenga sentido.
¿Existe una alternativa más moderna a ForceBindIP para Windows 7? Hay muchas preguntas similares a esta en este sitio, pero en su mayoría son antiguas. Tal vez ahora hay una mejor manera de resolver este problema?
Mi idea actual es hacer lo siguiente:
Configure el servidor local 3proxy vinculado a la interfaz deseada.
Ejecute el juego a través de Proxifier o un software similar configurado para ejecutarse a través de ese proxy local.
No estoy seguro de si eso funcionará, pero incluso si lo hace, parece una solución subóptima. ¿Ustedes tienen alguna idea mejor?
Editar: Mi idea no funcionó :(
Edición 2: Básicamente, lo que intento lograr es vincular algunas aplicaciones a una interfaz normal, mientras se ejecuta VPN. La razón es que necesito conectarme a través de VPN la mayor parte del tiempo, pero algunas aplicaciones (como los juegos) no funcionan correctamente de esta manera, debido a un mayor ping y otros problemas.
LolClient.exe
? EsLolClient.exe
unx86
ox64
exe? Estoy jugando con un inyector dll de terceros y tal vez pueda ayudarte, pero necesito más información.BindIp.dll
es de 32 bits, por lo que no funcionaría con procesos de 64 bits.Respuestas:
Actualizar
Descubrí que ForceBindIp de hecho está pasando parámetros a los ejecutables llamados. Simplemente omite el primer parámetro . Así que modifiqué mi script para usarlo en
ForceBindIp.exe
lugar del inyector personalizado y ahora parece que todos los problemas coninjectory
excepciones han desaparecido y todo funciona.Aquí hay pasos y
BindIp.cmd
guiones modificados :Instale ForceBindIp como de costumbre
Poner en
BindIp.cmd
cualquier lugar de su disco (por ejemploC:\BindIp\BindIp.cmd
)BindIp.cmd
guión:Luego siga los pasos 2-6 desde abajo.
Introducción
ForceBindIp no puede inyectar automáticamente
BindIp.dll
a procesos secundarios yno pasa parámetros a los ejecutables llamados. Pero pude evitar esto mediante el uso de las opciones de ejecución de archivos de imagen en el registro , secuencia de comandos por lotes e inyector dll de terceros . Los detalles están abajo.Teoría
Para usar
BindIp.dll
sinForceBindIp.exe
necesidad de averiguar cómo se comunican (ForceBindIp.exe
tiene que pasar la dirección IP para dll de alguna manera).Utilicé IDA gratis y descubrí que
ForceBindIp.exe
crea una variable de entorno con un nombreFORCEDIP
que contiene la direcciónBindIp.dll
IP y lee la dirección IP de esta variable cuando se inyecta y ejecuta en el proceso de destino.Para detectar el inicio de la aplicación de destino, podemos agregar una
Debugger
clave en las Opciones de ejecución de archivos de imagen en el registro para este ejecutable:El "depurador" en nuestro caso, será un script por lotes, que establecerá
FORCEDIP
variables y lanzará el inyector dll inyector. Inyector comenzará el proceso, pasará los argumentos de la línea de comandos e inyectaráBindIp.dll
.Práctica
Cree una carpeta en algún lugar (
C:\BindIp
por ejemplo) y ponga esos tres archivos en ella:BindIp.dll
BindIp.cmd
BindIp.cmd
guión:LolClient.exe
) para el ejecutable de destino enHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
Agregue valor de cadena a esta clave:
Debugger
C:\BindIp\BindIp.cmd
Otorgue
Users
permisos completos sobre esta clave (el script deberá modificarla en cada lanzamiento). Debe tener un aspecto como este:Establecer la dirección IP requerida en
BindIp.cmd
Repita los pasos 3 y 4 para cada archivo ejecutable que desea bind (
rad_user_kernel.exe
,LolLauncher.exe
,LolPatcher.exe
, etc.).Ahora, cada vez que inicie un ejecutable que tenga la entrada de registro correspondiente, el
BindIp.cmd
script se iniciará y vinculará este programa a la dirección IP deseada.Conclusión
Probé esto en mi computadora portátil con Windows 8.1 x64 y pude vincular con éxito varios programas ( AIMP 2 , BersIRC , Opera 12.4 ) a un adaptador Ethernet o WiFi utilizando esta técnica. Lamentablemente
BindIp.dll
es de 32 bits, por lo que no funcionaría con procesos de 64 bits.fuente
injectory
veces tiene problemas con la--args
opción. No estoy seguro de por qué.--args
ninguna aplicaciónForceBindIp
realidad puede pasar parámetros, vea mi respuesta actualizada.¡He encontrado que HideMyAss! El cliente VPN tiene la función Secure IP Bind que permite vincular aplicaciones a la interfaz VPN:
Lo he mirado y se basa en un dll de proveedor de servicios por capas (LSP) personalizado y una interfaz COM para controlarlo. Y se puede (ab) usar sin instalar el cliente VPN de HideMyAss.
Instalación de HideMyAss 'Secure IP Bind
bin
carpeta en el instalador desempaquetadoCopie esos tres archivos a una carpeta en su disco (
C:\HMA_Bind
)Poner
Install.cmd
yUninstall.cmd
a esta carpetaInstall.cmd
Desinstalar.cmd
Install.cmd
como administrador . Para verificar que la instalación se realizó correctamente, puede usar Autoruns :Windows PowerShell ISE (x86)
oWindows PowerShell (x86)
, porque el componente COM es de 32 bits.Primero, debe crear un nuevo objeto Secure IP Bind:
Y luego puedes llamar a sus métodos:
Desinstalar el enlace seguro de IP de HideMyAss
Uninstall.cmd
como administrador , verifique que la desinstalación se haya realizado correctamente con AutorunsEjemplos:
Tenga en cuenta que debe crear un objeto COM seguro de enlace IP solo una vez por sesión de PowerShell. Los ejemplos a continuación suponen que los ejecuta en una nueva sesión de PowerShell, por lo que siempre crean un nuevo objeto COM.
Configure la IP para enlazar, agregar
firefox
a aplicaciones enlazadas, habilitar el enlace.Habilitar globalmente el enlace de IP:
Desactivar globalmente el enlace de IP:
Eliminar la aplicación de la lista (detener el enlace para esta aplicación):
Notas
Debido a que Secure IP Bind se implementó como un proveedor de servicios de capas personalizado (LSP) dll, se aplican esas limitaciones:
He probado este método con varias aplicaciones con resultados mixtos: las aplicaciones de 32 bits funcionan, pero no de 64 bits, es decir, pude vincular el Explorador de 64 bits (probablemente porque sus procesos de pestañas son de 32 bits por defecto), pero no el navegador Waterfox de 64 bits u otras aplicaciones de 64 bits.
fuente
Se me ocurren dos soluciones al problema:
Cree una máquina virtual para ejecutar el juego, que solo usa un adaptador de red.
Si conoce el rango de direcciones IP que usa el juego, construya una ruta de red que dirija este rango hacia la puerta de enlace del adaptador específico.
Puedo agregar más información una vez que conozca sus preferencias. Por ejemplo, en el punto 1, su producto de máquina virtual preferido.
fuente
Supongamos que tiene dos cuentas de usuario de Windows:
HomeUser
VpnUser
Cuando inicia sesión en la
VpnUser
cuenta, puede ejecutar aplicaciones (particularmente juegos que mencionó) comoHomeUser
(Shift + RMB en el archivo ejecutable -> Ejecutar como otro usuario) y esta aplicación ejecuta sus procesos secundarios comoHomeUser
. Las aplicaciones que ejecutará de forma estándar (accesos directos, doble clic en el archivo ejecutable) serán propiedad deVpnUser
.Al definir las conexiones de red de Windows, tiene una opción para permitir que otros usuarios usen esta conexión. Asumamos que definiste:
HomeNetwork
exclusivamente paraHomeUser
VpnNetwork
exclusivamente paraVpnUser
y para simplificar:
Yo supongo que las aplicaciones:
VpnUser
debe usar soloVpnNetwork
.HomeUser
debe usar soloHomeNetwork
.Si mi especulación es cierta, entonces cuando inicie sesión en la
VpnUser
cuenta, las aplicaciones usaránVpnNetwork
, cuando las aplicaciones ejecutadasHomeUser
desde laVpnUser
cuenta deberían usarHomeNetwork
.fuente
Se puede usar forcebindip.exe pero debe codificar una aplicación auxiliar (ninguna otra opción).
La aplicación carga XXX.ini que contiene ie
La aplicación se ejecuta
C: \ path1 \ app_to_run.exe 192.168.10.21 C: \ path1 \ app_to_run.exe Saved_Command_line
La aplicación finaliza.
PROBLEMA: ForcebindIP no pasa parámetros al programa llamado. luego, si necesita pasar parámetros a app_to_run.exe, necesita un enfoque más evolucionado donde XXX.exe crea un archivo por lotes que incluye app_to_run.exe y los parámetros pasados, este lote se llama en lugar de app_to_run.exe en el punto 4.
También puede echar un vistazo a algunas aplicaciones GUI que envuelven ForcebindIP. Algunos de ellos pueden trabajar con más de una aplicación, pero no hacen lo que necesita.
https://www.raymond.cc/blog/bind-windows-application-to-specific-network-adapter-with-forcebindip/
fuente