2012-04-18 53 views
4

我想知道在本地代碼中執行加密函數是否更安全。 使用Java,您無法確定GC是否會重新對存儲器進行排序,並將密鑰的淺拷貝留在內存中,即使在en /解密後立即將密鑰清零也是如此。Android NDK本地代碼是否爲真本機?

也許這是一個愚蠢的問題,但我找不到任何信息。 本機代碼仍在沙盒中運行,並且在虛擬機內部,GC/VM /系統也可以重新對內存進行排序並因此留下淺表副本?那麼堆棧和堆是靜態還是可以移動? AFAIK他們有虛擬地址,所以這可以完成。

謝謝你和問候

回答

4

本地代碼編譯爲ARM(現在英特爾我認爲),並不是Dalvik虛擬機,並直接運行在處理器上,它是由Dalvik的加載並調用,但它不是由它直接控制的。本地代碼的堆棧和堆是真實的。調用memcpy/memset會改變內存的好處。

所有現代化的系統都有虛擬內存,所以就安全性而言,這是相當可能的。

相關問題