2010-11-02 56 views
4

編輯其他進程內存的程序如何工作,如作弊引擎iHaxGamez?我的理解是,從另一個進程的記憶中讀取(更不用說寫入)的過程是分段錯誤的直接理由。用戶空間內存編輯程序

+1

你提到'Cheat Engine' - 這是否意味着你只對Windows感興趣? – 2010-11-02 23:11:55

+0

迂腐,但我想指出「分段錯誤」實際上並不意味着「任何內存錯誤」。 – erjiang 2010-11-02 23:15:06

+0

我主要對Linux感興趣,實際上。 – 2010-11-02 23:32:32

回答

5

在linux下訪問另一個進程內存非常簡單(假設你有足夠的用戶權限)。

例如,文件/dev/mem將提供對cpu的整個存儲空間的訪問。單個進程映射的詳細信息可在/proc/<pid>/maps中找到。

另一個例子已經給出here

+0

/dev/mem即使在檢查/ proc/pid/maps或/ proc/pid/pagemap以找出訪問權限時也不會很有用。你可能想要的是/ proc/pid/mem,這是進程的虛擬內存而不是物理內存。 – MarkR 2010-11-03 09:49:37

0

您可以使用WinAPI WriteProcessMemory寫入其他進程的內存空間。

還閱讀一些PE/COFF文檔,並使用VirtualQueryExReadProcessMemory知道什麼和寫在哪裏。

2

它沒有理由segfault; OS(內核,...)API用於編寫。 當進程試圖以不好的方式訪問自己的內存(char []溢出)時,操作系統發生Segfault錯誤(得到信號)。

關於遊戲:好吧,如果一個值存儲在一個地址,並且有時會被讀取,那麼在下一次讀取之前它可能會被修改。

相關問題