2012-08-01 41 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)的密鑰加密的數據庫。當用戶啓動應用程序時,應提示他們輸入憑據。密鑰不應該被硬編碼。

這防止攻擊者訪問用戶的數據,而不必的憑據。

如果您試圖隱藏包括用戶在內的所有人的數據,但應用程序能夠訪問它,那麼您必須將其存儲在服務器上,並且只請求您願意顯示的數據用戶。