簡體   English   中英

Android:逆向工程如何工作?

[英]Android: How do reverse engineering works?

我想確保我的應用程序的內容是安全的。 我的應用程序內部有一個用於加密數據庫的密碼,我只想弄清楚項目中是否存在安全的地方,而這些地方不能通過逆向工程進行訪問。

如果您能盡快解釋一下逆向工程的工作原理,那將是很棒的。 謝謝。

而且plz不要發布指向ProGuard的鏈接!

可以通過對應用程序進行反向工程來查看任何硬編碼的值。

這包括密碼,網址等。

為了對Android應用程序進行反向工程,請繼續以下步驟:

1-將您的應用的APK文件重命名為ZIP(例如myapp.apk-> myapp.zip)

2-打開zip文件並檢索classes.dex文件。

3-使用dex2jar從classes.dex獲取jar文件

4-使用jd-gui打開jar文件並查看您的原始代碼。

哈瓦

如果您將密碼作為靜態字符串存儲在應用程序中, 則不安全。 即使使用ProGuard,也很容易做到。 保護它的最好方法是根本不存儲它。 相反,如果可能的話,讓您的應用向服務器發送某種唯一的標識符以驗證用戶身份(可能使用LVL),然后該服務器將回發數據庫密碼或實際的數據庫數據本身(存儲在服務器上)。

如果這是不可能的,或者如果您無法訪問自己的服務器,則至少可以通過將其存儲為XOR或更好的字符串來對字符串進行混淆,或者提出自己的函數來對字符串進行混淆。 您的Java代碼中永遠不會有一行看起來像password = "mypass";

在逆向工程中:您的.apk文件從.apk重命名為.zip文件,然后提取zip文件並找到您的文件夾,

但是您無法找到項目的.class文件

逆向工程更多地是通過仔細分析應用程序的行為方面來重新創建知識產權。 關於安全性問題,我認為, 社會工程學應該引起您的更多關注

其他人已經解釋了反向工程,因此我將解釋您應該如何加密數據庫。

您應該使用用戶的憑據(用戶名和密碼或PIN)作為密鑰來加密數據庫。 用戶啟動應用程序時,應提示他們輸入憑據。 密鑰不應該硬編碼。

這樣可以防止攻擊者在沒有憑據的情況下訪問用戶的數據。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM