0x01 介绍
VB.NET反射机制和C#大同小异,只在语法上稍微有些不同,利用Type.GetType类可以获得对象的类型,此包含对象的所有要素方法、构造器、属性等等,此类有6个重载方法,第一个参数指定程序集名typeName,后面两个布尔型参数分别为throwOnError, ignoreCase,表示是否抛出异常,忽略大小写,如下代码
System.Type.GetType("System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", True, True)
笔者关注到另外一个ReflectionOnlyGetType类,它与GetType类不同之处在于只是显示反射上下文内容,不能够执行代码
public static Type ReflectionOnlyGetType(string typeName, bool throwIfNotFound, bool ignoreCase)
{
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
return RuntimeType.GetType(typeName, throwIfNotFound, ignoreCase, reflectionOnly: true, ref stackMark);
}
最后用Activator.CreateInstance创建实例化对象执行反射,具体使用方法请跟随笔者一探究竟
1.1 使用方法
1.2 工具化
原文始发于微信公众号(dotNet安全矩阵):干货 | 利用VB.NET反射执行任意系统命令