Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# NGEN';对.NET应用程序进行加密有助于保护它不受逆向工程的影响吗?如果不是,我什么时候用?_C#_.net_Vb.net_Compiler Construction_Ngen - Fatal编程技术网

C# NGEN';对.NET应用程序进行加密有助于保护它不受逆向工程的影响吗?如果不是,我什么时候用?

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的伟大文章,仍然相关 亮点: 同时

如果Ngen不保护我的应用程序,我什么时候才能合理地期望在我的职业生涯中使用此应用程序?

加载速度才是真正有用的。也就是说,它可以弥补2000%的改进(是的,这是正确的)

编辑:


请注意,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 按)

执行时间性能较差。 在编译代码时,NGen不能像JIT编译器那样对执行环境做出尽可能多的假设。这会导致NGen.exe生成包含大量内存引用间接寻址的代码,这些间接寻址对于JIT编译的代码来说是不必要的


我可以登录ASP.NET吗?我什么时候需要重新运行NGEN?对于ASP.NET,您宁愿使用预编译。如果您知道您的应用程序不会频繁更改,您可以这样做。您还必须使用
aspnet\u编译器
,以确保所有“前端”代码也被编译成程序集。这与Microsoft的ASP预热工具有关吗?我还没有深入探讨,应该没有“管理”问题。我甚至还没有使用相同版本的NGEN程序集造成不良影响(因为如果哈希不匹配,它将不会加载)。我只是在这里发布了一个后续问题: