编译为 .Net 中的本机代码是否会完全删除 MSIL?
我想知道,在反汇编 .Net 代码(Redgate .Net Reflector 等)的情况下,使用 Ngen 将代码编译为本机是否更安全?也就是说,这是否意味着有人现在需要 IDA 和 ASM 技能来反汇编(并理解)您的代码,而不是相对简单的 MSIL 反编译?
是的,我知道 MS 正是为此目的提供了一个混淆器,但我很好奇编译为本机是否是一个更好的解决方案,需要进行一些权衡(无 JIT)。
谢谢。
I'm wondering if, in the context of disassembling .Net code (Redgate .Net reflector, etc), is it more secure to compile your code to native, using Ngen? That is, does that mean someone would now need IDA and ASM skills to disassemble (and make sense) of your code vs the relatively trivial de-compiling of MSIL?
Yes, I'm aware that MS provides a obfuscater for exactly this purpose, but I'm curious if compiling to native is a better solution, with some tradeoffs(no JIT).
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ngen
不会删除 MSIL(或者更确切地说,如果没有 MSIL 文件,ngen
生成的本机二进制文件将无法使用)。验证程序仍使用 MSIL 来确定是否在部分信任场景中加载程序集以及进行反射。此处提供了很多有用的信息。
ngen
doesn't remove the MSIL (or rather, the native binary produced byngen
is unusable without also having the MSIL file). MSIL is still used by the verifier to determine whether to load assemblies in partial-trust scenarios, and for reflection.There's a lot of good information here.