【问题标题】:Can I use Jar signing to protect android APK file from decompilation?我可以使用 Jar 签名来保护 android APK 文件不被反编译吗?
【发布时间】:2016-04-20 19:10:24
【问题描述】:

我查看了hereherehere 提供的这个答案

答案提供了一些有用的信息,但我想知道是否有更好的方法。

我已经构建了我的 apk 并使用了 pro Guard,但是当我反编译 apk 时,一切都与压缩前相同。

类的名称和一些变量被混淆了,但新手可以查看代码并理解应用程序的工作原理。

在我的应用程序中,我想隐藏应用程序和服务器之间的核心网络通信。比如服务器地址、JSON格式等。

我遇到了一种防止反编译的方法,就是将 java.class 文件放入 jar 中,然后对其进行签名,然后将它们作为库添加到我的应用程序中。

我的问题是: 这是正确的方法吗?使用 jar 签名?

【问题讨论】:

  • 隐藏服务器地址听起来不像真正的安全。即使通过反编译代码看不到地址,用户也可能通过将手机连接到 HTTP 代理并监控网络流量来查看服务器地址(以及任何未加密的通信)。与其试图隐藏服务器地址,不如确保服务器得到适当的保护。
  • @Ellis 谢谢你

标签: java android security jar jar-signing


【解决方案1】:

没有。 Jar 签名用于确保文件未被篡改。你仍然可以反编译它。

与其浪费时间担心反编译,不如专注于一些有用的事情。混淆用于在 Android 中节省空间,而不是阻止人们查看您的代码。此外,你真的创造了如此特别的东西以至于你需要保护它吗? (现在说实话)

【讨论】:

  • 这不是我创造什么特别的东西,我只是想学习,因为我有考试。好的,所以除了混淆和我提供的链接中提到的那些之外,这样做没有用,你有更好的方法来隐藏与网络相关的类吗?
  • 没有办法隐藏它们。您不能在客户端上保留任何敏感信息,因为您必须假设用户可以查看和访问这些信息。
  • 那你有什么建议。我应该在运行时加载这些类吗?我注意到 Facebook 使用类似将 compile with 添加到 build.gradle 文件中来使用他们的 SDK 并隐藏了他们所有的网络通信,如服务器地址等。你会推荐吗?
  • 并非如此。我建议您尽量做到最低限度,因为您无法阻止我获取您想要隐藏的所有信息。这一切都归结为您愿意做多少工作与信息的有趣程度。你无法阻止我获取你想要隐藏的所有信息。
  • 好的,那你有办法让客户端更难找到服务器地址和JSON数据格式吗?
猜你喜欢
  • 2017-01-19
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多