0

我已将托管 .NET DLL 注入到 .NET 进程中。
我在 StackOverflow 上看到有人说您可以使用反射调用注入的 DLL 的函数。这显然是 Snoop 使用的技术。
它是否正确?如果是这样,具体怎么做?
先感谢您。

4

4 回答 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 的精彩文章,唯一需要注意的是要注意安全策略,因为这些策略有时会阻止程序集的动态加载。

http://blogs.msdn.com/b/ericgu/archive/2007/06/05/app-domains-and-dynamic-loading-the-lost-columns.aspx

于 2010-12-15T10:02:53.650 回答