Android:逆向工程如何运作?

时间:2012-08-01 07:59:42

标签: android security reverse-engineering

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

如果你很快解释逆向工程是如何工作的话会很棒。 ThanQ。

并且plz不发布指向ProGuard的链接!

5 个答案:

答案 0 :(得分:4)

任何硬编码值都可以通过逆向工程来查看。

这包括密码,网址等。

要对Android应用进行逆向工程,请继续执行以下步骤:

1-将您应用的APK文件重命名为ZIP(例如myapp.apk - > myapp.zip)

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

3-使用dex2jar从classes.dex获取jar文件

4-使用jd-gui打开jar文件并查看原始代码。

答案 1 :(得分:1)

Haawa,

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

如果这是不可能的,或者如果您无权访问自己的服务器,至少通过将字符串存储为XOR的字符串或更好的方式来混淆字符串,请提出自己的函数阻止字符串。永远不会在您的Java代码中有一行看起来像password = "mypass";

答案 2 :(得分:0)

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

但您无法找到项目的.class文件

答案 3 :(得分:0)

Reverse engineering更多的是通过仔细分析应用程序的行为方面来重建知识产权。关于安全问题,我认为social engineering应该更加关注你

答案 4 :(得分:0)

其他人已经解释了逆向工程,因此我将解释如何加密数据库。

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

这可以防止攻击者在没有凭据的情况下访问用户的数据。

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