Оновлення
Я виявив, що насправді 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
дочірні процеси і не передає параметри викликаним виконуваним файлам . Але мені вдалося обійти це за допомогою параметрів виконання файлів зображень у реєстрі , пакетному скрипті та сторонній інжектор 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 на виконуваному файлі, який він запускає. Якщо так, то він просто попереджує шлях налагодження до імені виконавця, ефективно отримуючи виконуваний файл для запуску під налагоджувачем.
"Налагоджувач" в нашому випадку буде пакетним сценарієм, який встановить FORCEDIP
змінну і запустить інжекторний dll-інжектор. Injectory потім почнеться процес, передати аргументи командного рядка і впорснути BindIp.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\
Додайте значення String до цього ключа:
- Ім'я:
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
? Є чи або ех? Я граю з стороннім інжектором dll і, можливо, я можу вам допомогти, але мені потрібна додаткова інформація.LolClient.exe
x86
x64