2016-07-10 8 views
-3

なく可能読み取りメモリアドレスですそれはDLLインジェクションなどreadprocessmemory同じことなく可能読み取りメモリアドレスですreadprocessmemory

DLLインジェクションで:

int main() 
{ 
    char SomeAnyValue = *(char*)0x00001; // address of sample 
} 

私は必要なのexternプロセスでプロセスを処理する、今までfine ... しかし、readprocessmemoryを使用せずにdll injectionのような値を読み取ることは可能ですか?

+0

これは実際にはC++標準では定義されていません。 –

+0

ReadProcessMemoryは他のプロセスメモリを読み込み、プロセスはそれ自身の定義されたメモリ範囲内で動作し、他のプロセスのメモリにアクセスすることはできません。 –

+0

@DanielProtopopov Thxの答えは、すでにこの経験を持っていた人からの回答がほしいと思ったのですが、私はなぜ多くのネガティブなのか分かりませんでした。 – nikomaster

答えて

1

DLLの注入は、によってターゲットプロセスにコードを注入します。!コードが注入されると、ターゲットプロセスのアドレス空間で実行されるため、ターゲットプロセスのメモリアドレスに直接アクセスできます。

ターゲットプロセスにコードを挿入しないと、はターゲットプロセスのアドレス空間に直接アクセスするを持たないため、代わりにReadProcessMemory()を使用する必要があります。

+0

2つのプロセスが共有メモリを使用していない限り...またはマップされたメモリ...または共有するように設計されたDLLからエクスポートされたデータ項目... –

+0

共有メモリを使用すると、実際にはターゲットプロセスのメモリ*同じページファイルにマップされているローカルメモリにアクセスしています。 –

+0

Windowsでは、各プロセスに同じ物理メモリを指すページテーブルエントリがあります。彼らは実際には同じ物理メモリにアクセスしています。 –

関連する問題