अपडेट करें
मैंने पाया है कि 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से बच्चे की प्रक्रियाओं को इंजेक्ट नहीं कर सकता है और इसे निष्पादित निष्पादन के लिए पैरामीटर पास नहीं करता है । लेकिन मैं रजिस्ट्री , बैच स्क्रिप्ट और थर्ड-पार्टी डीएल इंजेक्टर में छवि फ़ाइल निष्पादन विकल्प का उपयोग करके इसे दरकिनार करने में सक्षम था । विवरण नीचे हैं।
सिद्धांत
BindIp.dllबिना उपयोग के ForceBindIp.exeहमें यह पता लगाने की आवश्यकता है कि वे किस तरह से संवाद करते हैं ( ForceBindIp.exeआईपी-पते को किसी तरह से कम करने के लिए पास करना होगा)।
मैंने आईडीए मुक्त का उपयोग किया है और पाया कि ForceBindIp.exeनाम के साथ पर्यावरण चर बनाता है FORCEDIPजो आईपी-पता रखता है और BindIp.dllइस चर से आईपी-पता पढ़ता है जब इसे इंजेक्ट किया जाता है और लक्ष्य प्रक्रिया में निष्पादित किया जाता है।
लक्ष्य एप्लिकेशन लॉन्च का पता लगाने के लिए, हम Debuggerइस निष्पादन योग्य के लिए रजिस्ट्री में छवि फ़ाइल निष्पादन विकल्प में एक कुंजी जोड़ सकते हैं :
कर्नेल32! DEBUG_PROCESS या DEBUG_ONLY_THIS_PROCESS सृजन झंडे के बिना कॉल किए जाने पर CreateProcess, रजिस्ट्री को यह देखने के लिए चेक करता है कि IFEO निष्पादन योग्य पर सेट किया गया है या नहीं। यदि हाँ, तो यह डिबगर एग्जीक्यूटिव नाम को प्रचलित करता है, डिबगर के तहत लॉन्च करने के लिए इम्प्लीबल होने योग्य है।
हमारे मामले में "डीबगर" एक बैच स्क्रिप्ट होगी, जो FORCEDIPवैरिएबल सेट करेगी और इंजेक्शन डीएल-इंजेक्टर लॉन्च करेगी । इंजेक्ट्री तब प्रक्रिया शुरू करेगी, कमांड-लाइन तर्क पास करेगी और इंजेक्शन लगाएगी 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इस कुंजी पर पूर्ण अनुमतियाँ (स्क्रिप्ट हर लॉन्च में इसे संशोधित करना होगा)। इसे ऐसा दिखना चाहिए:
में आवश्यक आईपी-पता सेट करें BindIp.cmd
दोहराएँ 3 और 4 कदम हर निष्पादन आप (बाँध करना चाहते हैं के लिए rad_user_kernel.exe, LolLauncher.exe, LolPatcher.exe, आदि)।
अब, हर बार जब आप निष्पादन योग्य लॉन्च करते हैं, जिसमें संबंधित रजिस्ट्री प्रविष्टि होती है, तो BindIp.cmdस्क्रिप्ट इसके बजाय लॉन्च होगी और इस कार्यक्रम को वांछित आईपी-पते पर बाँध देगी।
निष्कर्ष
मैंने विंडोज 8.1 x64 पर चलने वाले अपने लैपटॉप पर यह परीक्षण किया है और इस तकनीक का उपयोग करके विभिन्न कार्यक्रमों ( AIMP 2 , BERSIRC , ओपेरा 12.4 ) को ईथरनेट या WiFi एडाप्टर पर सफलतापूर्वक बाँधने में सक्षम था । दुर्भाग्य BindIp.dllसे 32-बिट है, इसलिए यह 64-बिट प्रक्रियाओं के साथ काम नहीं करेगा।
LolClient.exe? हैLolClient.exeएकx86याx64exe? मैं थर्ड-पार्टी डीएल इंजेक्टर के साथ कर रहा हूं और शायद मैं आपकी मदद कर सकता हूं, लेकिन मुझे और जानकारी चाहिए।