利用VB.NET反射执行任意系统命令

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)

利用VB.NET反射执行任意系统命令

笔者关注到另外一个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 使用方法

利用VB.NET反射执行任意系统命令

利用VB.NET反射执行任意系统命令