簡體   English   中英

如何在特定地址范圍內找到可用內存

[英]How to find free memory within a specific address range

我想在進程的特定地址范圍內寫入少量內存。

  • 分配的內存量: 5 bytes
  • 地址的下限: 0x 00 40 00 00
  • 地址的上限: 0x 00 A0 00 00

我要寫入的范圍已由該進程分配。 因此,我不能簡單地通過VirtualAlloc分配新的內存。

但是,由於所需地址空間中的頁面用於程序代碼,因此不是100%使用它們。 某處有足夠的空間寫入我的5個字節。

我必須怎么做才能確保不覆蓋必要的內存?

我認為沒有一種很好的通用方法可以完成您想要的事情。 由於您似乎在談論Windows,以及默認的PE加載位置在哪里,因此我在這里做出一些假設可能會有所幫助。

如果您願意解析PE標頭,則通常可以在其中找到松弛空間。 檢查各部分之間以及功能開始之前的區域。 根據應用程序的構建方式,您可能會在函數之間找到要用INT3填充的區域,這些區域可能足以滿足您的需求。

如果您向我們提供了有關您要具體執行的操作的更多信息,我們可能會提供更多幫助。 您可以在加載二進制文件之前先對其進行修補,還是必須在運行時執行所有操作?

暫無
暫無

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

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