Android 隐藏自己的Sqlite数据库以防反编译

Android 隐藏自己的Sqlite数据库以防反编译,android,sqlite,assets,decompiler,Android,Sqlite,Assets,Decompiler,我想编写一个使用现成信息的android应用程序,我使用Firefox中的Sqlite manager扩展并将其放入asset文件夹中,但如果有人只是更改扩展名并将apk文件设置为zip文件,他就可以轻松地拥有我的数据库,在这种情况下,最好的解决方案是什么?您得到的评论都是完全正确的。无法保证任何人都无法获取该数据库的内容 您可以通过加密数据库并将密钥隐藏在代码中的某个位置来增加难度。这样做会使攻击者需要对代码进行反编译以找到密钥,从而对数据库进行反加密 更好的是,你可以把钥匙放在网络服务器的某

我想编写一个使用现成信息的android应用程序,我使用Firefox中的Sqlite manager扩展并将其放入asset文件夹中,但如果有人只是更改扩展名并将apk文件设置为zip文件,他就可以轻松地拥有我的数据库,在这种情况下,最好的解决方案是什么?

您得到的评论都是完全正确的。无法保证任何人都无法获取该数据库的内容

您可以通过加密数据库并将密钥隐藏在代码中的某个位置来增加难度。这样做会使攻击者需要对代码进行反编译以找到密钥,从而对数据库进行反加密

更好的是,你可以把钥匙放在网络服务器的某个地方。如果您这样做,您的用户必须在线才能使用该应用程序。。。攻击者必须欺骗你的应用程序并请求密钥来解密数据库。。。但他们仍然可以做到这一点


这就是数字版权管理的问题。向攻击者提供加密内容和密钥并仍然保护内容几乎是不可能的。

最好的解决方案是避免将数据库放入apk。但是无论如何,你需要考虑到用户手机上的任何东西都会被破坏。你只能让它变得更难。例如,使用AES加密数据库。或者将数据库移动到internet,并在需要时下载,或者直接在inet中访问它;你只需加密敏感数据,他们不必反编译应用程序来获取密钥,他们只需从正在运行的应用程序的内存中刮取密钥即可。