我已将托管 .NET DLL 注入到 .NET 进程中。
我在 StackOverflow 上看到有人说您可以使用反射调用注入的 DLL 的函数。这显然是 Snoop 使用的技术。
它是否正确?如果是这样,具体怎么做?
先感谢您。
问问题
869 次
4 回答
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);
}
}
于 2010-12-15T09:02:57.160 回答
0
见下文
于 2010-12-15T09:04:42.467 回答
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();
于 2010-12-15T09:06:08.830 回答
0
Eric Gunnerson 的精彩文章,唯一需要注意的是要注意安全策略,因为这些策略有时会阻止程序集的动态加载。
于 2010-12-15T10:02:53.650 回答