ปรับปรุง
ฉันพบว่า ForceBindIp อันที่จริงกำลังส่งพารามิเตอร์ไปยังไฟล์เรียกทำงาน มันก็ละเว้นพารามิเตอร์แรก ดังนั้นฉันจึงปรับเปลี่ยนสคริปต์ของฉันเพื่อใช้ForceBindIp.exe
แทนตัวกำหนดเองและตอนนี้ดูเหมือนว่าปัญหาทั้งหมดที่มีinjectory
ข้อยกเว้นหายไปและทุกอย่างทำงานได้
นี่คือขั้นตอนและBindIp.cmd
สคริปต์ที่ถูกแก้ไข:
ติดตั้ง ForceBindIp ตามปกติ
วาง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
แล้วจะเริ่มต้นกระบวนการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งและฉีด
การปฏิบัติ
สร้างโฟลเดอร์ที่ไหนสักแห่ง ( 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
- สร้างรีจิสตรีคีย์ (เช่น
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- บิต
LolClient.exe
หรือไม่? คือ หรือexe? ฉันกำลังเล่นกับหัวฉีด dll ของบุคคลที่สามและบางทีฉันสามารถช่วยคุณได้ แต่ฉันต้องการข้อมูลเพิ่มเติมLolClient.exe
x86
x64