簡體   English   中英

如何獲得另一個進程的基址? (ASLR)

[英]How do I get the base address of another process? (ASLR)

我需要獲取一個.exe的基地址,該.exe每次啟動時都有一個隨機基地址。 我已經嘗試過了,但是似乎沒有用:

int Base = (DWORD)GetModuleHandle("Test.exe");

怎么了?

看來您正在嘗試獲取另一個進程的基址。 可悲的是, GetModuleHandle僅適用於當前進程中的模塊。 為了實現您的目標,您需要使用PSAPI或CreateToolhelp32Snapshot提取另一個進程的模塊列表。 基址在列表中。

我需要獲取.exe的基地址/入口點地址,該文件每次啟動時都有一個隨機基地址。 該程序使用ASLR。

...

我將使用它來編輯正確過程中的某些內存塊

為了將數據寫入另一個進程,您需要使用WriteProcessMemory() ,這要求您為要寫入的進程打開一個HANDLE

您可以使用OpenProcess()獲得該HANDLE ,請求PROCESS_VM_OPERATIONPROCESS_VM_WRITE權限。 OpenProcess()接受一個進程ID作為輸入,您可以從以下地址獲取:

請參閱流程枚舉枚舉所有流程

您根本不需要確定要寫入的進程的基址。 讓系統為您跟蹤該信息。 您只需要打開該過程的HANDLE即可。

暫無
暫無

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

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