Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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# net应用程序的链接器_C#_.net_Linker - Fatal编程技术网

C# net应用程序的链接器

C# net应用程序的链接器,c#,.net,linker,C#,.net,Linker,我有一个桌面(winforms)应用程序,我正在寻找将程序集链接到汇编程序级(低于IL)的.net链接器,以防止反向工程。另一种解决方案也可以接受。 有人知道这样的链接器吗?XenoCode有一个很酷的工具,可以帮助您做到这一点: XenoCode有一个很酷的工具可以帮助您做到这一点: 你要找的是一个模糊器。它会把编译后的代码弄得乱七八糟,所以它仍然会做它应该做的事情,但是如果你对它进行反编译,它对大多数人来说是不可理解的 请注意,任何使其100%安全的尝试都注定会失败,您所能做的就是尽可能地使

我有一个桌面(winforms)应用程序,我正在寻找将程序集链接到汇编程序级(低于IL)的.net链接器,以防止反向工程。另一种解决方案也可以接受。
有人知道这样的链接器吗?

XenoCode有一个很酷的工具,可以帮助您做到这一点:


XenoCode有一个很酷的工具可以帮助您做到这一点:


你要找的是一个模糊器。它会把编译后的代码弄得乱七八糟,所以它仍然会做它应该做的事情,但是如果你对它进行反编译,它对大多数人来说是不可理解的

请注意,任何使其100%安全的尝试都注定会失败,您所能做的就是尽可能地使其变得困难

有许多解决方案可以通过各种方式实现这一点:


注意,最后一个不是混淆器,它虚拟化了您的应用程序。这样做的一些好处是,获取底层代码有点困难,但它主要是一种解决不同问题的产品,即需要将应用程序与安装的其他应用程序分开(即无需安装.NET,无需冲突的注册表设置等)你要找的是一个模糊器。它会把编译后的代码弄得乱七八糟,所以它仍然会做它应该做的事情,但是如果你对它进行反编译,它对大多数人来说是不可理解的

请注意,任何使其100%安全的尝试都注定会失败,您所能做的就是尽可能地使其变得困难

有许多解决方案可以通过各种方式实现这一点:


注意,最后一个不是混淆器,它虚拟化了您的应用程序。这样做的一些好处是,获取底层代码有点困难,但它主要是一种解决不同问题的产品,即需要将应用程序与安装的其他应用程序分开(即无需安装.NET,无需冲突的注册表设置等)

我想这就是你要找的(它是可以破解的,但比经典的模糊处理困难得多)。

我想这就是你要找的(它是可以破解的,但比经典的模糊处理困难得多)。

你可能想看看Mono AOT(提前)编译器:


但也有一些限制:显然,您无法编译使用CLR动态功能、反射等的程序集。

您可能需要查看Mono AOT(提前)编译器:


不过也有一些限制:您显然无法编译使用CLR动态特性、反射等的程序集。

签出,它是有效的。

签出,它是有效的。

模糊处理可能适合您的需要。但它仍然可以被破解。 我不知道你要求的任何程序和实用程序,但我有一个建议给你。 如果您不需要保护所有应用程序代码,而只需要保护关键部分,那么可以在C++/C中实现这些部分,并使用平台调用与非托管代码进行互操作。
杰弗里·里克特(Jeffrey Richter)推荐了这种方法。

模糊处理可能适合您的需要。但它仍然可以被破解。 我不知道你要求的任何程序和实用程序,但我有一个建议给你。 如果您不需要保护所有应用程序代码,而只需要保护关键部分,那么可以在C++/C中实现这些部分,并使用平台调用与非托管代码进行互操作。
杰弗里·里克特(Jeffrey Richter)推荐了这种方法。

谢谢,但是,这些都是混淆器/合并,它没有链接。acctual链接是在完全正确的运行时完成的。NET没有那么多真正的链接器。我建议你看看罗曼的答案,Mono,它有一个链接器。但正如他所说,在这条路线上有很多限制。我会看看你试图解决的核心问题,可能是你需要一个与真正的链接器不同的解决方案。谢谢,但这些都是模糊/合并,它没有链接。acctual链接是在完全正确的运行时完成的。NET没有那么多真正的链接器。我建议你看看罗曼的答案,Mono,它有一个链接器。但正如他所说,在这条路线上有很多限制。我会看看你试图解决的核心问题,可能是你需要一个与真正的链接器不同的解决方案。谢谢,但这会导致spoon服务器。我不确定你是不是那个意思。很明显他们改了名字。但该应用程序仍能满足用户的需求。谢谢,但它会导致spoon服务器。我不确定你是不是那个意思。很明显他们改了名字。但该应用程序仍能满足用户的需求。你确定你真正想要的是链接器吗?如果您的最终目标是防止反向工程,那么与.NET的真正链接器相比,有更多的模糊器和类似的解决方案可用。换句话说,如果您的目标是将应用程序链接到本机代码,那么您可能无法接近该目标,无法将其称为解决方案。您是对的,我对linker感兴趣的唯一原因是安全性。问题是模糊器不够可靠。你确定你真正想要的是链接器吗?如果您的最终目标是防止反向工程,那么与.NET的真正链接器相比,有更多的模糊器和类似的解决方案可用。换句话说,如果您的目标是将应用程序链接到本机代码,那么您可能无法接近该目标,无法将其称为解决方案。您是对的,我对linker感兴趣的唯一原因是安全性。问题是模糊器不够坚固。