首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将C#编译成本机?

将C#编译成本机?
EN

Stack Overflow用户
提问于 2009-12-17 13:03:47
回答 11查看 67.3K关注 0票数 79

我想我对将.NET字节码编译成本机代码有点困惑,或者我可能对最终结果感到困惑。所以,请容忍我,因为我试着整理我认为我理解的东西,这样你就可以帮我找出我错过了什么。

我想要做的是将用C#编写的应用程序编译成常规的本地代码,就像我用C编写它一样。我的推理与性能无关,而是与某种程度的保护有关。我明白,我的最终目标并不是不可能(甚至很难)绕过的,但我只是觉得倒转x86程序集比逆转Reflector给我的东西更困难。

现在,如果我把我的C#应用程序扔到Reflector中,我基本上会得到我的源代码。通常,当我将我的非托管C/C++应用程序扔到IDAPro中并使用HexRays反编译器时,我无法得到同样程度的反编译,我不得不通过x86反汇编来理解逻辑流。我的理解是,如此伟大的反编译来自于Reflector,因为应用程序在MSIL中,而不是HexRays试图反编译的更简洁的本机代码。

我不担心客户端机器仍然需要.NET运行时,我不想回避这些问题。我想在我的程序上运行像upx这样的普通软件混淆程序,并将其作为.NET二进制文件执行失败。

我从相关问题上的理解是,ngen做我想做的事情。我试过使用ngen。但是,在将输出文件从C:\Windows\assemblies\...\applicationName.ni.exe目录复制到某个可以双击的位置之后,尝试运行它会产生一个错误,说明它不是“一个有效的Win32应用程序”。此外,当我将applicationName.ni.exe扔到Reflector中时,我得到的输出与仅从applicationName.exe中得到的输出相同。由于applicationName.ni.exe应该是本机代码,所以我希望Reflector会出错,但它没有。如果我应该这样做,为什么Reflector仍然给我这么好的反编译?

所以,我要再次总结一下我的主要问题:如何将我的.NET程序编译成一个反射器不会那么容易分解的本地二进制文件?或者,保护用.NET语言编写的产品不受新手逆向工程师影响的最佳实践是什么?

如果我需要一个不同的工具,我更喜欢免费的东西,而不是像代码墙这样的东西。

谢谢!

更新:--我明白我正在寻找的东西可能会限制语言的一些特性,比如反射,但我认为我对此没有意见。我的代码中没有任何代码会执行任何显式的Assembly.Load调用或任何类似的操作。但是,难道就不能用GetProcAddress/LoadLibrary调用来代替它们吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2015-06-15 13:54:48

我刚刚验证了 .Net on VS2015 & Windows 8.1 (如果配置正确,检查.proj以验证)并构建特定体系结构(可能过高,还没有验证),将生成一个本机文件,该文件将为您提供“更难反向工程< code >E 29”,您正在寻找的代码无法通过JetBrains的E110..dllE 211进行读取)。

票数 32
EN

Stack Overflow用户

发布于 2009-12-17 13:21:16

这不是ngen.exe的工作方式。它只是在前面运行JIT编译器来生成.ni.exe或.ni.dll模块。该二进制文件不包含元数据,只包含方法主体的IL生成的机器代码。CLR仍然必须找到原始程序集。只有这样,它才能确定是否有一个ngen-ed映像可用,以便它可以使用机器代码,而不是从程序集的IL生成它。

Ngen.exe加快了应用程序的启动时间,仅此而已。

我对任何可能对我的程序集感兴趣的人通常的建议是将它们指向sourceforge.net。它有三兆字节的源代码,由通常比我好的程序员编写和维护。有时甚至有好的评论。如果你的混淆器不能很好的工作,那就四处寻找一个更好的。有很多。

票数 33
EN

Stack Overflow用户

发布于 2014-04-03 13:31:46

昨天,微软在2014年建造上宣布了.NET原生。根据常见问题的说法,“.一开始,我们的重点是Windows应用程序,从长远来看,我们将继续改进所有.NET应用程序的本机编译。”

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1921656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档