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

时间:2011-01-30 00:53:10

标签: java android apk

我目前正在开发一个包含livescoring的公司的应用程序。我访问的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准备应用程序(签名,版本控制......)的非常友好的教程?

提前致谢!

2 个答案:

答案 0 :(得分:6)

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

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

此外,您可以使用像proguard这样的工具(包含在Android SDK中)来混淆您的字节代码,这使得很难解释反汇编字节码的行为。

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

也就是说,如果有人运行tcpdump并嗅探设备和服务器之间的网络流量并以此方式获取URL,那么就没有办法完全阻止任何人获得此值。

答案 1 :(得分:2)

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

如前所述,混淆会有所帮助,但持久的人仍然可以通过它。特别是像这样的网址。

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