2012-08-01 123 views
1

我想确保我的应用内容是安全的。我在我的应用程序中有一个加密数据库的密码,我只想弄清楚我的项目中是否存在无法通过逆向工程访问的安全位置。Android:逆向工程如何工作?

而且如果u解释工程不久如何反向运作将是巨大的。 ThanQ。

而PLZ不要张贴链接的ProGuard!

回答

4

任何硬编码值可以通过逆向工程的应用都可以访问的。

这包括密码,网址等

为了反向工程的Android应用程序,继续执行以下步骤:

1-重命名你的应用程序的APK文件,以ZIP(如myapp.apk - > myapp.zip)

2-打开zip文件并检索classes.dex文件。

3-使用dex2jar从classes.dex

4-使用jd-gui得到一个jar文件打开jar文件,并查看您的原代码。

+0

你可以解释如何使用dex2jar从classes.dex – 2012-08-01 08:23:45

+0

获取jar文件的cmd,cd到dex2jar目录并键入'dex2jar.bat classes.dex '。这将生成.jar文件 – 2012-08-01 08:39:23

1

Haawa,

如果你是存储在您的应用程序密码为静态字符串,它是安全。即使您正在使用ProGuard,也很容易实现。保护它的最好方法是根本不存储它。相反,如果可能的话,让你的应用程序向验证用户的服务器发送一个唯一的标识符(可能使用LVL),然后服务器回传一个DB密码或实际的DB数据本身(存储在服务器上)。

如果这是不可能的,或者如果您无法访问自己的服务器,至少通过将字符串存储为异或字符串或更好的方式来以某种方式混淆字符串,或者提出自己的函数使字符串变得模糊。从来没有在Java代码中的线,看起来像password = "mypass";

+0

即使那时他并不安全。 *任何*应用程序的行为都可以被攻击者模拟/伪造。没有办法让它对付一个专门的攻击者,只有更难 – entropy 2012-08-01 08:19:28

0

在逆向工程:你的.apk文件由.apk重命名为.zip文件,然后抽象的zip文件,找到你的文件夹,

但你可以无法为找到你的项目的.class文件

0

其他人解释了逆向工程,所以我将解释如何对数据库进行加密。

你应该使用用户的凭据(用户名和密码或PIN)的密钥加密的数据库。当用户启动应用程序时,应提示他们输入凭据。密钥不应该被硬编码。

这防止攻击者访问用户的数据,而不必的凭据。

如果您试图隐藏包括用户在内的所有人的数据,但应用程序能够访问它,那么您必须将其存储在服务器上,并且只请求您愿意显示的数据用户。