我想知道Android中System.loadLibrary和System.load之間的安全含義。如何在Android中安全地加載本機庫?
static {
System.loadLibrary("mylib");
}
依託呼叫系統,以幫助找到的東西(通過的System.loadLibrary方法)可導致系統提供的目的不是由應用程序加載的文件。如果攻擊者可以將文件放置在搜索位置,則攻擊者可以將任意代碼注入應用程序並執行它。
如果指定的確切路徑,你必須保護貫穿東西像文件的權限加載的文件,
的問題是,能力等:我們如何能夠指定一個NDK庫在這樣的完整路徑這條路徑對每個Android版本/設備都有效。
我們如何以這樣的方式指定NDK庫的完整路徑,使得此路徑對每個Android版本/設備均有效? –
編輯我的答案瞭解更多詳情。 – mbrenon
不完全 - 我懷疑除了應用程序的lib文件夾之外,System.loadLibrary()還會搜索一些系統目錄。但是,任何能夠攻擊這些文件的人都可能會攻擊lib文件夾(否則該應用程序將在具有可寫系統目錄的嚴重破壞的設備上運行)。你不可能找到一個比你自己的應用程序的lib文件夾更安全的位置,尤其是那個文件夾甚至不能被你的應用程序寫入,在你可以放置的任何其他位置。 –