首页 站长运维 脚本编程 clrinject:向CLR Runtimes和AppDomain中注入代码的用具

摘要

引子

clrinject是一款可将C#,EXE或DLL轨范集,注入另一个历程CLR Runtimes和AppDomain的器材。注入的轨范集可拜候injectee历程类的静态实例,从而影响其内部状况。

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

掀开id为<processId>或名称为<processName>的历程,注入<assemblyFile> 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:\Path\To\invader.exe -d 2

正在victim.exe中的每个AppDomain中创修Invader实例:

   clrinject-cli.exe -p victim.exe -a C:\Path\To\invader.dll -i Invader

将x64轨范集注入x64历程:

   clrinject-cli64.exe -p victim64.exe -a C:\Path\To\invader64.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(); 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

结果:

clrinject:向CLR Runtimes和AppDomain中注入代码的用具

标题:clrinject:向CLR Runtimes和AppDomain中注入代码的用具

分类:脚本编程

链接:https://www.seozhan.cn/30417.html

版权:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至503806699@qq.com 举报,一经查实,本站将立刻删除

相关文章

评论 暂无评论