`
RednaxelaFX
  • 浏览: 3018375 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

反射还真会挂……

    博客分类:
  • .NET
阅读更多
呃,CLR的反射也可以注入字符串……看来这里也有可玩的突破口 OTL

以下代码:
using System;
using System.Reflection;
using System.Reflection.Emit;

static class Program {
    static void Main() {
        var assemblyName = new AssemblyName( "DemoAssembly" );
        var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.Run );
        var moduleBuilder = assemblyBuilder.DefineDynamicModule( "DemoAssembly" );
        var baseTypeBuilder = moduleBuilder.DefineType(@"Base+My", TypeAttributes.Public);
        var baseType = baseTypeBuilder.CreateType();
        var derivedTypeBuilder = moduleBuilder.DefineType("Derived", TypeAttributes.Public, baseType);
        var derivedType = baseTypeBuilder.CreateType();
        var instance = Activator.CreateInstance(derivedType);
    }
}

在生成的基类名字里放入[]*&+,\的任意字符,都会引发在创建派生类是出错:
引用
Unhandled Exception: System.Runtime.InteropServices.COMException (0x80131130): Record not found on lookup. (Exception from HRESULT: 0x80131130)
   at System.Reflection.Module._InternalGetTypeToken(String strFullName, ModulerefedModule, String strRefedModuleFileName, Int32 tkResolution)
   at System.Reflection.Module.InternalGetTypeToken(String strFullName, Module refedModule, String strRefedModuleFileName, Int32 tkResolution)
   at System.Reflection.Emit.ModuleBuilder.GetTypeRefNested(Type type, Module refedModule, String strRefedModuleFileName)
   at System.Reflection.Emit.ModuleBuilder.GetTypeTokenWorkerNoLock(Type type, Boolean getGenericDefinition)
   at System.Reflection.Emit.ModuleBuilder.GetTypeTokenInternal(Type type, Boolean getGenericDefinition)
   at System.Reflection.Emit.TypeBuilder.Init(String fullname, TypeAttributes attr, Type parent, Type[] interfaces, Module module, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType)
   at System.Reflection.Emit.ModuleBuilder.DefineTypeNoLock(String name, TypeAttributes attr, Type parent)
   at System.Reflection.Emit.ModuleBuilder.DefineType(String name, TypeAttributes attr, Type parent)
   at Program.Main() in d:\experiment\test\crash.cs:line 12


OTL……那些字符是CLI的类型的一些特殊字符,例如+是nested class的完全限定名里分隔它自身的类名与enclosing class的类名的字符,[]是指定泛型参数用的,等等。反射的时候可能也没办法检查到底哪些是正常的特殊字符,哪些是人为注入进去的。既然如此,Emit的时候就不该允许这些特殊字符进去的。注入啊注入……

P.S. 测试环境是.NET Framework 3.5 SP1
分享到:
评论

相关推荐

    信号完整性分析大作业.docx

    二、终端开、短路的信号反射……………………………………………4 三、短串联传输线的反射 ………………………………………………… 6 四、短并联传输线的反射 ………………………………………………8 五、容性终端...

    se Java 设计架构

    第六节 Java反射技术 ………………………………………22 第五章 J2EE架构中各层的数据表示方法 第一节 MVC三层体系结构中的数据表示要求 ………………23 第二节 J2EE系统中各层数据表示的设计 …………………24 ...

    关于反射最全的例子,这些你都懂了,反射就精了……

    关于反射最全的例子,包括属性、方法、数组等的例子

    信号完整性中反射问题的原理

    前言………………………………………………………… 3 第一章 电路角度的分析…………………………………‥ 4 1.1均匀传输线方程…………………………………… …‥ 4 1.2 均匀传输线方程的解…………………………...

    反射机制反射Dao 反射机制

    反射反射反射反射反射反射反射反射反射反射反射反射反射反射反射反射

    3d max入门教程

    第21课………………*反射和倒影 第22课………………*渐变色材质 第23课………………*使用摄像机 第24课………………*使用灯光 第25课………………*使用聚光灯 第26课………………*动画基础 第27课………………...

    实验语音学概要

    2.3.1反射和衍射………………(20) 2.3.2吸收………………………(20) 2.3. 3混响………………………( 21) 2.3.4干涉、拍和驻波…………(21) 2.4声波在管道中的传播………(23) 2.4.1电一力一...

    java反射 java反射 java反射java反射

    java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射

    C#易筋经——反射、反射加壳、反射脱壳、反射注册机

    C#易筋经——反射、反射加壳、反射脱壳、反射注册机

    java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB

    java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB

    OpenGL 求反射光线 反射向量

    OpenGL 求反射光线 反射向量 OpenGL 求反射光线 反射向量 OpenGL 求反射光线 反射向量 OpenGL 求反射光线 反射向量 OpenGL 求反射光线 反射向量 OpenGL 求反射光线 反射向量 OpenGL 求反射光线 反射向量 OpenGL 求...

    matlab计算反射阵单元相位(460652)_matlab反射阵相位_matlab反射阵_反射阵matlab_反射阵

    使用matlab计算反射阵天线单元的相位补偿

    C#和Labview资料

    △3程 序 集 …¨… ¨ … …… … … … I31.41 私有程序集…………………△41,4.2 共享程序集…………………△41.4.3 反射……………∵……………141.4.4 并行编程……………………△5。NET FramewOrk类 ¨… ¨¨...

    Unity镜面反射脚本

    unity镜面反射脚本,包里4个文件 Mirror.cs :与shader互动的脚本,使用这组材质同时要把这个脚本拖给使用的物体才能生效 Mirror-BumpSpec.shader 实时镜面反射shader 可以配合法线贴图一起用 适用于平面物体 ...

    P波入射C程序_P波反射系数计算_反射系数_

    计算P波入射时的反射P波、反射SV波的反射系数。

    JAVA反射机制详解视频

    (通过反射获取无参构造方法并使用) (通过反射获取带参构造方法并使用) (通过反射获取私有构造方法并使用) (通过反射获取成员变量并使用) (通过反射获取无参无返回值成员方法并使用) (通过反射获取带参带返回值成员...

    matlab模拟光的反射折射.pdf

    matlab模拟光的反射折射.pdfmatlab模拟光的反射折射.pdfmatlab模拟光的反射折射.pdfmatlab模拟光的反射折射.pdfmatlab模拟光的反射折射.pdfmatlab模拟光的反射折射.pdf

    unity镜面反射脚本

    Mirror-BumpSpec.shader 实时镜面反射shader 可以配合法线贴图一起用 适用于平面物体 Mirror-AlphaBumpSpec.shader 实时镜面发射、透明材质,可以同时反射和透明效果,也可以配合法线贴图,适用于平面物体 Mirror-...

    Java常用的反射方法

    反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() 2.4 总结 3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取...

    课程设计-基于AT89C51单片机红外防盗报警器的设计.doc

    报警电路 目 录 1 引言………………………………………………………………………… ……………………………1 1.1设计任务与要求………………………………………………………………… ………………..1 2 基础知识……...

Global site tag (gtag.js) - Google Analytics