java - Android:.java 文件可从 .apk 文件读取?

标签 java android apk

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

我想知道是否任何人都可以解码 .apk 文件并阅读我的原始 .java 文件(包括指向 XML 文件的链接)。

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

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

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

提前致谢!

最佳答案

APK 中不包含 .java 源代码。

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

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

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

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

关于java - Android:.java 文件可从 .apk 文件读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840467/

相关文章:

java - 相当于数组的 push() 或 pop()?

android-studio - "Generate Signed APK"选项不显示在 android studio Build 菜单中

android - Zipalign 成功。找不到输出 apk 文件

java - WAR 文件中的镜像

java - 仅使用乘法+移位(32 位)进行乘法+除法

java - 如何解决Ubuntu 18.04中Eclipse无法找到artifact com.sun :tools:jar:1. 0.0的错误

android - 单击按钮时以编程方式关闭蓝牙可发现状态

Android 风格传承

android - 应用程序未运行

java - 解析 ical 格式 - 解析异常