Can I use mono's AOT feature to natively “pre-compile” .NET DLLs/EXEs to make them harder to reverse engineer?
我是否可以使用Mono的AOT(提前编译)功能以本机方式"预编译"我自己的部分或全部.NET DLL(和或Exe)以使它们更难进行反向工程?我正在使用Windows(7/x64,但我也有一台x86 XP计算机)和.NET 3.5(与2008年相比),我很好奇Mono/AOT是否可以/已经用于此目的?(此时,可以将它们绑定到x86。)
还有这个问题,我在哪里尝试过,却没有运气。
程序集中的IL代码可以在代码预编译后删除(例如,这是我们为MonoTouch所做的,以减少应用程序下载大小)。有一些限制,但它是有效的。然而,你是否应该花这么长的时间去迷惑你的客户是另一回事。
Afaik,Mono的AOT没有删除元数据,这意味着黑客有很多信息试图理解代码中的逻辑。而且它不适用于所有处理器和平台(特别是我认为它在Windows上不可用)。在删除大部分元数据的同时,可以更容易地尝试一些这样做的商业模糊器。
简短的回答,不。
aot'ing一个程序集只会生成一个共享库,所以下次使用该程序集时,mono将不必对所使用的方法进行JIT编译,而是从.so加载它们。您的程序集需要在那里,因为其中的元数据仍然是必需的。