2010-07-27 34 views
3

我有一個原生的android庫(.so)我捆綁了一些應用程序。在本機代碼中,我想驗證調用應用程序的簽名者/包名稱。在Android NDK中識別調用應用程序

原因是,目前任何人都可以用.so文件打開.apk文件,並使用它來構建自己的應用程序。

有沒有辦法從Java端安全地識別調用應用程序?這可能是軟件包名稱,簽名或其他可以以獨特方式識別Android應用程序的其他內容。

回答

2

JNI代碼與Java包名稱相結合,並且只能從相同的包和類中調用。爲了進一步提高安全性,您可以從JNI代碼中檢查一些Java private static final字段。

+0

另一個應用程序可以使用相同的包和類名來調用函數。這並不難,他們只需要查看.so文件中的導出函數列表。 但我想,私人靜態最終字段可以添加額外的安全性。攻擊者仍然可以通過拆解我的應用程序來解決這個問題,但這是一個很長的路要走。 謝謝你的回答! – 2010-07-27 07:46:18

+0

攻擊者總是可以降低防禦力。最好的安全性是合法的防禦 – ognian 2010-07-27 08:08:42

+0

你可以在應用程序中安排一些奇特的密碼調用和響應協議,但是你添加到.so的任何檢查都可以通過修改.so來禁用。你可以任意重複使用你的代碼,但是你不能讓它變得不可能。決定你願意付出多少努力。 – fadden 2010-07-27 19:33:30