簡體   English   中英

IntPtr到Uint32? C#

[英]IntPtr to Uint32? C#

我需要調用VirtualAllocEx ,它返回IntPtr。 我調用該函數以獲取一個空地址,以便可以在其中寫入我的代碼凹入(這是在另一個進程中)。

如何將結果轉換為UInt32,以便最近可以使用該地址調用WriteProcessMemory()?

調用WriteProcessMemory時,應該傳遞一個IntPtr作為地址而不是UInt32(因為WriteProcessMemory需要一個指針,而不是整數)。 因此,您應該能夠直接使用VirtualAllocEx返回的IntPtr,而無需將其轉換為UInt32。

我相信您可以使用(uint)ptr進行轉換(如果轉換不好,請先嘗試ptr.ToInt32()或ToInt64()。至少我不知道這種方法有什么問題,還沒有鑒於UInt32具有比Int32更大的范圍,並且在非負方面與Int64相同,因此它應該足夠好。

盡管不確定Int32在64位體系結構上的行為。 我很難想象IntPtr的原因是提供平台無關的存儲指針的方式。

您的WriteProcessMemory的DLlImport不正確,基址是一個指針,因此應將其定義為IntPtr。

MSDN

您需要修復DllImport語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM