Sör*_*lau 8 .net security obfuscation protection
在我看来,混淆是一种落入"默默无闻"或"虚假保护"阵营的想法.为保护知识产权,有版权; 为了防止发现安全问题,我们正在解决这些问题.简而言之,我认为它是解决社会问题的技术方案.那些几乎从不工作.
但是,我似乎是我们开发团队中唯一一个有这种感觉的人,所以我要么错了,要么只需要令人信服的论据.我们的产品使用.NET,并且一个开发人员建议使用.NET Reactor(顺便提一下,这个SO线程也是如此).
.NET Reactor通过将任何纯.NET程序集(用C#,VB.NET,Delphi.NET,J#,MSIL编写)与本机机器代码混合,完全阻止任何反编译.
所以,基本上,你一次性抛弃字节码的所有优点?
混淆是否有良好的工程效益?
Lei*_*ell 13
你问工程原因,所以严格来说这不是问题的答案.但我认为这是一个有效的澄清.
正如您所说,混淆旨在解决社会问题.与技术问题不同,社交(或业务)问题很少有完整的解决方案.在解决或最小化问题方面只有成功的程度.
在这种情况下,混淆会增加某人反编译和窃取代码的障碍.它会阻止偶然攻击,并且通过惯性,可能会使您的知识产权不太可能被盗.为了做一个无聊的比喻,防盗装置不会阻止你的汽车被盗,但它会减少它的可能性.
当然,可维护性(可能)在性能上是成本,最重要的是使用户更难以准确地提交错误报告.
正如GateKiller所说,混淆不会阻止一个坚定的团队反编译,但(并且这取决于你的产品是什么)团队可能会如何确定攻击你?
因此,这不是社会问题的技术解决方案,而是一种技术决策,它会给复杂的社会结构带来一种影响.
如果一个庞大的程序员团队真的想要获得你的源代码并且有时间,金钱和努力,那么他们就会成功.
因此,混淆应该阻止那些没有时间,金钱或努力来获取你的消息来源的人,你可以打电话给他们.