Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保护DLL的源代码_C#_.net_Visual C++_Reverse Engineering_Decompiling - Fatal编程技术网

C# 保护DLL的源代码

C# 保护DLL的源代码,c#,.net,visual-c++,reverse-engineering,decompiling,C#,.net,Visual C++,Reverse Engineering,Decompiling,我有一个用C写的图书馆。我想把它作为DLL分发。但是,似乎.NET允许对其进行舒适的反编译,因此算法很容易被盗 我可以用C++重写,但我是新的.NET。因此,主要的问题是编写一个C#的接口。该库不太大,使用线程、网络和一些数学 有没有一种方法可以构建一个只能被反汇编的DLL?或者我最好只需要用C++编写所有的东西,并提供一个接口给C?对C++进行编译是否比C语言更难? < P>分布式的最终用户可以进行逆向工程。您可以增加所需的工作量,但这始终是可能的。如果你的算法是真正的关键,专有的和有价值的,

我有一个用C写的图书馆。我想把它作为DLL分发。但是,似乎.NET允许对其进行舒适的反编译,因此算法很容易被盗

我可以用C++重写,但我是新的.NET。因此,主要的问题是编写一个C#的接口。该库不太大,使用线程、网络和一些数学


有没有一种方法可以构建一个只能被反汇编的DLL?或者我最好只需要用C++编写所有的东西,并提供一个接口给C?对C++进行编译是否比C语言更难?

< P>分布式的最终用户可以进行逆向工程。您可以增加所需的工作量,但这始终是可能的。如果你的算法是真正的关键,专有的和有价值的,你仍然在做应用程序设计,并且你的算法的结果不是性能关键或者可以被块化……也许你可以考虑一种Web服务方法。然后,您可以使用一些最强大的行业标准保护来访问您的计算。

如果您真的担心算法的知识产权,那么您有一些选择

1) 为算法申请专利。我可以听到人们的怒吼,但这就是你如何以合法的方式保护知识产权

2) 不要将带有算法的DLL提供给用户。将算法托管在云中,并且只允许客户以这种方式访问它


其余的一些我不明白。你说你可以写C++,但是不知道如何写一个接口给C?使用COM。C#可以使用COM库。或者,在C++中导出函数,并使用.pNECK../P>编写一个.c++的DLL互操作库,你正在寻找一个<代码>混淆器< /C++ >。@ CuBrr,这是否为C语言中的库提供了足够的保护?C++和此类<代码>混淆器工具会更好吗?使用wierd名称,因此很难对其进行反向工程。我认为你应该为你的代码申请专利,并且把它放在云端。当然,你可以在云中托管一个模糊的DLL。“分发给最终用户的所有东西都可以反向工程”——是的,我理解。但是在C++中重写这个库是否值得呢?@ Leonidas,你还没有给我们足够的信息来帮助解决这个问题。一般来说,编译C++代码比模糊C语言更难理解,但是C++中改写代码可能是微不足道的,或者几乎不可能,这取决于所使用的代码特性、C++的舒适性以及算法代码的大小和要求。实际上,我对C++更为满意,但我是新的.NET。因此,主要的问题是编写一个C#的接口。这个库不是太大,使用线程、网络和一些数学。也许你应该先试试.NET Native?