
किसी अन्य प्रक्रिया के प्रत्येक CLR रनटाइम और AppDomain में C# EXE या DLL असेंबली को इंजेक्ट करता है।
किसी अन्य प्रक्रिया के CLR रनटाइम और AppDomain में C# EXE या DLL असेंबली को इंजेक्ट करता है। इंजेक्ट की गई असेंबली फिर इंजेक्टी प्रक्रिया के क्लासेज के स्थैतिक इंस्टेंस तक पहुँच सकती है और इस प्रकार इसकी आंतरिक स्थिति को प्रभावित कर सकती है।
clrinject-cli.exe -p <processId/processName> -a <assemblyFile>
प्रक्रिया id <processId> या नाम <processName> के साथ प्रक्रिया खोलता है, <assemblyFile> EXE इंजेक्ट करता है और Main मेथड निष्पादित करता है।
-e सभी लोड किए गए CLR रनटाइम और बनाए गए AppDomains की गणना करता है।-d <#> केवल <#>-वें AppDomain में इंजेक्ट करें। यदि कोई संख्या या शून्य निर्दिष्ट नहीं है, तो असेंबली प्रत्येक AppDomain में इंजेक्ट की जाती है।-i <namespace>.<className> नेमस्पेस <namespace> से क्लास <className> का एक इंस्टेंस बनाएं।clrinject-cli.exe -p victim.exe -e (victim.exe से रनटाइम और AppDomains की गणना करें)clrinject-cli.exe -p 1234 -a "C:\Path\To\invader.exe" -d 2 (invader.exe को id 1234 वाली प्रक्रिया के दूसरे AppDomain में इंजेक्ट करें)clrinject-cli.exe -p victim.exe -a "C:\Path\To\invader.dll" -i "Invader.Invader" (victim.exe में प्रत्येक AppDomain के अंदर Invader का इंस्टेंस बनाएं)clrinject-cli64.exe -p victim64.exe -a "C:\Path\To\invader64.exe" (x64 असेंबली को x64 प्रक्रिया में इंजेक्ट करें)निम्नलिखित कोड को C# निष्पादन योग्य के रूप में संकलित किया जा सकता है और फिर PowerShell प्रक्रिया में इंजेक्ट किया जा सकता है। यह कोड कंसोल टेक्स्ट रंग को हरा बदलने के लिए आंतरिक PowerShell क्लासेज के स्थैतिक इंस्टेंस तक पहुँचता है।
using System;
using System.Reflection;
using Microsoft.PowerShell;
using System.Management.Automation.Host;
namespace Invader
{
class Invader
{
static void Main(string[] args)
{
try
{
var powerShellAssembly = typeof(ConsoleShell).Assembly;
var consoleHostType = powerShellAssembly.GetType("Microsoft.PowerShell.ConsoleHost");
var consoleHost = consoleHostType.GetProperty("SingletonInstance", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
var ui = (PSHostUserInterface)consoleHostType.GetProperty("UI").GetValue(consoleHost);
ui.RawUI.ForegroundColor = ConsoleColor.Green;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
इंजेक्शन कमांड:
clrinject-cli64.exe -p powershell.exe -a "C:\Path\To\invader64.exe"
परिणाम:
