2014-01-24 120 views
0

我正在開發一個開放協議的Android應用程序。檢查客戶的完整性

它將是開源的,但我希望服務器(封閉源代碼)能夠檢查客戶端是原始應用還是修改(由其他人編譯)。

這是可能的Android?

+1

您無法辨別您的應用程序中的網絡字節與來自敵方的網絡字節之間的差異。期。 – SLaks

回答

3

不可能證明沒有修改的代碼,並且未修改的代碼的存在並不意味着未修改的代碼是唯一的代碼。

想象一下,您的開源應用程序有代碼證明其在任何方式的真實性。任何修改都可以簡單地保留,繼承或複製此真實性信息。 如果真實性信息實際上檢查程序的代碼或數據本身,攻擊者仍然可以使用好程序的代碼/數據並假冒它。

+0

thx.not甚至不使用谷歌播放服務? – Slamper

0

您可以使用SSL保護服務器端並需要客戶端證書。分發源代碼時,請勿分發代碼用於與服務器通信的證書。然後,應用程序的修改版本必須創建自己的證書才能與服務器進行通信,並且服務器可以確定使用什麼證書來建立SSL連接。

+0

否;攻擊者可以從原始客戶端提取證書。 – SLaks

+0

@SLaks是的。如果有人想我想他們可以從apk中拉它。 – Volti

+0

以及如何將其放入應用程序的本機(NDK)部分 – Slamper