【问题标题】:Android: .java files readable from .apk file?Android:从 .apk 文件中读取的 .java 文件?
【发布时间】:2011-01-30 00:53:09
【问题描述】:

我目前正在为一家公司开发一个应用程序,其中包括实时计分。我访问的 XML 文件(来自网络,例如:“http://company.com/files/xml/livescoring.xml”)并不打算公开,只有我知道。

我想知道是否有人可以解码 .apk 文件并读取我的原始 .java 文件(包括 XML 文件的链接)。

所以,我将 .apk 文件重命名为 .zip 并可以访问“classes.dex”,它似乎包含 .java 文件(或类)。谷歌搜索让我找到了一个名为“AvaBoxV2”的工具,它解码了这个“classes.dex”文件。现在我有一个文件夹,其中包含一个名为 .smali 的文件的“out”文件夹。我用编辑器打开了其中一个,最后是 xml 文件的链接。不好。 :(

有没有办法加密我的应用程序或 classes.dex 文件?我不想告诉那家公司,任何人都可以访问原始 xml 文件。也许签署应用程序可能会有所帮助?

另外,您是否知道为 Google Market 准备应用程序(签名、版本控制等)的非常适合新手的教程?

提前致谢!

【问题讨论】:

  • 无论您采取什么措施,总能有人获得此类信息。您进行的任何代码、资产或网络通信都不是私密的。您必须问自己或提出要求的人的问题是,他们想浪费多少工时来保护这些 XML 文件。

标签: java android apk


【解决方案1】:

.java 源代码不包含在 APK 中。

可以使用 baksmali 之类的工具将 Dalvik 字节码反汇编成字节码助记符,但用户无法恢复原始 .java 源。

此外,您可以使用诸如 proguard(包含在 Android SDK 中)之类的工具来混淆您的字节码,从而难以解释反汇编字节码的行为。

您也可以做一些小技巧,例如以某种模糊形式存储链接字符串,然后在运行时在您的应用程序中对其进行去模糊处理(一个简单的例子是使用 base 64 编码,但有人可以如果他们愿意,可能会很快逆转)。

也就是说,运行 tcpdump 并嗅探您的设备和服务器之间的网络流量并通过这种方式获取 URL 非常简单,因此无法完全阻止任何人获取此值。

【讨论】:

    【解决方案2】:

    是的,不可能完全阻止这样的事情。在桌面应用程序或任何其他应用程序上都是一样的。

    如前所述,混淆会有所帮助,但坚持不懈的人仍然可以克服它。尤其是像这样的网址。

    让黑客更加棘手的一个解决方案是在您的网络服务器上使用 PHP 和某种令牌系统来确定请求是否来自您的应用程序......但这会有点棘手,所以我真的不建议这样做。

    【讨论】:

    • +1。不可作弊的记分牌非常很难以不可破解的方式实现。最好的办法是使用现有的记分牌服务,因为他们会花费大量时间来提高欺骗的难度。
    • 非常感谢您的回答!我只是在阅读我的公司在这些 xml 文件中专门更新的体育比赛的比分。很抱歉,我没有准确地指出这一点。 :) 唯一的目标是避免其他应用程序使用这些 livescoring xmls。所以我认为我可以阻止这种情况,但我意识到这是不可能的。非常感谢大家:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多