如何限制invoke方法

时间:2010-09-21 12:29:45

标签: c# reflection assemblies

我想知道是否有办法限制对函数的调用调用?让我说清楚。

[Assembly:a1]
Class A
{
    function Af();
}

[Assembly:a2]
Class B
{
     function Bf(){
     //load Assembly a1
     //InvokeMember to Af
     }
}

编译后我将有2个程序集。现在,如果我分发给客户端,任何人都可以复制程序集1并调用Af()。此函数在解密后返回setting.xml文件。我想停止从第三方访问我的功能。有什么办法吗?任何帮助表示赞赏。

感谢。

3 个答案:

答案 0 :(得分:2)

在.NET中< 4.0,您可以使用StrongNameIdentityPermission来限制允许谁调用您的方法。但即便如此,也不会阻止那些决心掌握你的秘密数据的人。

答案 1 :(得分:0)

在B类中嵌套A类。

答案 2 :(得分:0)

您可以通过传入一些参数来使方法调用成功,从而对方法进行模糊处理。当前日期的Base64Encode或MD5可以工作(即使在正确调用时也可能在00:00:00附近失败)。

他们仍然可以反映您的程序集并查看该方法的调用方式。

恕我直言,您的担忧是不必要的,但是一个好的混淆工具会有所帮助(我没有为.Net进行过多次实验,但我听说大多数都不好)。