假设我的类,方法,属性,都不想被反射。不能被Invoke.
有没有办法呢?

解决方案 »

  1.   

    那就不要用.NET咯,用C++编译DLL,.NET来调用
      

  2.   

    有点想不通微软为什么让反射有这么大权力。但是也能想明白反射对管理整个.net 体系上的作用。
    大家还有没有其它办法呢?2,3楼的建议
      

  3.   

    真有才,,我使用Reflector反射一个dll时,它会初始化什么吗? 你想阻止什么哦??
    什么能被你阻止哦???
      

  4.   


    1. 真忘了那代码是怎么写的,我记得是可以得到访问者的一个Tocken,如果不是这个令牌,直接在构造函数中throw 出来一个错误,那么就无法实例化了
    2. 请注意楼主所说的是阻止Invoke,而并不是得到结构
      

  5.   

    混淆器混淆,反射加密。但没绝对地安全
    对程序使用混淆器混淆,加壳 
    如Xenocode Postbuild 
    使用流程混淆、字符串内容混淆和变量名混淆
    可以使用 Mono.Cecil 动态地让程序来改写
    主要代码也可使用C++等编写
    http://topic.csdn.net/u/20090423/09/83de56b0-3f04-450a-b35c-6a9de680fda6.html
      

  6.   


    sorry, 没看清楚。但这个也没用吧,,,
    MethodInfo.Invoke(object);
    实例化的是object。而不是invoke方法。 你这个Object怎么得到的?不是传过来的么?
      

  7.   


    我觉得
    Type type = typeof(ObjectA);
    IObject obj1=(IObject)Activator.CreateInstance(type, new string[] {});
    创建object时候应该走了默认的构造器,
    10楼的意思我觉得可行,在Activator.CreateInstance时候抛出一个异常,禁止实例化,只是不知道具体该怎么做。
      

  8.   


    别在这里琢磨类,,,我可以自己新写一个Activator.CreateInstance的。你怎么禁止?
      

  9.   


    有办法, 我可以早一套自己的构造器参数验证模式,你的 Activator.CreateInstance 不可能知道我的验证串内容吧,不合法我就throw exception,当然这还是思路,没有实际搞过。还有待验证 
      

  10.   


    这样扯也没意思,, 下次你写好了,我来帮你创建,我来帮你Invoke.
      

  11.   

    fbug[at]tom.com
    写好了发我邮件。 写的dll不能使用我说的混淆等技术即可。(如果繁忙,我可能几个月半年不会上csdn。)
      

  12.   

    实际测试了下,我的想法也需要c++编译的dll进行混编,否则还是有太多破绽。
    看来如果都是.net代码,几乎就是光屁股跑了综合一下以上各位的意见。
    1 混淆器混淆(流程混淆、字符串内容混淆和变量名混淆),反射加密。
    2 加壳 
    3 主要代码使用C++等编写。没有其它的意见,稍后就结贴