[英]Android: How do reverse engineering works?
我想确保我的应用程序的内容是安全的。 我的应用程序内部有一个用于加密数据库的密码,我只想弄清楚项目中是否存在安全的地方,而这些地方不能通过逆向工程进行访问。
如果您能尽快解释一下逆向工程的工作原理,那将是很棒的。 谢谢。
而且plz不要发布指向ProGuard的链接!
哈瓦
如果您将密码作为静态字符串存储在应用程序中, 则不安全。 即使使用ProGuard,也很容易做到。 保护它的最好方法是根本不存储它。 相反,如果可能的话,让您的应用向服务器发送某种唯一的标识符以验证用户身份(可能使用LVL),然后该服务器将回发数据库密码或实际的数据库数据本身(存储在服务器上)。
如果这是不可能的,或者如果您无法访问自己的服务器,则至少可以通过将其存储为XOR或更好的字符串来对字符串进行混淆,或者提出自己的函数来对字符串进行混淆。 您的Java代码中永远不会有一行看起来像password = "mypass";
在逆向工程中:您的.apk文件从.apk重命名为.zip文件,然后提取zip文件并找到您的文件夹,
但是您无法找到项目的.class文件
其他人已经解释了反向工程,因此我将解释您应该如何加密数据库。
您应该使用用户的凭据(用户名和密码或PIN)作为密钥来加密数据库。 用户启动应用程序时,应提示他们输入凭据。 密钥不应该硬编码。
这样可以防止攻击者在没有凭据的情况下访问用户的数据。
如果您试图对所有人(包括用户)隐藏数据,但又让应用程序能够访问它,那么您必须将其存储在服务器上,并且仅请求您愿意显示给用户的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.