當前位置:
首頁 > 新聞 > clrinject:向CLR Runtimes和AppDomain中注入代碼的工具

clrinject:向CLR Runtimes和AppDomain中注入代碼的工具

前言


clrinject是一款可將C#,EXE或DLL程序集,注入另一個進程CLR Runtimes和AppDomain的工具。注入的程序集可訪問injectee進程類的靜態實例,從而影響其內部狀態。

使用

clrinject-cli.exe -p <processId/processName> -a <assemblyFile>

打開id為

或名稱為

的進程,注入 EXE並執行Main方法。


其他選項

-e:枚舉所有已載入的CLR Runtimes時和創建的AppDomain。

-d <#>:僅注入<#> -th AppDomain。如果未指定數字或指定為零,則會將程序集注入到所有AppDomain。

-i <namespace>.<className>:從命名空間<namespace>創建類<className>的實例。

示例

使用示例


從victim.exe枚舉Runtimes和AppDomains:

clrinject-cli.exe -p victim.exe -e

將invader.exe從id為1234的進程注入第二個AppDomain:

clrinject-cli.exe -p 1234 -a "C:PathToinvader.exe" -d 2

在victim.exe中的每個AppDomain中創建Invader實例:

clrinject-cli.exe -p victim.exe -a "C:PathToinvader.dll" -i "Invader.Invader"

將x64程序集注入x64進程:

clrinject-cli64.exe -p victim64.exe -a "C:PathToinvader64.exe"

可注入程序集示例


以下代碼可編譯為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:PathToinvader64.exe"

結果:


*參考來源:github,FB小編secist編譯,轉載請註明來自FreeBuf.COM




喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

在Splunk上安裝自定義應用反彈Shell的方法
隱藏在證書文件中的PowerShell(一)

TAG:FreeBuf |