如何在不编译项目的情况下模糊代码?

时间:2012-08-28 07:20:33

标签: java android eclipse intellij-idea obfuscation

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

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

可以通过一些附加组件实现所有这些,这样我就可以编译混淆代码,即使其像混淆之前一样工作。

注意

为了澄清,我不需要在导出上模糊代码,因为此功能已经存在。我需要在没有编译的情况下对代码进行实时进行模糊处理,或者至少不必将其导出到apk。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  1. 将函数名称的一对一映射文件创建为一些乱码文本名称。类似地,对变量也有相同的映射。定义一些无用的循环/代码块,这些循环/代码块在编译时被JVM忽略,并且可以在方法的开头或结尾执行(无论如何都会被编译器剥离)。
  2. 现在,因为您在标签中提到了Intellij Idea,您可以使用ide中的宏功能并创建一个宏来替换所有变量名称和函数名称(或者用无用的代码块开始括号)。
  3. 使用任何名称保存宏,并且只要您想要查看代码混淆,只需执行宏以进行模糊处理。
  4. 有一个类似的宏用于非混淆,以便您可以随时恢复。与此同时,我还没有在intellij idea插件中工作,但你可以创建插件,它可以非常舒适地完成与宏相同的工作。

答案 2 :(得分:0)

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

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