1

我最近发现 Android 应用程序的数据库完全暴露了。也就是说,我的配置已公开,我将密码保存在那里。

所以,现在我对java代码的怀疑又开始了。

String value = "example"; 

这可能是我存储密码以通过引用传递给 web 服务的示例。

人们,使用某种软件(比如这个例子有没有办法从 APK 文件中获取源代码?)可以得到所有的代码吗?(我试图按照步骤没有成功)

我读到了http://developer.android.com/tools/help/proguard.html,我怎么知道它已经在我的项目中实现了?

创建 Android 项目时,会在项目根目录下自动生成一个 proguard.cfg 文件。

我检查了我的根目录,但我没有那个文件。

感谢你们。

4

3 回答 3

4

混淆并不能保证您的代码不会被反编译。获得您的 apk 的人仍然可以查看代码(尽管应用程序的流程将更加难以理解)。函数名称、变量和类名称已更改,但代码仍可查看。

密码和其他敏感信息应保存在受保护的 Android 钥匙串中。永远不要将密码保存在配置文件(首选项文件)中。

于 2016-01-19T21:18:51.210 回答
1

您可以研究使用sqlcipher加密本地数据库。Proguard 会混淆代码,但如果您将密码硬编码在任何地方,它不会隐藏您的密码,它不是用于安全性的工具[参考]。此外,除非您使用某种TLS ,否则您的所有网络流量都容易受到攻击。

正如您现在描述您的应用程序一样,在您的应用程序中获取密码是微不足道的。

于 2013-11-20T05:43:30.340 回答
1

您可以使用 char[ ] 代替字符串数据类型来存储密码等敏感值。如果有人将内存转储作为值不存在字符串文字池,如果使用 char[] 数据类型,这将很难恢复。

于 2015-11-18T11:10:04.377 回答