通过隐藏Manifest并将代码转换为Unicode字符来保护应用程序免于反编译

时间:2015-06-05 10:39:15

标签: java android unicode android-manifest decompiling

  

我希望通过使用混淆或任何好的技术来保护我的应用程序。我在SO上经历过一些问题。

反编译时,我看到两种不错的技巧。

  1. 应用程序隐藏@ParseClassName("ChatGroup") public class ChatGroup extends ParseObject { ,因为我反编译代码并且它的Manifest.xml丢失或不存在。
  2. 另一个代码我在反编译后见过它。

    Androidmanifest.xml
  3. 可能有人理解这个例子用来保护apk免受反编译。

    如何在反编译后使我的代码在UniCode中像字符一样?以及如何隐藏Manifest的反编译。

    修改

    我已经在三个不同的反编译器上进行了测试。但代码保持不变。 private static void \u02ca(final Context context, String s, final String s2) { if (s == null || s.equals("")) { return; } final long currentTimeMillis = System.currentTimeMillis(); final boolean \u02cf = \u0632.\u02cf(context); if (!\u02cf || (\u02cf && !\u0632.\u02ce(context))) { if (s == null) { s = null; } \u02ca(context, s); } while (true) { if (s2 == null || s2.equals("")) { break Label_0076; } try { Toast.makeText(context, (CharSequence)s2, 1).show(); \u0632.\u02ca(context, "letang_last_time", currentTimeMillis); } catch (Exception ex) { continue; } break; } } 无法帮助查看代码。

2 个答案:

答案 0 :(得分:0)

  

如何在反编译后使我的代码在UniCode中像字符一样?和   如何从反编译中隐藏Manifest。

请记住,没有100%的保护。您可以添加简单的方法,使潜在的攻击者更加困难,但在这种环境中没有安全港。 Google提供了一个名为Proguard的开源工具。它还可以帮助您混淆源代码。

  
      
  • 创建更紧凑的代码,更小的代码存档,更快的网络传输,更快的加载和更小的内存占用。
  •   
  • 使程序和库更难进行逆向工程。

  •   
  • 列出死代码,因此可以从源代码中删除它。

  •   
  • 重新定位和预先验证Java 6或更高版本的现有类文件,以充分利用其更快的类加载。

  •   

答案 1 :(得分:0)

  

一个应用程序隐藏了Androidmanifest.xml,因为我反编译了一个代码   Manifest.xml丢失或不存在。

我在学习如何使用proguard时对此进行了测试。实际上,事实证明,即使您设法检索AndroidManifeste.xml文件,它也是空的。我在几个APK上测试了这个,xml是空的

关于你的第二个问题,我建议你测试具有这种Unicode的APK,并使用AndroChef反编译器对其进行反编译。即使使用proguard,AndroChef也总是从大多数APK中检索JAVA代码。