최신 정보
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를 무료로 사용 했으며 IP 주소를 보유하고 대상 프로세스에서 주입하고 실행할 때이 변수에서 IP 주소를 읽는 ForceBindIp.exe
이름으로 환경 변수 를 만드는 것을 발견했습니다 .FORCEDIP
BindIp.dll
대상 응용 프로그램 시작을 감지 Debugger
하기 위해이 실행 파일에 대한 레지스트리의 이미지 파일 실행 옵션에 키를 추가 할 수 있습니다 .
DEBUG_PROCESS 또는 DEBUG_ONLY_THIS_PROCESS 작성 플래그없이 호출 된 Kernel32! CreateProcess는 레지스트리가 실행중인 실행 파일에 IFEO가 설정되어 있는지 확인합니다. 그렇다면 디버거 경로를 실행 파일 이름 앞에 추가하여 효과적으로 디버거에서 실행 파일을 시작하십시오.
우리의 경우 "디버거"는 배치 스크립트이며 FORCEDIP
변수 를 설정 하고 인젝 토리 dll- 인젝터를 시작합니다 . 그런 다음 Injectory 는 프로세스를 시작하고 명령 줄 인수를 전달하고 inject 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\
이 키에 문자열 값을 추가하십시오.
- 이름:
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 )을 이더넷 또는 WiFi 어댑터 에 성공적으로 바인딩 할 수있었습니다 . 불행히도 BindIp.dll
32 비트이므로 64 비트 프로세스에서는 작동하지 않습니다.
LolClient.exe
합니까? 가 또는 exe는? 타사 dll 인젝터를 사용하고 있는데 도움이 될 수 있지만 더 많은 정보가 필요합니다.LolClient.exe
x86
x64