2014-01-18 138 views
15

我正在为android和ios创建一个应用程序,并且我已经知道理论上可以反编译android应用程序。该应用程序包含敏感信息,我不希望用户有权访问与Web服务器的应用程序接口。如果用户获得了源代码中某些可用信息的访问权限,他们可能会将请求发送给我的Web服务器。防止反编译android apk

有什么办法来验证应用程序和服务器之间的连接,假设源代码是​​可访问的,或者有什么方法来混淆我的代码,以防止恶意用户发送垃圾邮件给我的网络服务器。

Thankss

+1

看看这篇文章。它以某种方式提供了一个很好的方法来请求服务器时有一定的安全性https://medium.com/@rezabigdeli6/how-to-send-a-semi-secure-request-to-a-server-in-android-359b11b4e873 #.q83vstxvk –

回答

14

Proguard是一种工具,将帮助您obfusate你的代码。这是作为你的Android工具的一部分,你只需要激活它。 This链接和this将有助于进一步。

Proguard的默认配置(在proguard.cfg中)足以足以混淆您的代码。然而,当你有动态访问的方法/类时,你可能想调整你的proguard配置。

  1. 例如,使用Reflection访问类/方法需要让代码保持完整。如果proguard将其混淆,您有时可能会遇到ClassNotFoundException。

  2. 如果您有在AndroidManifest/Layout文件中访问的类,应该防止proguard对它们进行混淆。

这可以通过添加

-keep public class <MyPackage.MyClass> 

您proguard.cfg完成。

+4

AFAIK Proguard基本上重命名代码的方法和其他部分,所以它很难阅读,但它不能阻止任何人反编译你的应用程序。 – Srneczek

4

你不能防止反编译android apk,你只能增加反编译的难度,proguard是最好的选择。