2017-01-21 3 views
0

現在のアプリケーションの外にあるメモリにアクセスすることは可能ですか?たとえば、App2がどのようにメモリを使用しているかをチェックする必要があります(メモリの断片化をチェックする)。 afaikすべてのアプリケーションは、独自の仮想メモリを持っていますが、私はそれの外にあるメモリをチェックする必要があります。現在のアプリケーションで使用されていないメモリにアクセスできますか?

答えて

1

はい、これはデバッガの仕組みで、2つのプログラムが協調する場合は共有メモリを割り当てることができます。また、プログラムが十分な管理者権限で実行されており、システムがそのシステム用に構成されている場合は、カーネルを介してRAWシステムメモリへのアクセスを要求することもできます。

Windowsでは、コピーを作成するReadProcessMemoryという機能があります。 Linuxでは/proc/[pid]/memを開き、それを介してアクセスできます。また、デバッガを書く方法についてのチュートリアルを参照し、そのような方法でプロセスにアタッチすることもできます。

しかし、あなたがすでに経験していない限り、私はあなた自身でこれを試みません...あなたが何か有用なものを得ることはそれほど難しいことです。代わりに、デバッガやメモリアナライザのような既存のプログラムを試してみるか、App2を使ってそれ自身を報告してください。

+0

私は、WinAPI https://github.com/AndrejMitrovic/DWinProgramming/blob/bbd6cc282468add8c8dbb1de1046a40e5ecb6be0/WindowsAPI/win32/winbase.d#L1949の使用例を見つけました。ここでは、あなたが話していることに関する関数呼び出しがあります。しかし、それは返品boolです。あなたは、私がそれを使うことができますか? 'BOOL ReadProcessMemory(ハンドル、PCVOID、PVOID、DWORD、PDWORD); ' –

+0

ここにあるマニュアルは、https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553%28v=vsでお読みください。 85%29.aspxでは、メモリを引数の1つにコピーするバッファを渡します。 –

関連する問題