我目前正在为一家包含实时比分的公司开发应用程序。我访问的 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/