我已将一个托管的.NET DLL注入到.NET进程中 我在StackOverflow上看到一些人说你可以通过使用Reflection来调用注入的DLL的函数。这显然是Snoop使用的技术 它是否正确?如果是这样,究竟该怎么办呢? 先感谢您。
答案 0 :(得分:2)
你可以使用反射。这是一个例子:
class Program
{
static void Main()
{
var assembly = Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
var serverType = assembly.GetType("System.Web.HttpUtility", true);
var method = serverType.GetMethod("HtmlEncode", BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(string) }, null);
var result = method.Invoke(null, new[] { "<some value>" });
Console.WriteLine(result);
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
以下是一些示例代码:
// Get all loaded assemblies in current application domain
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
// Get type of int
Type intType = assemblies.Select(a => a.GetType("System.Int32")).First();
// Create object of int using its type
Object intObj = Activator.CreateInstance(intType);
// Call int.ToString() method which returns '0'
String result = intObj.GetType().GetMethod("ToString", new Type[] { }).Invoke(intObj, null).ToString();
答案 3 :(得分:0)
Eric Gunnerson撰写的精彩文章,唯一需要注意的是安全策略,因为这些可能会阻止动态加载程序集。