簡體   English   中英

從另一個應用程序訪問(讀/寫)虛擬內存過程

[英]Access (read/write) to virtual memory process from another application

我有簡單的程序:

#include <stdio.h>

int a = 5;

int
main(void)
{
    while(1)
    {
        int i;
        sleep(1);
        printf("%p %i\n", &a, a);
    }
    return 0;
}

輸出(Ubuntu x64):

0x601048 5
0x601048 5
0x601048 5
0x601048 5

我正在學習C語言中的指針,並且我已經知道您可以使用memcpy在進程的虛擬內存中隨時隨地(幾乎)寫入數據。 但是,是否有可能通過使用另一個應用程序(當然使用自己的虛擬內存)來修改位於0x601048地址的int a值? 這個怎么做? 我只對C語言的解決方案感興趣。

這不容易實現(在Linux上的兩個不同進程之間共享虛擬內存)。 作為第一個近似值,請盡可能編碼。

而且即使您確實共享了這種內存,也會遇到同步問題。

您確實應該閱讀Advanced Linux Programming等書籍。 關於該問題,他們有幾章(很復雜)。

通常,如果您確實要共享內存,則不會在調用堆棧上共享某些內存,但是您將“保留”一些內存區域以供以后共享。

您可以閱讀更多有關

我強烈建議初學者不要玩這種骯臟的記憶技巧 如果您堅持認為,請准備破壞系統並經常進行備份。 Linux新手不要玩這種技巧。

通常,您需要root特權。 查看功能(7)

暫無
暫無

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

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