【问题标题】:How to obfuscate code without compiling the project?如何在不编译项目的情况下混淆代码?
【发布时间】:2012-08-28 07:20:33
【问题描述】:

有没有办法直接在编辑器中混淆代码?

此时,如果我想查看我的项目的混淆代码,我必须编译项目,做逆向工程,然后通过jd-gui等工具查看代码。

可以通过一些插件来实现所有这些,这样我就可以编译混淆代码,即让它像混淆之前一样工作。

注意

为了澄清,我不需要混淆代码导出,因为这个功能已经存在。我需要混淆代码on live而不编译它,或者至少不必将它导出到apk。

【问题讨论】:

  • 有趣。只是想知道,为什么您需要对源代码进行混淆处理?
  • @BoA 有很多原因。有些人喜欢以混淆的形式发送他们的源代码,而我需要它让我的学生轻松地向他们展示混淆的作用。就我而言,RI 方式太慢了,我想知道是否有更简单的方式。

标签: java android eclipse intellij-idea obfuscation


【解决方案1】:

在您的 android-sdk 目录中,检查 tools/proguard/bin 目录:这包括一些 proguard 可执行文件(proguard 是用于混淆的工具)。我从未使用过它们,但我确信其中一个可执行文件可以帮助您解决问题(甚至还有一个带有 gui 界面的!)。

【讨论】:

    【解决方案2】:

    我不知道任何预编译混淆器,但是我认为您想要的可以通过以下步骤实现:

    1. 创建一个函数名称与一些乱码文本名称的一对一映射文件。同样对变量有相同的映射。定义一些无用的循环/代码块,这些循环/代码块在编译时会被 JVM 忽略,并且可以在方法的开始或结束时执行(无论如何这都会被编译器剥离)。
    2. 现在,由于您在标签中提到了 Intellij Idea,您可以在 ide 中使用宏功能并创建一个宏来替换所有变量名和函数名(或用无用的代码块开头的括号)。
    3. 以任意名称保存宏,当您想查看代码混淆时,只需执行宏进行混淆即可。
    4. 也有一个类似的宏用于解混淆,以便您可以随时恢复。同时,我没有在 intellij idea 插件中工作太多,但是您可以轻松地创建与宏功能相同的插件。

    【讨论】:

      【解决方案3】:

      如果您使用的是 Eclipse,您可能需要安装 JadClipse 以简化您的工作流程。它将直接以反编译的文本格式打开工作区中的任何二进制类文件。

      该类文件是否为混淆二进制文件,当然取决于您剩余的工具链。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        相关资源
        最近更新 更多