首页 / 知识
关于.net :(为什么)我应该使用混淆处理?
2023-04-13 11:15:00

(Why) should I use obfuscation?在我看来,混淆是一个落入"因模糊而带来的安全"或"虚假的保护意识"阵营中的想法。 为了保护知识产权,这里有版权; 为防止发现安全问题,已修复了这些问题。 简而言之,我认为这是解决社会问题的技术解决方案。 这些几乎永远都行不通。 但是,我似乎是开发团队中唯一有这种感觉的人,所以我错了,或者只需要令人信服的论点。 我们的产品使用.NET,并且有一位开发人员建议使用.NET Reactor(顺便提一下,在此SO线程中也建议使用)。
因此,基本上,您一次就放弃了字节码的所有优点吗? 混淆有良好的工程效益吗? 您是出于工程原因而询问的,因此这并不是严格意义上的问题答案。但是我认为这是一个有效的说明。 如您所说,混淆是为了解决社会问题。与技术问题不同,社会(或商业)问题很少有完整的解决方案。解决或最小化问题只有成功的程度。 在这种情况下,混淆会给有人反编译和窃取您的代码增加障碍。它将阻止偶然的攻击,并通过惯性降低您的知识产权被盗的可能性。打个比方,轮胎防盗器并不能防止汽车被盗,但会降低汽车被盗的可能性。 当然,在可维护性方面(可能)在性能上存在成本,最重要的是使用户更难以准确提交错误报告。 正如GateKiller所说,混淆不会阻止一支坚定的团队进行反编译,而是(取决于您的产品)(取决于您的产品)一支团队可能在攻击您的决心如何? 因此,这不是解决社会问题的技术方案,而是一项对复杂社会结构增加影响力的技术决策。 如果一大批程序员真的想获取您的源代码并且花了时间,金钱和精力,那么他们一定会成功。 因此,混淆应该阻止那些没有时间,金钱或精力来获取您的消息来源的人,路过的人可能会打电话给他们。 如果坚持纯托管代码混淆,则可以减少相当大的程序集大小,而混淆的类/函数名称(折叠为单个字母)意味着较小的内存占用。这几乎总是可以忽略不计的,但是确实对某些移动/嵌入式设备有影响(并已被使用)(尽管大多数情况下使用Java)。 一种潜在的工程优势是,在某些情况下,混淆可以创建较小的可执行文件或其他工件-例如,对javascript进行混淆会使文件变小(因为所有变量都被命名为" a"和" b",而不是" descriptiveNameOne",并且所有空格都被去除,等等)。这样可以使使用混淆JavaScript的网页的加载时间更快。显然,这在(.NET)世界中并不适用,但它是一种直接的工程收益的例子。
我在讨论一些问题时发布了一个可能对您有所帮助的问题: 如前所述,使用混淆处理的主要原因是为了保护知识产权。对于企业而言,购买诸如.NET Reactor之类的混淆产品通常比试图合法地保护您的版权更具成本效益。 混淆还可以提供其他更多附带好处,例如性能改进和装配尺寸减小。这些将为您提供所需的工程优势。 虽然与.net不相关,但我会考虑使用Javascript(可能还有其他交错语言)进行混淆。混淆使Java受益匪浅,因为它减少了所需的带宽以及解析器必须读取的令牌。 但是混淆编译后的字节码对我似乎并不那么有用。我的意思是你会尝试实现什么?我只能看到混淆蜂在许可证检查代码中有点有用,以避免太容易绕开它。 使用加密来保护途中的信息。 在程序仍然拥有信息时,请使用混淆处理来保护信息。 |
最新内容
相关内容
python高斯模糊是什么
python高斯模糊是什么,数据,中心,培训,技术,位置,像素,邻域,函数,大小,周边,python中高斯模糊是什么说明1、本质上是数据光滑技术,可用于一维关于Windows:如何使用Java发现文件
关于Windows:如何使用Java发现文件的创建时间?,关于Windows:如何使用Java发现文件的创建时间?,文件,发现,修改时间,方法,How to discover如何检查运行时使用的Visual Studi
如何检查运行时使用的Visual Studio的活动解决方案配置?,如何检查运行时使用的Visual Studio的活动解决方案配置?,配置,自定义,解决方强制解决方案资源管理器在Visual S
强制解决方案资源管理器在Visual Studio 2005的编辑器中选择文件,强制解决方案资源管理器在Visual Studio 2005的编辑器中选择文件关于Visual Studio:升级VS.NET解决
关于Visual Studio:升级VS.NET解决方案和目标.NET框架的手动步骤?,关于Visual Studio:升级VS.NET解决方案和目标.NET框架的手动步骤?,升关于c#:我如何发现嵌入式资源的“路
关于c#:我如何发现嵌入式资源的“路径”?,关于c#:我如何发现嵌入式资源的“路径”?,嵌入式,程序,我有,我将,How can I discover the “path关于单元测试:从TDD开始-挑战? 解决
关于单元测试:从TDD开始-挑战? 解决方案? 建议?,关于单元测试:从TDD开始-挑战? 解决方案? 建议?,这样做,已经开始,共识,我想我,Beginning TDDRuby on Rails认证的最佳解决方案
Ruby on Rails认证的最佳解决方案,Ruby on Rails认证的最佳解决方案,应用程序,解决方案,身份,寻找,Best Solution For Authenticatio关于.net:警告:发现同一依赖程序集的
关于.net:警告:发现同一依赖程序集的不同版本之间存在冲突,关于.net:警告:发现同一依赖程序集的不同版本之间存在冲突,项目,应用程序,包关于Visual Studio:在具有多个项目
关于Visual Studio:在具有多个项目的解决方案中,如何将VS2008配置为仅打开一个Web服务器?,关于Visual Studio:在具有多个项目的解决方本地和构建环境的不同解决方案/项
本地和构建环境的不同解决方案/项目文件,本地和构建环境的不同解决方案/项目文件,开发环境,生产环境,中分,中与,Different solutions关于架构:命名空间/解决方案结构
关于架构:命名空间/解决方案结构,关于架构:命名空间/解决方案结构,项目,笼统,但这,挑战性,Namespace/solution structure很抱歉提出如