Оновлення
Я виявив, що насправді 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.exex86x64