我可以使用单声道的AOT(提前编译)function来本机“预编译”我自己.NET DLL(和/或EXE)的一部分或全部,以使它们更难于反向工程吗? 我使用Windows(7 / x64,但我也有一个x86 XP机器)和.NET 3.5(VS 2008),我很好奇,单/ AOT可以/已经被用于这个目的? (把它们绑定到x86是可以接受的)
看到这个问题 ,我试过这个,没有运气。
AFAIK,mono的AOT不会删除元数据,这意味着黑客有很多信息来试图理解你的代码中的逻辑。 此外,它不适用于所有的处理器和平台(具体而言,我认为它不是在Windows上)。 尝试一些商业混淆器,同时拿走大部分元数据是比较容易的。
程序集中的IL代码可以在代码被预编译的时候被移除(这就是我们为单点触摸所做的,例如,为了减少应用程序下载的大小)。 有几个限制,但它的作品。 尽管如此,你是否应该这么做才能让混淆你的客户变成另外一回事。
简短的回答,没有。
AOT程序集只会生成一个共享库,所以下一次使用该程序集时,Mono将不必对所用的方法进行JIT编译,而是从.so中加载它们。 你的程序集需要在那里,因为它的元数据仍然是需要的。