Android:逆向工程是如何工作的?
Posted
技术标签:
【中文标题】Android:逆向工程是如何工作的?【英文标题】:Android: How do reverse engineering works? 【发布时间】:2012-07-30 02:19:45 【问题描述】:我想确保我的应用内容是安全的。我的应用程序中有一个加密数据库的密码,我只是想弄清楚我的项目中是否存在无法通过逆向工程访问的安全位置。
如果您能简短地解释一下逆向工程的工作原理,那就太好了。谢谢。
请不要发布到 ProGuard 的链接!
【问题讨论】:
【参考方案1】:可以通过对您的应用进行逆向工程来查看任何硬编码值。
这包括密码、网址等
要对 android 应用进行逆向工程,请执行以下步骤:
1- 将应用的 APK 文件重命名为 ZIP(例如 myapp.apk -> myapp.zip)
2- 打开 zip 文件并检索 classes.dex 文件。
3- 使用dex2jar从classes.dex中获取jar文件
4- 使用jd-gui打开jar文件并查看你的原始代码。
【讨论】:
你能解释一下如何使用 dex2jar 从 classes.dex 中获取 jar 文件 在 cmd 中,cd 到 dex2jar 目录并输入dex2jar.bat classes.dex
。这将生成 .jar 文件【参考方案2】:
哈瓦,
如果您将密码作为静态字符串存储在应用中,则它不是安全的。即使您使用 ProGuard,也很容易获得它。保护它的最好方法是根本不存储它。相反,如果可能,让您的应用程序将某种唯一标识符发送到验证用户的服务器(可能使用 LVL),然后服务器交回数据库密码或实际的数据库数据本身(存储在服务器上)。
如果这是不可能的,或者如果您无法访问您自己的服务器,至少可以通过将字符串存储为异或字符串或更好的方式以某种方式混淆字符串,请提出您自己的函数来混淆字符串。永远不要在你的 java 代码中有一行看起来像 password = "mypass";
【讨论】:
即便如此他也不安全。攻击者可以模拟/伪造应用程序的任何行为。根本没有办法让它对专门的攻击者安全,只有更难【参考方案3】:在逆向工程中:您的 .apk 文件从 .apk 重命名为 .zip 文件,然后抽象 zip 文件并找到您的文件夹,
但您无法找到项目的 .class 文件
【讨论】:
【参考方案4】:Reverse engineering 更多的是通过仔细分析应用程序的行为方面来重新创建知识产权。关于安全问题,我认为social engineering应该是你更关心的问题
【讨论】:
【参考方案5】:其他人已经解释了逆向工程,所以我将解释你应该如何加密数据库。
您应该使用用户的凭据(用户名和密码或 PIN)作为密钥来加密数据库。当用户启动应用程序时,应提示他们输入凭据。密钥不应被硬编码。
这可以防止攻击者在没有凭据的情况下访问用户的数据。
如果您试图对包括用户在内的所有人隐藏数据,但让应用程序能够访问它,那么您必须将其存储在服务器上,并且只请求您愿意显示给用户。
【讨论】:
以上是关于Android:逆向工程是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章