【问题标题】: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 以使它们更难进行逆向工程吗?
【发布时间】:2010-04-06 17:57:24
【问题描述】:

我能否使用 mono 的 AOT(提前编译)功能对我自己的全部或部分 .NET DLL(和/或 EXE)进行本地“预编译”,以使它们更难进行逆向工程?我正在使用 Windows(7 / x64,但我也有 x86 XP 机器)和 .NET 3.5(VS 2008),我很好奇 mono/AOT 是否可以/已经用于此目的? (此时将它们绑定到 x86 是可以接受的。)

另请参阅 this question 我尝试过这个但没有运气。

【问题讨论】:

    标签: .net windows mono obfuscation aot


    【解决方案1】:

    在代码被预编译后,可以删除程序集中的 IL 代码(这是我们为 monotouch 所做的,例如,以减少应用程序下载大小)。有一些限制,但它有效。 不过,您是否应该不遗余力地用混淆来迷惑您的客户是另一回事。

    【讨论】:

      【解决方案2】:

      AFAIK,mono 的 AOT 不会删除元数据,这意味着黑客有大量信息可以尝试理解代码中的逻辑。 此外,它不适用于所有处理器和平台(特别是我认为它在 Windows 上不可用)。 尝试一些这样做的商业混淆器会更容易,同时会删除大部分元数据。

      【讨论】:

        【解决方案3】:

        简短的回答,不。

        AOT 程序集只会生成一个共享库,因此下次您使用该程序集时,Mono 将不必对您使用的方法进行 JIT 编译,而是从 .so 加载它们。您的程序集需要在那里,因为其中的元数据仍然需要。

        【讨论】:

        • 那么真正的 IP 保护问题是元数据,而解决这个问题的唯一方法是手动或半自动混淆?
        • 是的。 Mono AOT 就像 MS ngen。它不会保护您的 IP。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-17
        • 2019-06-19
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-25
        相关资源
        最近更新 更多