回答
如果您有權訪問Module
對象,請在開發工具中說明,如果您有指針值並知道它指向的變量類型,則可以使用getValue
。例如,檢索存儲器位置2434
一個32位整數,你會打電話:
Module.getValue(2434, 'i32');
您可以使用i8
,i16
,i32
,i64
,float
或double
用於數據的存儲位置的類型。我不知道是否還有其他類型可以通過。
它使用整數的原因並不是爲了簡單起見,它是爲了安全:代碼不應該能夠在ArrayBuffer之外進行索引:您看到的堆有一個額外的間接方向,與使用空間不能看到物理方法完全相同地址,而只能看到虛擬地址(除了asm.js不會分割底層存儲)。
你想做什麼?
如果試圖從調試器獲取值,那麼可能會有某些可能(通過在其構造上使用斷點,添加索引來計算ArrayBuffer的基地址)。
如果你想從編譯爲asm.js的C++代碼中獲取值,那麼這將不起作用,因爲它會危及安全性。
你可以擴大一點安全嗎?你能給出一個阻止替代方案允許的具體例子嗎?實際上我並沒有將安全性視爲ArrayBuffer的原因,實際上http://asmjs.org/spec/latest/中的asm.js規範似乎沒有提到安全性,但提到了效率和優化。 –
JavaScript虛擬機的模型隱含了安全性,asm.js必須遵守,因爲它只是JavaScript的一個子集。虛擬機希望控制其整個地址空間以便能夠GC對象以及安全。安全性方面主要基於不允許開發者存儲到進程地址空間的其他部分,例如,虛擬機本身,這是微不足道的利用。對於ArrayBuffers來說,它稍微微妙一點,因爲虛擬機可以使用邊界檢查。這是更多的信息/ ASLR泄漏。 –
- 1. 獲取指針值
- 2. 指針指針,我如何獲取值?
- 3. 使用dwarf2獲取堆棧指針的堆棧指針值
- 4. 結構,指針,該指針獲取字段值
- 5. CPP/C++獲取指針值或depointerize指針
- 6. 指針不取值
- 7. 獲取指針字符指針的地址字符指針
- 8. 獲取智能指針的指針指針
- 9. 如何從雙指針獲取值?
- 10. 如何在Haskell中獲取指針值?
- 11. 獲取指針的子串
- 12. 獲取指針的地址
- 13. 獲取指針的成員
- 14. 獲取CallInst的指針?
- 15. 如何獲得該指針指針指向的值的地址
- 16. asm.js - 應該如何實現函數指針
- 17. 獲取指向索引行的指針
- 18. GetModuleHandle獲取指向IMAGE_DOS_HEADER的指針?
- 19. 獲取雙指針指向的對象
- 20. 爲什麼指向函數的指針獲取值0x00000000?
- 21. 從指針獲得價值
- 22. 獲取指針位置
- 23. 獲取函數指針
- 24. 獲取空指針異常
- 25. 獲取C++指針c#
- 26. 設置獲取指針
- 27. 如何獲取ConnectEx()指針
- 28. Javascript獲取指針功能
- 29. 從指針中取消值
- 30. 無法獲取指針字段值的值解析+反應
getValue方法有效,但返回另一個內存地址。正如JF所說,如果你想獲得實際價值,它會危害代碼的安全性。 –
@BerianuCVlad如果getValue返回一個內存地址,您可以再次將它傳遞給getValue以獲取該位置的值。 –