0
私はVirtualQueryExを使用して、プロセス内のメモリ割り当てをループしています。しかし、割り振りベースを有効なIMAGE_DOS_HEADERシグネチャ/ 'MZ'と比較すると、何らかの奇妙な理由からアクセス違反が発生します...コード内で正しくないものを指摘できますか?MEMORY_BASIC_INFORMATION.AllocationBase IMAGE_DOS_HEADERの有効性チェック
MEMORY_BASIC_INFORMATION mbi;
do
{
if (VirtualQueryEx(handle, currentAddress, &mbi, sizeof(mbi)) == 0)
{
continue;
}
if (mbi.State & MEM_COMMIT && !(mbi.Protect & PAGE_NOACCESS) &&
!(mbi.Protect & PAGE_PROTECT))
{
if (mbi.AllocationBase != nullptr)
{
bool hasValidDosHeader = *(WORD*)mbi.AllocationBase ==
IMAGE_DOS_SIGNATURE; //THIS CAUSES AN ACCESS VIOLATION
}
}
currentAddress += mbi.RegionSize;
} while(currentAddress < endAddress);
PS:私も... * IMAGE_DOS_HEADERにAllocationBaseをキャストしてからも、アクセス違反が発生しIMAGE_DOS_SIGNATURE、とe_magicをチェックし、リモートメモリについて
現在のプロセスまたは別のプロセスの情報をお探しですか?あなたのプロセスに属していないポインタを逆参照することはできません! –
別のプロセスからの情報を探しています。ポインタを逆参照できない場合、代わりに割り当てに有効なDOSヘッダがあるかどうかを調べるにはどうすればよいですか? –
[ReadProcessMemory](https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v = vs.85).aspx)。 –