C# NGEN';对.NET应用程序进行加密有助于保护它不受逆向工程的影响吗?如果不是,我什么时候用?
如果Ngen不保护我的应用程序,我什么时候才能合理地期望在我的职业生涯中使用此应用程序?加载速度才是真正有用的。也就是说,它可以弥补2000%的改进(是的,这是正确的) 编辑:C# NGEN';对.NET应用程序进行加密有助于保护它不受逆向工程的影响吗?如果不是,我什么时候用?,c#,.net,vb.net,compiler-construction,ngen,C#,.net,Vb.net,Compiler Construction,Ngen,如果Ngen不保护我的应用程序,我什么时候才能合理地期望在我的职业生涯中使用此应用程序?加载速度才是真正有用的。也就是说,它可以弥补2000%的改进(是的,这是正确的) 编辑: 请注意,JIT’ed代码通常比NGEN’ed代码快。NGEN仅用于编译IL以提高性能。你可能想研究代码混淆以保护应用程序不受逆向工程的影响。杰弗里·里克特(Jeffrey Richter)在他的书中写了一篇很棒的文章,我不知道第三版是否有,但这是他在2002年写的一篇关于Ngen'ing的伟大文章,仍然相关 亮点: 同时
请注意,JIT’ed代码通常比NGEN’ed代码快。NGEN仅用于编译IL以提高性能。你可能想研究代码混淆以保护应用程序不受逆向工程的影响。杰弗里·里克特(Jeffrey Richter)在他的书中写了一篇很棒的文章,我不知道第三版是否有,但这是他在2002年写的一篇关于Ngen'ing的伟大文章,仍然相关 亮点: 同时,还有几个潜在的问题 有关NGen文件的问题:
- 没有知识产权保护。许多人相信 可能会运送NGend 不传送文件的文件 包含原始IL代码 从而保持了他们的智力 财产是一个秘密。不幸的是 这是不可能的。在运行时,CLR 需要访问程序集 元数据和NGend文件不存在 包含元数据
- NGend文件可能会失去同步。当CLR加载 它比较了许多 关于 以前编译代码和 当前执行环境。如果有的话 的属性不匹配,则 无法使用NGen文件,并且 使用正常的JIT编译器进程 相反
- 管理不善。如果出现以下情况,则不会自动删除已删除的文件: 程序集被卸载 很容易影响.NET框架 管理和XCOPY部署 故事
- 加载时间性能较差(重新定基)。当Windows加载 NGend文件,它检查 文件在其首选的基础上加载 地址。如果文件无法在其指定位置加载 首选基址,然后是Windows 重新定位文件,修复所有 内存地址引用。这是 非常耗时,因为 Windows必须将整个文件加载到 内存和修改内存中的各种字节 档案。有关 请看我的书: Microsoft的编程应用程序 Windows,第四版(Microsoft 按)
我可以登录ASP.NET吗?我什么时候需要重新运行NGEN?对于ASP.NET,您宁愿使用预编译。如果您知道您的应用程序不会频繁更改,您可以这样做。您还必须使用
aspnet\u编译器
,以确保所有“前端”代码也被编译成程序集。这与Microsoft的ASP预热工具有关吗?我还没有深入探讨,应该没有“管理”问题。我甚至还没有使用相同版本的NGEN程序集造成不良影响(因为如果哈希不匹配,它将不会加载)。我只是在这里发布了一个后续问题: