ผูกแอปพลิเคชันกับอินเทอร์เฟซเครือข่ายเฉพาะ


17

ฉันลองใช้ ForceBindIP แต่มีข้อเสียที่สำคัญ - มันไม่ส่งผลกระทบต่อลูก ๆ ของแอปพลิเคชันที่ฉันพยายามจะผูกมันมีผลกับแอพพลิเคชั่นเท่านั้น นอกจากนี้ยังไม่สามารถบังคับให้แอปพลิเคชันทำงานผ่านอินเทอร์เฟซที่ระบุได้ตลอดforcebindip.exeเวลา แต่จะต้องเรียกใช้ผ่านทุกครั้ง มันกลายเป็นปัญหากับแอ็พพลิเคชันเช่น League of Legends ที่แผนผังกระบวนการดูเหมือนว่า:

ภาพหน้าจอ

ตัวเรียกใช้ตัวเรียกใช้ตัวแก้ไขตัวเรียกใช้ตัวเรียกใช้ไคลเอนต์ ฯลฯ ฉันสามารถส่งผลกระทบกับพาเรนต์ของกระบวนการทั้งหมดเหล่านี้ในทรีดังนั้นเกมจริงไม่ได้ผูกกับอินเทอร์เฟซที่ฉันต้องการ

มีทางเลือกที่ทันสมัยกว่าสำหรับ ForceBindIP สำหรับ Windows 7 หรือไม่? มีคำถามมากมายที่คล้ายกับคำถามนี้ในเว็บไซต์นี้ แต่ส่วนใหญ่จะเก่า อาจมีวิธีที่ดีกว่าในการแก้ปัญหานี้หรือไม่

แนวคิดปัจจุบันของฉันคือการทำสิ่งต่อไปนี้:

  1. ตั้งค่าเซิร์ฟเวอร์ 3proxy ในเครื่องผูกพันกับอินเตอร์เฟสที่ต้องการ

  2. เรียกใช้เกมผ่าน Proxifier หรือซอฟต์แวร์ที่คล้ายกันที่กำหนดค่าให้ทำงานผ่านพร็อกซีในเครื่องนั้น

ฉันไม่แน่ใจว่าจะใช้การได้หรือไม่แม้ว่าจะเป็นเช่นนั้นดูเหมือนว่าเป็นวิธีแก้ปัญหาที่ดีที่สุด พวกคุณมีความคิดที่ดีกว่านี้ไหม?

แก้ไข: ความคิดของฉันไม่ทำงาน :(

แก้ไข 2: โดยทั่วไปสิ่งที่ฉันพยายามจะทำคือผูกแอพพลิเคชั่นบางตัวเข้ากับอินเตอร์เฟสปกติในขณะที่ VPN กำลังทำงานอยู่ เหตุผลก็คือฉันต้องเชื่อมต่อผ่าน VPN เป็นส่วนใหญ่ แต่แอปพลิเคชั่นบางตัว (เช่นเกม) ไม่ทำงานอย่างถูกต้องเนื่องจากมี ping สูงกว่าและปัญหาอื่น ๆ


คุณต้องการผูก IP ทุกกระบวนการในทรีหรืออย่างเดียวLolClient.exeหรือไม่? คือ หรือexe? ฉันกำลังเล่นกับหัวฉีด dll ของบุคคลที่สามและบางทีฉันสามารถช่วยคุณได้ แต่ฉันต้องการข้อมูลเพิ่มเติม LolClient.exex86x64
beatcracker

คุณกำลังพยายามผูกกระบวนการกับอินเทอร์เฟซ VPN หรืออินเทอร์เฟซปกติหรือไม่
MariusMatutiae

มีเป้าหมายเฉพาะเจาะจงที่คุณพยายามจะทำหรือไม่? โดยค่าเริ่มต้นเกมไม่จำเป็นต้องมีการเชื่อมต่อเข้ามาทำงานอย่างถูกต้อง คุณพยายามที่จะโกงหรือบันทึก / เล่นเกม?
Mario

ฉันกำลังมองหาคำตอบสำหรับคำถามพื้นฐานนี้ แต่สำหรับโฮสต์ OSX กรณีการใช้งานของฉันคือฉันมี LAN และ WiFi พร้อมกัน LAN อยู่ในเครือข่ายขององค์กรที่ จำกัด , Wi-Fi บน WAP ของฉัน บางครั้งฉันต้องการเบราว์เซอร์หรือแอปพลิเคชันที่จะใช้เฉพาะ Wi-Fi เพื่อให้ฉันสามารถไฟล์ d / l ถูกบล็อกโดยไฟร์วอลล์ของเรา
SaxDaddy

1
@VictorMarchuk ใช่BindIp.dllเป็น 32 บิตดังนั้นจึงไม่สามารถทำงานกับกระบวนการ 64 บิตได้
beatcracker

คำตอบ:


10

ปรับปรุง

ฉันพบว่า ForceBindIp อันที่จริงกำลังส่งพารามิเตอร์ไปยังไฟล์เรียกทำงาน มันก็ละเว้นพารามิเตอร์แรก ดังนั้นฉันจึงปรับเปลี่ยนสคริปต์ของฉันเพื่อใช้ForceBindIp.exeแทนตัวกำหนดเองและตอนนี้ดูเหมือนว่าปัญหาทั้งหมดที่มีinjectoryข้อยกเว้นหายไปและทุกอย่างทำงานได้

นี่คือขั้นตอนและBindIp.cmdสคริปต์ที่ถูกแก้ไข:

  1. ติดตั้ง ForceBindIp ตามปกติ

  2. วางBindIp.cmdที่ใดก็ได้ในไดรฟ์ของคุณ (เช่นC:\BindIp\BindIp.cmd)

BindIp.cmd สคริปต์:

setlocal

:: IP to bind to
set IP=192.168.128.85

:: Common variables
set RegIFEO=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%~nx1
set Injector=ForceBindIp.exe

:: ForceBindIp swallows first parameter passed to target exe,
:: so we inject dummy parameter just before it
set AllParams=%*
set FirstParam=%1
call set TargetParams=%%AllParams:*%FirstParam%=%FirstParam% Dummy%%

:: Delete debugger for the target exe in registry,
:: or we'll end in an endless loop of the batch files
reg delete "%RegIFEO%%" /v Debugger /f

:: Start target exe via ForceBindIp
%Injector% %IP% %TargetParams%

:: Restore this script as debugger for the target exe in registry
reg add "%RegIFEO%" /v Debugger /t REG_SZ /d "%~dpnx0" /f

:: Debug, uncomment if needed
rem pause

endlocal

จากนั้นทำตามขั้นตอนที่ 2-6 จากด้านล่าง


บทนำ

ForceBindIpไม่สามารถฉีดโดยอัตโนมัติBindIp.dllเพื่อกระบวนการที่เด็กและไม่ผ่านพารามิเตอร์เพื่อ executables แต่ผมก็สามารถที่จะหลีกเลี่ยงการนี้โดยใช้ตัวเลือกการดำเนินการไฟล์ภาพในรีจิสทรีสคริปต์ชุดและบุคคลที่สาม dll หัวฉีด รายละเอียดอยู่ด้านล่าง

ทฤษฎี

หากต้องการใช้BindIp.dllโดยไม่ForceBindIp.exeต้องค้นหาวิธีสื่อสาร ( ForceBindIp.exeต้องผ่านที่อยู่ IP เพื่อ dll อย่างใด)

ฉันใช้IDA ฟรีและพบว่าForceBindIp.exeสร้างตัวแปรสภาพแวดล้อมด้วยชื่อFORCEDIPที่เก็บที่อยู่ IP และBindIp.dllอ่านที่อยู่ IP จากตัวแปรนี้เมื่อมันถูกฉีดและดำเนินการในกระบวนการเป้าหมาย

ในการตรวจสอบการเปิดตัวแอปพลิเคชันเป้าหมายเราสามารถเพิ่มDebuggerคีย์ในตัวเลือกการดำเนินการไฟล์ภาพในรีจิสตรีสำหรับไฟล์สั่งการนี้:

Kernel32! CreateProcess เมื่อเรียกใช้โดยไม่มีการสร้างค่าสถานะ DEBUG_PROCESS หรือ DEBUG_ONLY_THIS_PROCESS ตรวจสอบรีจิสทรีเพื่อดูว่ามีการตั้งค่า IFEO ในปฏิบัติการที่เปิดใช้งานหรือไม่ ถ้าใช่มันเพียงแค่เสริมเส้นทางของ debugger ให้กับชื่อ executable ทำให้การเรียกใช้ executable นั้นเริ่มต้นได้อย่างมีประสิทธิภาพภายใต้ debugger

"ดีบักเกอร์" ในกรณีของเราจะเป็นชุดสคริปต์ที่จะตั้งค่าFORCEDIPตัวแปรและเปิดตัวหัวฉีด dll-injector InjectoryBindIp.dllแล้วจะเริ่มต้นกระบวนการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งและฉีด

การปฏิบัติ

  1. สร้างโฟลเดอร์ที่ไหนสักแห่ง ( C:\BindIpตัวอย่าง) และวางไฟล์ทั้งสามไว้ในนั้น

BindIp.cmd สคริปต์:

setlocal

:: IP to bind to. This env.var is used by BindIp.dll
set FORCEDIP=192.168.1.23

:: Common variables
set RegIFEO=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%~nx1
set Injector=%~dp0injectory.x86.exe
set BindIpDll=%~dp0BindIp.dll

:: Extract target's parameters, if any
set AllParams=%*
set FirstParam=%1
call set TargetParams=%%AllParams:*%FirstParam% =%%

:: Delete debugger for the target exe in registry,
:: or we'll end in an endless loop of the batch files
reg delete "%RegIFEO%%" /v Debugger /f

:: Start target exe and inject BindIp.dll
if not [%2] == [] (
    :: If there were parameters for target exe, pass them on
    "%Injector%" --launch %1 --inject "%BindIpDll%" --args "%TargetParams%"
) else (
    :: No parameters were specified
    "%Injector%" --launch %1 --inject "%BindIpDll%"
)

:: Restore this script as debugger for the target exe in registry
reg add "%RegIFEO%" /v Debugger /t REG_SZ /d "%~dpnx0" /f

:: Debug, uncomment if needed
rem pause

endlocal
  1. สร้างรีจิสตรีคีย์ (เช่นLolClient.exe) สำหรับเป้าหมายที่เรียกใช้งานได้HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
  2. เพิ่มค่าสตริงให้กับคีย์นี้:

    • ชื่อ: Debugger
    • ราคา: C:\BindIp\BindIp.cmd
  3. ให้สิทธิ์อย่างUsersเต็มที่กับคีย์นี้ (สคริปต์จะต้องแก้ไขทุกครั้งที่เปิดตัว) ควรมีลักษณะเช่นนี้:IFEO รีจิสตรีคีย์

  4. ตั้งค่าที่อยู่ IP ที่ต้องการใน BindIp.cmd

  5. ทำซ้ำขั้นตอนที่ 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.dll32- บิตดังนั้นมันจะไม่ทำงานกับกระบวนการ 64- ​​บิต


ขอบคุณมากสำหรับคำอธิบายอย่างละเอียด! น่าเสียดายที่ฉันได้รับข้อยกเว้นบางประการจากการฉีด: github.com/blole/injectory/issues/4
Victor Marchuk

@VictorMarchuk ฉันทำการทดสอบเพิ่มเติมและinjectoryบางครั้งก็มีปัญหากับ--argsตัวเลือก ไม่แน่ใจว่าทำไม
beatcracker

ฉันไม่สามารถเรียกใช้งานได้แม้ว่าจะไม่มี--argsแอปพลิเคชันใด ๆ
Victor Marchuk

@VictorMarchuk คุณมีตัวอย่างหรือไม่ ฉันเพิ่งทดสอบกับ Opera 12.14 และ command-line - มันใช้ได้ดี
beatcracker

@VictorMarchuk ดูเหมือนว่าForceBindIpจริง ๆ แล้วสามารถผ่านพารามิเตอร์ดูคำตอบที่ปรับปรุงของฉัน
beatcracker

4

ฉันพบว่าHideMyAss! ไคลเอนต์ VPN มีคุณสมบัติSecure IP Bindที่อนุญาตให้เชื่อมโยงแอปพลิเคชันกับอินเตอร์เฟส VPN:

Secure IP Bind ช่วยให้คุณสามารถบังคับให้แอปพลิเคชั่นที่เลือกในคอมพิวเตอร์ของคุณทำงานได้เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ VPN ของเราเท่านั้น สิ่งนี้ทำให้มั่นใจได้ว่าแอพพลิเคชั่นที่เลือกจะทำงานเฉพาะกับการเชื่อมต่อที่ปลอดภัย หากคุณเปิดแอปพลิเคชั่นที่เลือกโดยไม่ต้องเชื่อมต่อกับ VPN ของเราแอปพลิเคชันเหล่านี้จะไม่สามารถเข้าถึงอินเทอร์เน็ตได้

ฉันได้ดูแล้วมันขึ้นอยู่กับLayered Service Provider (LSP) dll และส่วนต่อประสาน COM แบบกำหนดเองเพื่อควบคุม และสามารถใช้ (ab) โดยไม่ต้องติดตั้งไคลเอนต์ VPN ของ HideMyAss

การติดตั้ง Secure IP Bind ของ HideMyAss

  1. รับตัวติดตั้ง Windows ล่าสุด: https://www.hidemyass.com/downloads
  2. แกะมันด้วย 7-zip ละเว้นคำเตือนเกี่ยวกับไฟล์ที่มีชื่อเดียวกันคุณสามารถเขียนทับไฟล์เหล่านั้นได้อย่างปลอดภัย
  3. ไปที่binโฟลเดอร์ในตัวติดตั้งที่คลายการแพค
  4. คัดลอกทั้งสามไฟล์ไปยังโฟลเดอร์บนดิสก์ของคุณ ( C:\HMA_Bind)

    • ForceInterfaceCOM.dll
    • ForceInterfaceLSP.dll
    • InstallLSP.exe
  5. ใส่Install.cmdและUninstall.cmdไปที่โฟลเดอร์นี้

Install.cmd

%~dp0InstallLSP.exe -i -a -n "HMA_LSP" -d %~dp0ForceInterfaceLSP.dll
regsvr32 /s %~dp0ForceInterfaceCOM.dll

Uninstall.cmd

%~dp0InstallLSP.exe -f
regsvr32 /u /s %~dp0ForceInterfaceCOM.dll
  1. เรียกใช้ในฐานะผู้ดูแลInstall.cmd เพื่อตรวจสอบว่าการติดตั้งประสบความสำเร็จคุณสามารถใช้Autoruns :

ผู้ให้บริการ Winsock ใน AUtoruns

  1. ในการควบคุม Secure IP Bind คุณจะต้องเรียกใช้วิธีการเชื่อมต่อ COM สามารถทำได้ใน PowerShell หากคุณใช้ระบบปฏิบัติการ x64 อย่าลืมเปิดตัวWindows PowerShell ISE (x86)หรือWindows PowerShell (x86)เนื่องจากส่วนประกอบ COM นั้นเป็นแบบ 32 บิต

ก่อนอื่นคุณต้องสร้างวัตถุ Secure IP Bind ใหม่:

# Create new Secure IP Bind COM object
$HmaFbi = New-Object -ComObject ForceInterfaceCOM.ForceInterface -ErrorAction Stop

และจากนั้นคุณสามารถเรียกมันว่าวิธีการ:

# Add bound application
# Not sure what second boolean argument does
$HmaFbi.AddApplicationHandled('firefox.exe', $true)

# Delete bound application
$HmaFbi.RemoveApplicationHandled('firefox.exe')

# Save applications to registry (applies bindings)
# Setting are saved to: HKEY_CURRENT_USER\Software\ForceInterfaceCOM
$HmaFbi.SaveToRegistry()

# List all bound applications
0..($HmaFbi.GetApplicationHandledCount() - 1) | ForEach-Object {$HmaFbi.GetApplicationName($_)}

# Set IP to bind to
$HmaFbi.SetInterfaceIP('192.168.1.23')

# Get stored IP
$HmaFbi.GetInterfaceIP()

# Enable binding
$HmaFbi.SetEnabled($true)

# Disable binding
$HmaFbi.SetEnabled($false)

# Show binding status
$HmaFbi.GetEnabled()

ถอนการติดตั้ง HideMyAss 'Secure IP Bind

  1. เรียกใช้Uninstall.cmd ในฐานะผู้ดูแลระบบตรวจสอบว่าการถอนการติดตั้งนั้นทำได้โดยอัตโนมัติ

ตัวอย่าง:

โปรดทราบว่าคุณต้องสร้างวัตถุ IP Bind COM ที่ปลอดภัยเพียงครั้งเดียวต่อเซสชัน PowerShell ตัวอย่างด้านล่างสมมติว่าคุณดำเนินการในเซสชัน PowerShell ใหม่ดังนั้นพวกเขาจึงสร้างวัตถุ COM ใหม่เสมอ

  • ตั้งค่า IP เป็น bind to, เพิ่มfirefoxไปยังแอพพลิเคชั่นที่ถูกผูก, เปิดใช้งานการเชื่อม

    # Create new Secure IP Bind COM object
    $HmaFbi = New-Object -ComObject ForceInterfaceCOM.ForceInterface -ErrorAction Stop
    
    # Set IP to bind to
    $HmaFbi.SetInterfaceIP('192.168.1.23')
    
    # Add bound application
    # Not sure what second boolean argument does
    $HmaFbi.AddApplicationHandled('firefox.exe', $true)
    
    # Save applications to registry (applies bindings)
    # Setting are saved to: HKEY_CURRENT_USER\Software\ForceInterfaceCOM
    $HmaFbi.SaveToRegistry()
    
    # Enable binding
    $HmaFbi.SetEnabled($true)
    
  • เปิดใช้งานการเชื่อม IP ทั่วโลก:

    # Create new Secure IP Bind COM object
    $HmaFbi = New-Object -ComObject ForceInterfaceCOM.ForceInterface -ErrorAction Stop
    
    # Enable binding
    $HmaFbi.SetEnabled($true)
    
  • ปิดใช้งานการเชื่อม IP ทั่วโลก:

    # Create new Secure IP Bind COM object
    $HmaFbi = New-Object -ComObject ForceInterfaceCOM.ForceInterface -ErrorAction Stop
    
    # Disable binding
    $HmaFbi.SetEnabled($false)
    
  • ลบแอปพลิเคชันออกจากรายการ (หยุดการรวมสำหรับแอปพลิเคชันนี้):

    # Create new Secure IP Bind COM object
    $HmaFbi = New-Object -ComObject ForceInterfaceCOM.ForceInterface -ErrorAction Stop
    
    # Delete bound application
    $HmaFbi.RemoveApplicationHandled('firefox.exe')
    
    # Save applications to registry (applies bindings)
    # Setting are saved to: HKEY_CURRENT_USER\Software\ForceInterfaceCOM
    $HmaFbi.SaveToRegistry()
    

หมายเหตุ

เนื่องจาก Secure IP Bind ถูกนำมาใช้เป็นdll Layered Service Provider (LSP) ที่กำหนดเองจึงมีข้อ จำกัด เหล่านี้:

LSP ได้ถูกคัดค้านเนื่องจาก Windows Server 2012 ระบบที่มี LSP จะไม่ผ่านการตรวจสอบโลโก้ Windows แอพ "metro" ในสไตล์ Windows 8 ที่ใช้เครือข่ายจะข้าม LSP ทั้งหมดโดยอัตโนมัติ

ฉันได้ทดสอบวิธีการนี้กับแอปพลิเคชันต่าง ๆ ที่มีผลลัพธ์แบบผสม: แอปพลิเคชัน 32 บิตทำงานได้ แต่ไม่ได้ 64 บิตนั่นคือฉันสามารถผูก Explorer 64 บิตได้ (อาจเป็นเพราะกระบวนการแท็บนั้นเป็นค่าเริ่มต้น 32 บิต) แต่ ไม่ใช่เบราว์เซอร์Waterfox 64 บิตหรือแอปพลิเคชัน 64 บิตอื่น ๆ


3

ฉันสามารถคิดถึงวิธีแก้ไขปัญหาสองวิธี:

  1. สร้างเครื่องเสมือนสำหรับใช้งานเกมซึ่งใช้เพียงอะแดปเตอร์เครือข่ายเดียวเท่านั้น

  2. หากคุณทราบช่วงของที่อยู่ IP ที่เกมใช้ให้สร้างเส้นทางเครือข่ายที่นำช่วงนี้ไปยังเกตเวย์ของอแด็ปเตอร์เฉพาะ

ฉันสามารถเพิ่มข้อมูลเพิ่มเติมเมื่อฉันรู้ว่าคุณชอบ ตัวอย่างเช่นในจุดที่ 1 ผลิตภัณฑ์เครื่องเสมือนที่คุณต้องการ


1
การใช้ VM จะสร้างปัญหาเพิ่มเติมมากมายเช่นประสิทธิภาพที่ลดลงและการใช้งาน RAM อย่างต่อเนื่องไม่กี่ GB มันเป็นทางเลือกสุดท้ายของฉันฉันชอบที่จะบรรลุมันในทางอื่น ฉันไม่รู้ช่วงที่แน่นอนของ IP ที่ฉันจะต้องผูกเพราะฉันต้องการมันสำหรับแอพพลิเคชั่นทุกประเภทรวมถึงซอฟต์แวร์การแบ่งปัน p2p (torrents) อาจมีไฟร์วอลล์ที่ให้คุณสร้างเส้นทางตามการเชื่อมต่อที่แต่ละแอปพลิเคชันกำหนด
Victor Marchuk

ประสิทธิภาพการทำงาน: VM จะไม่ทำให้ประสิทธิภาพลดลงหากไม่ได้ใช้ Virtual PC เครื่องเก่า หน่วยความจำ: VMware และ VirtualBox ไม่ได้จัดสรรหน่วยความจำทั้งหมดในทันทีดังนั้นจึงมีการจัดสรรหน่วยความจำที่ VM ต้องการเท่านั้น พวกเขายังมีข้อได้เปรียบเพิ่มเติมสำหรับเกมที่สามารถระงับและเล่น VM / เกมในเวลาต่อมาซึ่งดีกว่าความสามารถในการบันทึกของเกมส่วนใหญ่ สำหรับช่วง IP: หากคุณมีหลายช่วงเวลาดังกล่าวไม่สามารถใช้งานได้จริงและไม่ได้เป็นพร็อกซี
harrymc

1
@harrymc ฉันสงสัยว่าใครจะได้รับประสิทธิภาพ 3D ที่ยอดเยี่ยมจาก VM โดยใช้ GPU จำลอง และการเข้าถึงการ์ดกราฟิกโดยตรงนั้นเป็นการยากที่จะติดตั้งและต้องใช้ CPU ที่ใช้งานได้กับ VT-D (Intel) หรือ AMD-Vi
beatcracker

ซีพียูดังกล่าวเป็นเรื่องปกติมากขึ้นกว่าที่คุณคิด: รายการของ IOMMU สนับสนุนฮาร์ดแวร์แต่ผ่านวิดีโออาจต้องใช้สอง GPUs อย่างไรก็ตามยกเว้นว่าข้อกำหนดด้านประสิทธิภาพนั้นมีขนาดใหญ่มากในปัจจุบัน VM ก็ให้ประสิทธิภาพของวิดีโอที่ดี การใช้ VM เป็นวิธีแก้ปัญหาสำหรับเกมแอ็คชั่นที่มีปัญหาในการยอมรับ GPU ขั้นสูงของฉันโดยไม่เกิดความล่าช้าอย่างเห็นได้ชัด ผลิตภัณฑ์ VM ส่วนใหญ่อนุญาตให้ควบคุมการ์ดจำลองเช่นจำนวนหน่วยความจำวิดีโอ
harrymc

2
คำตอบคือใช่และบางคนมีการจัดการที่ นี่คือข้อมูลอ้างอิงเดียว: การตั้งค่า Windows VM ด้วย GPU passthroughแต่สามารถพบได้มากขึ้น
harrymc

3

สมมติว่าคุณมีบัญชีผู้ใช้ Windows สองบัญชี:

  • HomeUser
  • VpnUser

เมื่อคุณเข้าสู่ระบบVpnUserบัญชีที่คุณสามารถเรียกใช้โปรแกรม (โดยเฉพาะเกมที่คุณกล่าวถึง) เช่นHomeUser(Shift + หยวนในแฟ้มที่ปฏิบัติการ -> Run เป็นผู้ใช้อื่น ๆ ) HomeUserและการใช้งานนี้ทำงานกระบวนการที่เด็กของพวกเขาเป็น การประยุกต์ใช้งานที่คุณจะทำงานในวิธีการมาตรฐาน (ทางลัดดับเบิลคลิกที่ไฟล์ปฏิบัติการ) VpnUserจะเป็นเจ้าของโดย

เมื่อคุณกำหนดการเชื่อมต่อเครือข่าย Windows คุณมีตัวเลือกให้ผู้ใช้รายอื่นใช้การเชื่อมต่อนี้ สมมติว่าคุณกำหนด:

  • HomeNetwork เฉพาะสำหรับ HomeUser
  • VpnNetwork เฉพาะสำหรับ VpnUser

และสำหรับการทำให้เข้าใจง่าย:

  • ไม่มีการเชื่อมต่อเครือข่ายอื่น ๆ ในคอมพิวเตอร์ของคุณ

ขณะนี้ฉันมีเครื่อง Windows เครื่องเดียวซึ่งฉันไม่สามารถเลอะเทอะมากและฉันไม่เคยตรวจสอบการตั้งค่าที่อธิบายไว้ดังนั้นฉันไม่แน่ใจว่าคำสั่งด้านล่างเป็นจริงหรือไม่

ฉันเดาว่าอาจถูก จำกัด ให้ใช้ไคลเอนต์ VPN ใน Windows - ไคลเอนต์ VPN ของบุคคลที่สามใด ๆ จำเป็นต้องมีการตรวจสอบเพิ่มเติม

ฉันเดาว่าแอปพลิเคชั่น:

  • เจ้าของควรใช้เท่านั้นVpnUserVpnNetwork
  • เจ้าของควรใช้เท่านั้นHomeUserHomeNetwork

ถ้าฉันเก็งกำไรเป็นจริงแล้วเมื่อคุณเข้าสู่VpnUserการใช้งานบัญชีจะใช้VpnNetworkเมื่อการประยุกต์ใช้เป็นHomeUserจากบัญชีควรใช้VpnUserHomeNetwork


ฉันไม่แน่ใจว่าคุณหมายถึงอะไร คุณกำลังแนะนำให้ฉันใช้บัญชีผู้ใช้ Windows อื่นหรือไม่? วิธีนั้นจะช่วยผูกแอปพลิเคชันเฉพาะได้อย่างไร ดูเหมือนว่าโซลูชันของคุณจะอนุญาตให้เปิด / ปิดการใช้งาน VPN สำหรับแอพทั้งหมดเท่านั้น แต่ฉันสามารถทำได้โดยการเชื่อมต่อกับ VPN และยกเลิกการเชื่อมต่อจากนั้น
Victor Marchuk

2
@VictorMarchuk ฉันได้แก้ไขคำตอบของฉันแล้ว - ฉันหวังว่ามันชัดเจนกว่าตอนนี้ ...
g2mk

0

forcebindip.exe สามารถใช้ได้ แต่คุณต้องโค้ดแอปพลิเคชันตัวช่วย (ไม่มีตัวเลือกอื่น)

  1. แอปพลิเคชันบันทึกพารามิเตอร์ที่ได้รับจากบรรทัดคำสั่ง
  2. แอปพลิเคชันรับชื่อเช่น XXXX.EXE
  3. แอปพลิเคชั่นโหลด XXX.ini ที่มี ie

    app_to_run = C:\path1\app_to_run.exe
    ForceBindIP = C:\path2\ForceBindIP.exe 
    IP          = 192.168.10.21
    
  4. แอปพลิเคชันทำงาน

    C: \ path1 \ app_to_run.exe 192.168.10.21 C: \ path1 \ app_to_run.exe Saved_Command_line

  5. แอปพลิเคชันจะสิ้นสุดลง

ปัญหา: ForcebindIP ไม่ผ่านพารามิเตอร์ไปยังโปรแกรมที่เรียกว่า ถ้าคุณต้องการส่งพารามิเตอร์ไปที่ app_to_run.exe คุณต้องมีวิธีการพัฒนาที่ XXX.exe สร้างไฟล์แบตช์รวมถึง app_to_run.exe และพารามิเตอร์ที่ผ่านไปแบทช์นี้จะถูกเรียกใช้แทน app_to_run.exe ณ จุดที่ 4

นอกจากนี้คุณยังสามารถดูที่แอพ GUI บางรายการที่บังคับ ForcebindIP บางคนสามารถทำงานกับแอปได้มากกว่าหนึ่งแอป แต่ไม่ได้ทำตามที่คุณต้องการ

https://www.raymond.cc/blog/bind-windows-application-to-specific-network-adapter-with-forcebindip/


คุณหมายถึงว่าแอปพลิเคชันตัวช่วยจะขัดขวางความพยายามในการสร้างกระบวนการลูกและเรียกใช้ผ่าน ForceBindIP แทนหรือไม่ ถ้าเป็นเช่นนั้นคุณมีข้อเสนอแนะเกี่ยวกับวิธีการนี้หรือไม่?
Victor Marchuk

คุณพูดถูก แอปพลิเคชันตัวช่วยจะมีชื่อของ exe ทุกตัวและมันจะสิ้นสุดการเรียก exe ต้นฉบับที่สอดคล้องกันผ่าน ForceBind แน่นอนว่าคุณต้องเปลี่ยนชื่อเกมหรือไดเรกทอรีเกมเพื่อหลีกเลี่ยง 2 exes ด้วยชื่อเดียวกันภายใต้ไดเรกทอรีเดียวกัน แอพตัวช่วยนี้สามารถเขียนโค้ดได้อย่างง่ายดายเช่นใน C
Pat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.